Jump to content

Filesystem in Userspace: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Rescuing 2 sources and tagging 0 as dead. #IABot (v1.5.4)
Line 50: Line 50:
*[[GVfs]]: The virtual filesystem for the [[GNOME desktop]]
*[[GVfs]]: The virtual filesystem for the [[GNOME desktop]]
*KBFS: A distributed filesystem with end-to-end encryption and a global namespace based on [[KeyBase.io]] service that uses FUSE to create cryptographically secure file mounts.
*KBFS: A distributed filesystem with end-to-end encryption and a global namespace based on [[KeyBase.io]] service that uses FUSE to create cryptographically secure file mounts.
*[[Lustre (file system)|Lustre]] cluster filesystem will use FUSE to allow it to run in userspace, so that a FreeBSD port is possible.<ref>{{cite web | url = http://lustre.sev.net.ua/| title = Lustre FreeBSD | accessdate = 2008-03-02}}</ref> However, the [[ZFS]]-Linux port of Lustre will be running ZFS's DMU (Data Management Unit) in userspace.<ref>{{ cite web | url = http://arch.lustre.org/index.php?title=Architecture_ZFS_for_Lustre | title = Architecture ZFS for Lustre | accessdate = 2008-03-02 | publisher = Sun Microsystems}}</ref>
*[[Lustre (file system)|Lustre]] cluster filesystem will use FUSE to allow it to run in userspace, so that a FreeBSD port is possible.<ref>{{cite web| url = http://lustre.sev.net.ua/| title = Lustre FreeBSD| accessdate = 2008-03-02| deadurl = yes| archiveurl = https://web.archive.org/web/20080312031136/http://lustre.sev.net.ua/| archivedate = 2008-03-12| df = }}</ref> However, the [[ZFS]]-Linux port of Lustre will be running ZFS's DMU (Data Management Unit) in userspace.<ref>{{ cite web | url = http://arch.lustre.org/index.php?title=Architecture_ZFS_for_Lustre | title = Architecture ZFS for Lustre | accessdate = 2008-03-02 | publisher = Sun Microsystems}}</ref>
*[[Moose File System|MooseFS]]: An open source distributed fault-tolerant file system available on every OS with FUSE implementation (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), able to store petabytes of data spread over several servers visible as one resource.
*[[Moose File System|MooseFS]]: An open source distributed fault-tolerant file system available on every OS with FUSE implementation (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), able to store petabytes of data spread over several servers visible as one resource.
*[[NTFS-3G]] and [[Captive NTFS]], allowing access to [[NTFS]] filesystems
*[[NTFS-3G]] and [[Captive NTFS]], allowing access to [[NTFS]] filesystems
Line 80: Line 80:
*[http://www.ibm.com/developerworks/linux/library/l-fuse/ Develop your own filesystem with FUSE] by Sumit Singh
*[http://www.ibm.com/developerworks/linux/library/l-fuse/ Develop your own filesystem with FUSE] by Sumit Singh
*[https://github.com/libfuse/libfuse/wiki/Filesystems List of FUSE filesystems]
*[https://github.com/libfuse/libfuse/wiki/Filesystems List of FUSE filesystems]
*[http://lxr.linux.no/#linux+v2.6.34/Documentation/filesystems/fuse.txt Documentation/filesystems/fuse.txt] documentation in Linux source tree
*[https://web.archive.org/web/20050923210216/http://lxr.linux.no/#linux+v2.6.34/Documentation/filesystems/fuse.txt Documentation/filesystems/fuse.txt] documentation in Linux source tree
*[http://www.secfs.net/winfsp/ a FUSE-like system for Windows (a FUSE compatibility layer is provided for Cygwin)]
*[http://www.secfs.net/winfsp/ a FUSE-like system for Windows (a FUSE compatibility layer is provided for Cygwin)]



Revision as of 16:42, 30 September 2017

Filesystem in Userspace
Stable release
3.1.0 / 8 July 2017; 7 years ago (2017-07-08)[1]
Repository
Written inC
Operating systemUnix-like
TypeFile system driver
LicenseGPL for kernel part, LGPL for Libfuse, Simplified BSD on FreeBSD, ISC license on OpenBSD
Websitegithub.com/libfuse/libfuse

Filesystem in Userspace (FUSE) is a software interface for Unix-like computer operating systems that let non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a "bridge" to the actual kernel interfaces.

FUSE is available for Linux, FreeBSD, OpenBSD, NetBSD (as puffs), OpenSolaris, Minix 3, Android and macOS.[2]

FUSE is free software originally released under the terms of the GNU General Public License and the GNU Lesser General Public License.

History

The FUSE system was originally part of AVFS (A Virtual Filesystem), a filesystem implementation heavily influenced by the translator concept of the GNU Hurd.[3]

FUSE was originally released under the terms of the GNU General Public License and the GNU Lesser General Public License, later also reimplemented as part of the FreeBSD base system[4] and released under the terms of Simplified BSD license. An ISC-licensed re-implementation by Sylvestre Gallon was released in March 2013,[5] and incorporated into OpenBSD in June 2013.[6]

FUSE was officially merged into the mainstream Linux kernel tree in kernel version 2.6.14.[7]

A flow-chart diagram showing how FUSE works

Operation and Uses

To implement a new file system, a handler program linked to the supplied libfuse library needs to be written. The main purpose of this program is to specify how the file system is to respond to read/write/stat requests. The program is also used to mount the new file system. At the time the file system is mounted, the handler is registered with the kernel. If a user now issues read/write/stat requests for this newly mounted file system, the kernel forwards these IO-requests to the handler and then sends the handler's response back to the user.

Unmounting a FUSE-based file system with the fusermount command

FUSE is particularly useful for writing virtual file systems. Unlike traditional file systems that essentially work with data on mass storage, virtual filesystems do not actually store data themselves. They act as a view or translation of an existing file system or storage device.

In principle, any resource available to a FUSE implementation can be exported as a file system.

Example uses

  • archivemount
  • CloudStore (formerly, Kosmos filesystem): By mounting via FUSE, existing Linux utilities can interface with CloudStore
  • EncFS: Encrypted virtual filesystem
  • ExpanDrive: A commercial filesystem implementing SFTP/FTP/S3/Swift using FUSE
  • FTPFS
  • GDFS: Filesystem which allows you to mount your Google Drive account on Linux.
  • GlusterFS: Clustered Distributed Filesystem having ability to scale up to several petabytes.
  • GmailFS: Filesystem which stores data as mail in Gmail
  • GVfs: The virtual filesystem for the GNOME desktop
  • KBFS: A distributed filesystem with end-to-end encryption and a global namespace based on KeyBase.io service that uses FUSE to create cryptographically secure file mounts.
  • Lustre cluster filesystem will use FUSE to allow it to run in userspace, so that a FreeBSD port is possible.[8] However, the ZFS-Linux port of Lustre will be running ZFS's DMU (Data Management Unit) in userspace.[9]
  • MooseFS: An open source distributed fault-tolerant file system available on every OS with FUSE implementation (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), able to store petabytes of data spread over several servers visible as one resource.
  • NTFS-3G and Captive NTFS, allowing access to NTFS filesystems
  • Sector File System: Sector is a distributed file system designed for large amount of commodity computers. Sector uses FUSE to provide a mountable local file system interface
  • SSHFS: Provides access to a remote filesystem through SSH
  • Transmit: A commercial FTP client that also adds the ability to mount WebDAV, SFTP, FTP and Amazon S3 servers as disks in Finder, via MacFUSE.
  • WebDrive: A commercial filesystem implementing WebDAV, SFTP, FTP, FTPS and Amazon S3
  • WikipediaFS: View and edit Wikipedia articles as if they were real files
  • WikiroFS: An WikipediaFS alternative
  • Wuala: A multi-platform, Java-based fully OS integrated distributed file system. Using FUSE, MacFUSE and Callback File System respectively for file system integration, in addition to a Java-based app accessible from any Java-enabled web browser.
  • MinFS: MinFS is a fuse driver for Amazon S3 compatible object storage server. MinFS[10] lets you mount a remote bucket (from a S3 compatible object store), as if it were a local directory

See also

References

  1. ^ "Releases - libfuse/libfuse". Retrieved 18 July 2017 – via GitHub.
  2. ^ "Home - FUSE for OS X".
  3. ^ "Some technical advantages of the Hurd". May 15, 2011. Retrieved March 28, 2016.
  4. ^ "WhatsNew/FreeBSD10 - FreeBSD Wiki".
  5. ^ "openbsd dev - tech - Fuse (and sshfs) support for OpenBSD".
  6. ^ "'CVS: cvs.openbsd.org: src' - MARC".
  7. ^ "file-systems.fuse.devel - FUSE merged to 2.6.14! - msg#00021 - Recent Discussion OSDir.com".
  8. ^ "Lustre FreeBSD". Archived from the original on 2008-03-12. Retrieved 2008-03-02. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  9. ^ "Architecture ZFS for Lustre". Sun Microsystems. Retrieved 2008-03-02.
  10. ^ https://github.com/minio/minfs