GVFS1 es el reemplazo de GNOME VFS, el sistema virtual de archivos de GNOME. GVFS soporta, opcionalmente, sistemas de archivos virtuales montados a través de sistemas de archivos en espacio de usuario. Si se listan los puntos de montaje del sistema activos se puede ver gvfs configurado para el usuario.
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
GVFS consta de dos partes: una biblioteca compartida que cargan las aplicaciones que soportan GIO y GVFS en sí, y una colección de demonios que se comunican entre ellos y con el módulo de GIO sobre D-Bus. Esto mueve los sistemas de archivos virtuales fuera de los procesos cliente.
Directorios y archivos relacionados.
El usuario root no tiene permisos para leer los directorios virtuales del usuario o incluso consultar el estado del servicio. Pero es una simple cuestión técnica, desde root se puede saltar al usuario dueño de esos directorios.
root# systemctl --user status gvfs-daemon Failed to connect to bus: Operación no permitida
Ejemplo de procesos gvfsd del usuario en escritorios GTK.
/usr/lib/gvfs-udisks2-volume-monitor /usr/lib/gvfsd-metadata /usr/lib/gvfsd /usr/lib/gvfsd-fuse /run/user/1000/gvfs -f /usr/lib/gvfsd-trash --spawner :1.96 /org/gtk/gvfs/exec_spaw/0 /usr/lib/gvfsd-network --spawner :1.96 /org/gtk/gvfs/exec_spaw/1 /usr/lib/gvfsd-dnssd --spawner :1.96 /org/gtk/gvfs/exec_spaw/2
Los procesos gvfs que se muestran con ps son administrados por D-Bus, por lo que si los matamos, volverán a aparecer en cuanto Gnome lo requiera. Si por ejemplo ejecutamos el cliente de torrent Deluge, aparecerá un proceso gvfsd-network activo.
Al ser un servicio de usuario, este debe ser administrado desde el usuario, por lo tanto la opción “--user” es necesaria.
systemctl --user status gvfs-daemon ● gvfs-daemon.service - Virtual filesystem service Loaded: loaded (/usr/lib/systemd/user/gvfs-daemon.service; static) Active: active (running) since Sat 2020-12-12 22:18:31 CET; 2h 49min ago Main PID: 14160 (gvfsd) CGroup: /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service ├─14160 /usr/lib/gvfsd ├─14165 /usr/lib/gvfsd-fuse /run/user/1000/gvfs -f ├─14247 /usr/lib/gvfsd-trash --spawner :1.118 /org/gtk/gvfs/exec_spaw/0 ├─14256 /usr/lib/gvfsd-network --spawner :1.118 /org/gtk/gvfs/exec_spaw/1 └─14261 /usr/lib/gvfsd-dnssd --spawner :1.118 /org/gtk/gvfs/exec_spaw/2
Eliminar logs del journal relacionados con limites de ficheros archivos abiertos por parte de gvfsd puede ser una tarea casi obligatoria si se quieren tener unos registros journal limpios. Este sería un ejemplo de logs cuando alguna aplicación GTK está haciendo un uso algo intensivo de la red. En otros entornos diferentes procesos relacionado con gvfsd podrían también generar este tipo de logs.
Dec 12 21:58:43 archlinux gvfsd[13267]: daemon: Error creating server at address unix:abstract=/dbus-vfs-daemon/socket-XobUEwA2: No se pudo crear el socket: Demasiados ficheros abiertos
Si analizamos los límites de dichos procesos vemos que son 1024 (soft) y 1048576 (hard).
systemctl --user show gvfs-daemon.service | grep NOFILE LimitNOFILE=1048576 LimitNOFILESoft=1024
# Otro metodo usando /proc/ cat /proc/{14160,14165,14247,14256,14261}/limits | grep -i open Max open files 1024 1048576 files Max open files 1024 1048576 files Max open files 1024 1048576 files Max open files 1024 1048576 files Max open files 1024 1048576 files
Aumentar el limite de ficheros abiertos para un demonio en systemd requiere la directiva LimitNOFILE en el fichero /usr/lib/systemd/user/gvfs-daemon.service.
[Unit] Description=Virtual filesystem service [Service] ExecStart=/usr/lib/gvfsd Type=dbus BusName=org.gtk.vfs.Daemon # Agregado para evitar que Deluge muestre errores en journal. LimitNOFILE=65536:1048576
systemctl --user daemon-reload systemctl--user restart gvfs-daemon systemctl --user show gvfs-daemon.service | grep NOFILE LimitNOFILE=1048576 LimitNOFILESoft=65536
Enlace de interés: configurar_limite_de_ficheros_abiertos