What is FUSE?¶ FUSE is a userspace filesystem framework. It consists of a kernel module (fuse.ko), a userspace library (libfuse.) and a mount utility (fusermount). One of the most important features of FUSE is allowing secure, non-privileged mounts. This opens up new possibilities for the use of filesystems. FUSE (Filesystem in Userspace) is an interface for userspace programs to export a filesystem to the Linux kernel The FUSE project consists of two components: - fuse kernel module and the libfuse userspace library - libfuse provides the reference implementation for communicating with the FUSE kernel module Example usage of FUSE (passthrougth) Host.
Translation(s): English - Français - Italiano - 简体中文
From Wikipedia:
In computing, a file system or filesystem (often abbreviated to fs), controls how data is stored and retrieved. Without a file system, information placed in a storage medium would be one large body of data with no way to tell where one piece of information stops and the next begins. A file system separates the data into pieces and gives each piece a name. Each group of data is called a 'file'.
There are many different kinds of file systems. Each one has different structure and logic, properties of speed, flexibility, security, size and more.
Files and directories themselves are placed on top of the file system, therefore it is common to refer to the file/directory structure itself as 'file system'. On GNU/Linux, the Filesystem Hierarchy Standard defines the naming scheme and hierarchy between files and directories themselves.
File systems usually sit on top of hard disk partitions or LVM volumes. In Debian, ext4 is the default file system for new installations.
GNU/Linux can be installed on any filesystem that supports some special constructs (file permissions, symbolic links and device files).
Many file systems are journaling, meaning they are able to prevent data loss on system crashes or power failures.
Fuse For Macos Xfs
Contents
Mounting a filesystem
In GNU/Linux the contents of a filesystem can be made available under a directory, by mounting the filesystem over the directory. Here are some ways to mount a filesystem:
The mount command. For example mount /dev/sdd1 /mn/ would make contents of the first partition of the /dev/sdd disk device, available in the /mnt/ directory.
Editing the fstab file
Filesystems available in Debian Linux kernel
Note0: Debian HURD and Debian kFreeBSD have other file systems.
Note1: the Features list are incomplete at this time.
Note2: This table is uptodate as of 2.6.28 kernel.
Filesystem name | Features? | Documentation(s) | Description | Distributions |
File systems often used as linux system partition | ||||
ext4 | R | (default filesystem in Debian) Fourth Extended Filesystem with extents | >= Squeeze | |
ext2 | RS | kDoc, WPedia | Second Extended Filesystem | All? |
ext3 | RS | kDoc, WPedia | Second Extended Filesystem with journaling extensions | All? |
ext4dev | R | Fourth Extended Filesystem with extents | Etch-n-Half ~ Lenny | |
jfs | R | The Journaled Filesystem (JFS) | All? | |
xfs | R | SGI XFS Filesystem | All? | |
reiserfs | R | ReiserFS journaled filesystem | All? | |
Other File systems | ||||
9p | Plan 9 9p remote filesystem protocol | All? | ||
adfs | Acorn (and Risc OS) Advanced Disc Filing System | All? | ||
affs | I | Amiga filesystem support for Linux | All? | |
kafs | N | AFS Client File System | All? | |
autofs4 | Auto-mount filesystems. See autofs | All? | ||
autofs | Auto-mount filesystems. See autofs | All? | ||
befs | I | BeOS File System (BeFS) driver | All? | |
bfs | I | SCO UnixWare BFS filesystem for Linux | All? | |
btrfs | RS | B-Tree filesystem | >= Jessie | |
cifs | N I | VFS to access servers complying with the SNIA CIFS Specification e.g. Samba and Windows | All? | |
coda | Coda Distributed File System VFS interface | All? | ||
configfs | Simple RAM filesystem for user driven kernel subsystem configuration. | All? | ||
cramfs | cram a filesystem onto a small ROM | All? | ||
dlm | Distributed Lock Manager | All? | ||
ecryptfs | eCryptfs | All? | ||
efs | SGI EFS, Extent File System (Irix <0.6) | All? | ||
fat | I | MS & DR DOS FAT filesystem | All? | |
freevxfs | Veritas Filesystem (VxFS) driver | All? | ||
fuse | Filesystem in Userspace (backend for various filesystems) | All? | ||
gfs2 | N | Global File System | All? | |
hfs | I | Macintosh HFS Filesystem | All? | |
hfsplus | I | HFSPlus / Extended Macintosh Filesystem | All? | |
hpfs | I | High Performance Filesys (OS/2's HPFS) | All? | |
isofs | CD | CD/DVD filesystem (ISO-9660 / ECMA-119) | All? | |
jbd2 | Generic filesystem journal-writing code (for ext4) | Squeeze | ||
jbd | Generic filesystem journal-writing code (for ext2/ext3) | All? | ||
jffs2 | MTD | The Journalling Flash File System, v2 | All? | |
minix | Minix native filesystem. (was used in Linux before ExtFS!) | All? | ||
msdos | I | MS-DOS filesystem support | All? | |
ncpfs | Netware NCP network protocol | All? | ||
nfs | N | Networks Filesystem | All? | |
ntfs(depreciated) | I | NTFS 1.2/3.x driver - Copyright (c) 2001-2007 Anton Altaparmakov | All? | |
ocfs2 | OCFS2 1.3.3 | All? | ||
omfs | OMFS (ReplayTV/Karma) Optimized MPEG Filesystem | >= Squeeze | ||
qnx4 | QNX (OS) Filesystem | All? | ||
romfs | ROM filesystem. See genromfs | <= Etch | ||
sysv | System V, V7 and Coherent and Xenix filesystems | All? | ||
ubifs | MTD | UBIFS - UBI File System | => Squeeze | |
udf | CD | Universal Disk Format Filesystem | All? | |
ufs | Unix filesystem, used in BSDs, SunOS, Nextstep, Openstep... | All? | ||
vfat | I | VFAT filesystem support | All? | |
zfs | The Z File System | => Stretch (DKMS) |
Features Legend :
Root: Suitable for system file system (like root and /usr...).
Interoperability: The filesystem is mostly implemented for Interoperability.
Distributed: file system.
Network Filesystem.
Sparsefile support
CD: Suitable for CD and/or DVD, etc.
MTD: Suitable for MTD devices.
Hints :
To list the FS types supported by your kernel, read its config file, run :
- To list the FS modules available in your kernel : To list the FS supported by your running kernel and currently loaded modules :
FUSE Filesystems
You can get the list of FS supported by through FUSE, by looking at the reverse dependencies on the package fuse-utils. At the time of writing :
Package name | Description | Distributions |
FUSE filesystem for APT source repositories | All | |
virtual filesystem to access archives, disk images, remote locations | All | |
implements a filesystem representing a live Beagle query | Sid | |
EncFS system tray applet for GNOME | All | |
filesystem to access FTP hosts based on FUSE and cURL | All | |
mount a WebDAV resource as a regular file system | All | |
encrypted virtual filesystem | All | |
virtual filesystem for flickr online photosharing service | All | |
user-space directory concatenation | ? | |
filesystem to mount WebDAV shares | All | |
File System in User Space - Module for ext2 | All | |
File System in User Space - Module for FAT | All | |
FUSE module to mount ISO filesystem images | All | |
File System in User Space - Module for ISO9660 | All | |
filesystem client based on the SMB file transfer protocol | All | |
clustered file-system | All | |
Use your GMail account as a filesystem | ? | |
filesystem to mount digital cameras | All | |
PAM module to automatically mount encfs filesystems on login | All | |
PAM module that can mount volumes for a user session | All | |
Fuse based remote filesystem for LTSP thin clients | All | |
file system for unifying several mount points into one | All | |
FUSE filesystem for Media Transfer Protocol devices | All | |
userspace filesystem client for MythTV | All | |
read/write NTFS driver for FUSE | >= Wheezy | |
ntfsprogs (depreciated) | tools for doing neat things in NTFS partitions from Linux | All |
mount filesystem of ObexFTP capable devices | All | |
Access EPOC device (Psion PDA) over a serial link | All | |
maps media files to an arbitrary directory structure | All | |
Read-Only Filesystem for FUSE | All | |
Full-featured file system for online data storage | All | |
filesystem client based on SSH File Transfer Protocol | All | |
View-OS in user space - ext2 module for UMFUSE | All | |
View-OS in user space - FAT module for UMFUSE | All | |
View-OS in user space - ISO9660 module for UMFUSE | All | |
Fuse implementation of unionfs | All | |
View and edit Wikipedia articles as if they were real files | All | |
implementation of Sun's ZFS filesystem in userspace | >=Squeeze |
Special file systems
Some sample use cases for special file systems:
allows mounting .vmdk (VMware) and .vdi(VirtualBox) image.
See also
Documents in the /usr/share/doc/linux-doc-2.6.26/Documentation/filesystems/ kernel module documentation (in package linux-doc-2.6 or above)
ToDo: Some modules provides 2 filesystems (for mount -t). e.g loading sysv provides sysv and v7 in /proc/filesystems.
CategorySystemAdministrationCategoryStorage
FUSE doesn't provide any filesystem it-self. see 'apt-cache rdepends fuse-utils' (1)
I love Podman.
While Podman purports to be a way to test and troubleshoot Pods – “the smallest deployable units of computing that can be created and managed in Kubernetes” – where its real value lies for me and my coworkers is as a non-root, daemonless, drop-in replacement for Docker. We can run containers on our laptops and our servers without needing root access or the overhead of the Docker daemon.
It works so well, you could probably replace Docker with Podman and people wouldn’t even notice…
This morning, I saw a tweet by Dan Walsh of Red Hat, linking to an article he wrote on the details of containers/storage:
I did deep dive into the details of containers/storage, Content you did not know you wanted to know. 👍You probably want to bookmark this blog for future reference on where your container images are stored. @kubernetesio @redhat @openshift @coreos https://t.co/4yLNe8LNQW
— Daniel Walsh (@rhatdan) January 24, 2019
This was something I’d been looking for! Buildah, Podman, Skopeo – these are all great tools for working with containers sans Docker, but it was unclear to me how they all worked together with regards to the container images they each had access to. The article cleared all that up, and it re-primed my interest in playing around with Podman again.
(I’ve been so focused on OKD (formerly OpenShift Origin) at $WORK that I’d not built or run a container by hand in a while.)
Apparently, though, Podman had different ideas:
I called shenanigans on that… I’ve been using overlay2 with Podman and Docker for – years? – now, with the latest version of Fedora. The kernel dang-well does support it!
Weirdly, I could pull an image once, if I wiped out /home/chris/.local/share/containers/storage
, and would get the error, but it would work. Every subsequent command would fail though, even just podman ps
:
Knowing that I’d had Podman working before, I double-checked all the things I could think of that might have been an issue.
I recently partitioned some free space and mounted it to containers/storage so it wouldn’t fill up the rest of my home directory. Since I just setup the filesystem (xfs) I checked that -ftype=1
was set. Older versions of CentOS and RHEL did not default to that, and that setting is required for Overlay to work. Perhaps I forgot to do that?
No, it’s definitely set:
Then I checked the SELinux permissions.
No, not because “it’s always SELinux”. Come on, now…
I checked the context because I’d recently mounted the partition to contianers/storage, I wanted to be sure the context was correct. This was an issue I’d run into at $WORK, when we mounted large partitions to /var/lib/docker
, and the Docker daemon failed to work due to incorrect context.
In this case, they appeared correct, but I checked just to be sure:
After pulling out all the hair I don’t, as a bald man, have, I tried dnf reinstall podman
… with no luck.
Fuse-xfs 使い方
Finally, I decided this was past my ability to fix on my own, and to open an issue in the Podman GitHub repo. I decided to double-check for existing issues, I found this:
Yes, and I think that’s a duplicate of containers/libpod#2158
If your ~/.config/containers/storage.conf is using the camel case format, then try switching to the lower case format, remove ~/.local/share/containers, and retry fedora-toolbox. See the above libpod issue about the formats.
Fuse-xfs Osx
Well, dang. The storage.conf in my homedir was all camel-case-y:
And that’s not at ALL what Dan’s looked like in the article this morning. For one thing, his had sections…
So, it looks like containers/libpod#2158 was the culprit. I was using an old config file, and because it’s the right thing to do (if unhelpful in this case) dnf update did not replace the config file when I upgraded packages recently.
So, time to get a new one. First, though, since so many things use containers/storage
, it’s unlikely that it’s a Podman config file. dnf didn’t seem to know what the $HOME/.config/containers/storage.conf
file in my homedirectory belonged to (or more likley, I don’t know how to ask it properly…), but it did tell me that the global /etc/containers/storage.conf
belonged to the containers-common
package:
Since I hadn’t really done any special customizations, I just went ahead and removed the storage.conf
file in my home directory, and reinstalled containers-common
and was provided with a shiny, new, package-fresh configuration file:
Fuse Ext4
And with the correct config file, Podman was much happier, and I could get back to building and running container images without root!