GVfs (abreviatura de GNOME virtual file system ) es el sistema de archivos virtual del espacio de usuario de GNOME diseñado para funcionar con la abstracción de E/S de GIO , una biblioteca disponible en GLib desde la versión 2.15.1. Instala varios módulos que las aplicaciones utilizan automáticamente al utilizar las API de libgio. También hay soporte para FUSE que permite que las aplicaciones que no utilizan GIO accedan a los sistemas de archivos GVfs.
Una causa de confusión es el hecho de que la abstracción del sistema de archivos que utiliza el núcleo de Linux también se denomina capa del sistema de archivos virtual (VFS). Sin embargo, se trata de un nivel inferior.
El modelo GVfs difiere de, por ejemplo, GnomeVFS , al que reemplaza, en que los sistemas de archivos deben montarse antes de ser utilizados. Hay un demonio maestro ( gvfsd
) que maneja la coordinación de los montajes y, luego, cada montaje está (normalmente) en su propio proceso demonio (aunque los montajes pueden compartir procesos demonio).
GVfs viene con un conjunto de back-ends, que incluyen soporte para basura, SFTP , FTP , WebDAV , SMB y datos locales a través de la integración de Udev , OBEX , MTP y otros. [2] GVfs no parece soportar el protocolo de archivos transferidos a través de shell (FISH).
GVfs también contiene módulos para GIO que implementan monitores de volumen y la configuración del controlador del esquema URI de GNOME.
Hay un conjunto de argumentos para el programa de línea de comandos "gio" que le permite ejecutar comandos (como cat, ls, stat, mount, etc.) en archivos en los montajes GVfs.
Los recursos adjuntos se exponen a través de una sintaxis URI , por ejemplo smb://server01/gamedata o ftp://username:[email protected]/public_html, pero también se montan de la manera tradicional en el directorio ~/.gvfs/
o [3] [4] para que estén disponibles para las aplicaciones que utilizan comandos POSIX estándar y E/S./run/user/$UID/gvfs
$XDG_RUNTIME_DIR/gvfs
Además de las API de utilidad general, como las de compatibilidad con redes y D-Bus, GIO también proporciona una API VFS para las aplicaciones. GVfs proporciona implementaciones que van más allá y permiten acceder a archivos y almacenamiento mediante muchos protocolos. GVfs proporciona implementaciones para varios sistemas de archivos de red como módulos cargables. Además, GVfs también proporciona compatibilidad con carpetas de red, papelera o recientes, para la grabación de CD y para monitorear dispositivos y volúmenes interesantes en la computadora.
El objetivo de GVfs ha sido superar las deficiencias de GnomeVFS [6] y proporcionar una API que sea tan buena que los desarrolladores la prefieran a las llamadas POSIX sin formato. Entre otras cosas, eso significa utilizar GObject. También significa no clonar la API POSIX, sino proporcionar interfaces de nivel superior centradas en documentos. GTK puede utilizarla directamente, por ejemplo, en el selector de archivos.
Las aplicaciones utilizan GVfs indirectamente, mediante la carga por parte de GIO del módulo GVfs que implementa los puntos de extensión de GIO. El demonio principal de GVfs, gvfsd, genera otros demonios de montaje para cada conexión individual. La compatibilidad de GVfs con la monitorización de volumen se incluye en un módulo cargable independiente.
La implementación real de GVfs se distribuye entre varios procesos.
GVfs puede usar FUSE para montar su VFS directamente en el sistema de archivos. [7] Consta de dos partes: [8]
Una colección de utilidades de línea de comandos (como gvfs-mount, gvfs-less) funciona con recursos VFS. [9]
Consulte https://wiki.gnome.org/Projects/gvfs/backends para obtener la documentación oficial.
Los dispositivos conectados a través de eSATA o USB se supone que son físicamente conectables en caliente . Cuando un dispositivo se conecta físicamente o se retira físicamente del sistema informático, el núcleo Linux lo detecta y envía un evento al espacio de usuario. systemd-udevd
Recibe dichos eventos y responde a ellos de acuerdo con su configuración bastante completa:
/dev
, por lo tanto, systemd-udevd crea y elimina dinámicamente nodos de dispositivos de /dev, también carga controladores según sea necesario en el momento del arranqueudisksd
, y gvfsd
y gvfs-udisks2-volume-monitor
. [12]El demonio udisks2 udisksd
sirve como interfaz para los dispositivos de bloques del sistema, implementado a través de D-Bus. Se encarga de operaciones como la consulta, el montaje, el desmontaje, el formateo o la desconexión de dispositivos de almacenamiento, como discos duros o unidades USB. Este paquete también proporciona la utilidad, que se puede utilizar para activar estas operaciones desde la línea de comandos (si PolicyKitudisksctl
lo permite ).
En Debian, GVfs está empaquetado en cuatro paquetes: gvfs, gvfs-daemons, gvfs-bin y gvfs-backends.