Filesystem in Userspace
A flow-chart diagram showing how FUSE works | |
Developer(s) | Miklos Szeredi |
---|---|
Stable release | 2.9.4 / 22 May 2015 |
Written in | C |
Operating system | Unix-like |
Type | File system driver |
License | GPL for kernel part, LGPL for Libfuse |
Website |
github |
Filesystem in Userspace (FUSE) is an operating system mechanism for Unix-like computer operating systems that lets 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.
The original, and commonly used implementation, is implemented as a loadable kernel module. Released under the terms of the GNU General Public License and the GNU Lesser General Public License, FUSE is free software. This implementation of FUSE is available for Linux, FreeBSD, NetBSD (as puffs), DragonFly BSD (as puffs), OpenSolaris, Minix 3, Android and OS X.[1]
History
The idea of a filesystem driver living in userspace was originally developed in 1995 with the translator concept of the GNU Hurd operating system.[2] It gained significant public audience with the first official release of Debian GNU/Hurd in May 2003. The FUSE project was started in October 2004 as a fork of A Virtual Filesystem (AVFS), which was first released in 1998.
It was officially merged into the mainstream Linux kernel tree in kernel version 2.6.14.[3]
An ISC-licensed re-implementation by Sylvestre Gallon was released in March 2013[4] and incorporated into OpenBSD in June 2013.[5]
Virtual file system
FUSE is particularly useful for writing virtual file systems. Unlike traditional file systems that essentially save data to and retrieve data from disk, 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.
Ports
- FreeBSD 10 added FUSE support in the base system
- Fuse4X is a port of Fuse to OS X (now merged with OSXFuse.)
- MacFUSE is an old port of Fuse to Mac OS X; no longer maintained
- OSXFuse is a port of Fuse to OS X and a successor to MacFUSE
- NetBSD has FUSE support in base system starting with NetBSD-6.0
- MINIX 3 has FUSE support in base system starting with version 3.2.0
- OpenBSD has ISC licensed FUSE support in base system starting 1. November 2013 in -current to become OpenBSD 5.5
- davfuse is a port that allows you to run a FUSE file system as a WebDAV server and use your OS's native WebDAV support to mount the file system, no kernel module required.
Example uses
- google-drive-ocamlfuse: FUSE filesystem over Google Drive
- PNGDrive: A FUSE filesystem that claims to secretly store your files within images. You can specify a bit mask and a password, the data will then be encrypted and then stored inside the image.
- UPnP-FS: A FUSE filesystem based on UPnP standard. UPnP devices are directories and files. UPnP-FS uses BRisa UPnP Framework.
- copy-fuse: A Python FUSE layer for accessing files stored on Copy.com.
- 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.
- WebDrive: A commercial filesystem implementing WebDAV, SFTP, FTP, FTPS and Amazon S3
- DBFS:[6] The Oracle Database File System (DBFS) creates a standard file system interface on top of files and directories that are stored in database tables.
- jSYS: A commercial software to create jails and virtual filesystems in user-space using FUSE.
- 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.
- EncFS: Encrypted virtual filesystem
- CryFS: Encryption for Dropbox (or other cloud storage)
- ExpanDrive: A commercial filesystem implementing SFTP/FTP/S3/Swift using FUSE
- VolatileFS: A commercial RAM disk using FUSE
- GlusterFS: Clustered Distributed Filesystem having ability to scale up to several petabytes.
- ObjectiveFS: Distributed filesystem with object store backend (Amazon S3 or S3 API) using FUSE
- ClamFS: An anti-virus protected file system with real-time ClamAV file scanning
- SSHFS: Provides access to a remote filesystem through SSH
- SSHLessFS: Provides access to a remote filesystem using SSHFS and sftp-server via direct TCP connection bypassing SSH
- FTPFS
- GDriveFS A filesystem-bridge to a Google Drive account.
- GmailFS: Filesystem which stores data as mail in Gmail
- TweetFS: TweetFS is a FUSE filesystem written in Python that can manage twitter statuses of users as regular files
- GAEDrive:[7] A Network Storage based on Google App Engine
- gae-filestore: Virtual File System library on Google App Engine
- GVFS: The virtual filesystem for the GNOME desktop
- libguestfs: read/write virtual machine images
- NTFS-3G and Captive NTFS, allowing access to NTFS filesystems
- exFAT: Allows read and write to Extended File Allocation Table file system from Microsoft
- WikipediaFS: View and edit Wikipedia articles as if they were real files
- Sun Microsystems's 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]
- archivemount
- LoggedFS: Logging of file system access
- HDFS: FUSE bindings exist for the open source Hadoop distributed filesystem
- mtpfs: mounting MTP devices like Creative Zen music players
- 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
- CurlFtpFS: Filesystem to access FTP/SFTP locations.
- fuse-ext2 An open source ext2/ext3 file system. (Supports OS X 10.4 and later (Universal Binary), using MacFuse)
- Lessfs: inline data de-duplicating filesystem for Linux that includes support for lzo or QuickLZ compression and encryption.
- CloudStore (formerly, Kosmos filesystem): By mounting via FUSE, existing Linux utilities can interface with CloudStore
- SoundCloudFS: An open source filesystem that allows Linux systems to mount SoundCloud streams so that they can be opened with the user's own choice of software.
- MooseFS: An open source distributed fault-tolerant file system able to store petabytes of data spread over several servers visible as one resource
- NagusFS: Filesystem representation of Nagios services.
- NagiosFS (http://sourceforge.net/apps/mediawiki/fuse/index.php?title=NetworkFileSystems#NagiosFS): Filesystem representation of remote monitoring values
- CassandraFS (https://code.launchpad.net/cassandrafs): Filesystem over Cassandra (cassandra.apache.org)
- ZFS: ZFS-Fuse-Linux implementation
- fuse-zip: Allows to use zip files as a filesystem (supports writing)
- OWFS One-Wire File System giving access to 1-Wire devices via a file system directory structure
- TrueCrypt: a software application used for on-the-fly encryption (OTFE). It can create a virtual encrypted disk within a file as well as encrypt a partition or entire storage device
- s3fs-FuseOverAmazonS3: A FUSE-based file system backed by Amazon S3. Mount a bucket as a local file system read/write. Store files/folders natively and transparently on AWS: Simple Storage Service
- s3fs-c: A file system backed by Amazon S3. Forked from s3fs and rewritten to be compatible with some other S3 clients such as AWS Management Console
- LR|FS : An OS X file system for Adobe Lightroom catalogs. Requires MacFuse
- boxfs: A file system for accessing files on a box.net account
- remotefs: Network file system designed for use with home NAS
- virtualbox-fuse: allows mounting of VirtualBox VDI images files
- UsiFe A flexible file system that allows intra file encryption. It is possible to selectively encrypt/decrypt parts of a file and then display them.
- PyMMBfuse A FUSE driver for the PyMMB project which allows access to BBC Microcomputer disc images on MMC flash cards.
- djmount mounts media content of UPnP AV devices.
- TeaSafe An encrypted container filesystem supporting AES, Serpent and Twofish ciphers.
- CloudFusion Linux file system (FUSE) to access cloud storages like Dropbox, Sugarsync, Amazon S3, Google Storage, and Google Drive. Also supports WebDAV.
- IC Manage Views: The extension "Views" of the commercial revision control system IC Manage. FUSE enables almost instantaneous checkouts.
- mergerfs a union filesystem with different policies for selection and allocation
- IPFS (InterPlanetary File System) : a distributed, decentralized, internet file system.
- GhostFS: File system created to allow an user to randomly access content of a remote file as if the file were stored locally. Only HTTP and HTTPS protocols are supported at the moment, but the goal is to add support to other protocols, such as FTP, SCP and even SQL.
- CoverFS: Zero-knowledge client-side encrypted network file system. The server acts as a block device for a growable container file.
See also
- 9P – the file protocol from the Plan 9 operating system, which preceded FUSE and provides many of the same features
- Installable File System – e.g. Ext2Fsd
References
- ↑ "Home - FUSE for OS X". Osxfuse.github.io. Retrieved 2013-10-13.
- ↑ "Examining the Legendary HURD Kernel". Informit. Mar 14, 2008. Retrieved 2014-02-15.
- ↑ "Linux 2 6 14 - Linux Kernel Newbies". Kernelnewbies.org. Retrieved 2013-10-13.
- ↑ "openbsd dev - tech - Fuse (and sshfs) support for OpenBSD". Openbsd.7691.n7.nabble.com. Retrieved 2013-10-13.
- ↑ "'CVS: cvs.openbsd.org: src' - MARC". Marc.info. 2013-06-03. Retrieved 2013-10-13.
- ↑ http://docs.oracle.com/cd/E11882_01/appdev.112/e18294/adlob_fs.htm#ADLOB45943
- ↑ https://code.google.com/p/gaedrive/
- ↑ "Lustre FreeBSD". Retrieved 2008-03-02.
- ↑ "Architecture ZFS for Lustre". Sun Microsystems. Retrieved 2008-03-02.
External links
- Official website
- Develop your own filesystem with FUSE by Sumit Singh
- List of FUSE filesystems
- Callback File System - The SDK that lets developers create virtual file systems for Windows in user mode (includes FUSE compatibility layer)
- Dokan Windows user mode file system library and fuse4win FUSE api for it (both now abandoned)
- DokanX is a fork of dokan latest version.
- DokanY is a fork of dokan latest version, providing signed binaries and the only fork currently active.
- Crossmeta FUSE Kernel for Windows is a true port of Fuse 2.8
- Documentation/filesystems/fuse.txt documentation in Linux source tree