Top Qs
Timeline
Chat
Perspective
GVfs
Userspace virtual filesystem software for the GNOME desktop environment From Wikipedia, the free encyclopedia
Remove ads
GVfs (abbreviation for GNOME virtual file system) is GNOME's userspace virtual filesystem designed to work with the I/O abstraction of GIO, a library available in GLib since version 2.15.1. It installs several modules that are automatically used by applications using the APIs of libgio. There is also FUSE support that allows applications not using GIO to access the GVfs filesystems.
A cause of confusion is the fact that the file system abstraction used by the Linux kernel is also called the virtual file system (VFS) layer. This is however at a lower level.
The GVfs model differs from e.g. GnomeVFS, which it replaces, in that file systems must be mounted before they are used. There is a master daemon (gvfsd
) that handles coordinating mounts, and then each mount is (typically) in its own daemon process (although mounts can share daemon process).
GVfs comes with a set of back-ends, including trash support, SFTP, FTP, WebDAV, SMB, and local data via Udev integration, OBEX, MTP and others.[2] GVfs does not seem to support the Files transferred over shell protocol (FISH).
GVfs also contains modules for GIO that implement volume monitors and the GNOME URI scheme handler configuration.
There is a set of arguments to the command line program "gio" that lets you run commands (like cat, ls, stat, mount, etc.) on files in the GVfs mounts.
Attached resources are exposed via a URI syntax, for example smb://server01/gamedata or {{Cite FTP |url=ftp://username:password@ftp.example.net/public_html |server=ftp.example.net |url-status=dead |title=FTP link }}, but are also mounted in the traditional manner under ~/.gvfs/
or /run/user/$UID/gvfs
or $XDG_RUNTIME_DIR/gvfs
directory[3][4] to make them available to applications using standard POSIX commands and I/O.
Remove ads
Technical details
Summarize
Perspective

x-gvfs-show
for the gvfs-udisks2-volume-monitor process determines whether a mounted device is shown or not[5] in GNOME Files. Screenshot of GNOME Disks.Along with generally useful APIs such as networking and D-Bus support, GIO also provides a VFS API to applications. GVfs provides implementations that go beyond that and allow to access files and storage using many protocols. GVfs provides implementations for various network file systems as loadable modules. Additionally GVfs also provides support for trash, network or recent folders, for CD burning and for monitoring interesting devices and volumes on the computer.
The goal of GVfs has been to overcome the shortcomings of GnomeVFS[6] and provide an API that is so good that developers prefer it over raw POSIX calls. Among other things that means using GObject. It also means not cloning the POSIX API, but providing higher-level, document-centric interfaces. GTK can directly use it, e.g. in the filechooser.
Applications use GVfs indirectly, by means of GIO loading the GVfs module that implements the GIO extension points. The GVfs main daemon gvfsd spawns further mount daemons for each individual connection. The GVfs support for volume monitoring is included in a separate loadable module.
The actual GVfs implementation is distributed over a number of processes.
GVfs can use FUSE to mount its VFS directly onto the filesystem.[7] It consists of two parts:[8]
- a shared library which is loaded by applications supporting GIO
- GVfs itself, which contains a collection of daemons which communicate with each other and the GIO module over D-Bus.
A collection of command-line utilities (such as gvfs-mount, gvfs-less) works with VFS resources.[9]
Please refer to https://wiki.gnome.org/Projects/gvfs/backends for the official documentation.
Hot plugging
Devices connected over eSATA or USB are (supposed to be) physically hot-pluggable. When a device is physically connected to or physically removed from the computer system, the Linux kernel notices and sends out an event to user-space. systemd-udevd
receives such events and responds to them according to its quite comprehensive configuration:
- manages the special file system devfs mounted to
/dev
, hence systemd-udevd dynamically creates and removes device nodes from /dev, it also loads drivers as necessary at boot time - in case of a block device systemd-udevd notifies
udisksd
, andgvfsd
andgvfs-udisks2-volume-monitor
.[12]
The udisks2 daemon udisksd
serves as an interface to system block devices, implemented via D-Bus. It handles operations such as querying, mounting, unmounting, formatting, or detaching storage devices such as hard disks or USB thumb drives. This package also provides the udisksctl
utility, which can be used to trigger these operations from the command line (if permitted by PolicyKit).
Packaging
In Debian the GVfs is packaged into four packages: gvfs, gvfs-daemons, gvfs-bin and gvfs-backends.
See also
- GNOME Files, the file manager for GNOME desktops, allows users to interact with GVfs filesystems
- Thunar, the file manager for the Xfce desktop environment, also provides filesytem abstraction using the GVfs library
- KIO, a similar facility for KDE systems
- Archivemount, a virtual filesystem implementation specifically for accessing archive files
References
External links
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads