Стабильный релиз | 1.56.1 [1] / 18 октября 2024 г. |
---|---|
Репозиторий |
|
Операционная система | Линукс |
Платформа | ГНОМ |
Тип | уровень абстракции для файловой системы |
Лицензия | LGPL-2.0 или более поздняя версия |
Веб-сайт | gitlab.gnome.org/GNOME/gvfs |
GVfs (аббревиатура от GNOME virtual file system ) — это виртуальная файловая система пользовательского пространства GNOME, разработанная для работы с абстракцией ввода-вывода GIO , библиотеки, доступной в GLib с версии 2.15.1. Она устанавливает несколько модулей, которые автоматически используются приложениями, использующими API libgio. Также имеется поддержка FUSE , которая позволяет приложениям, не использующим GIO, получать доступ к файловым системам GVfs.
Причиной путаницы является тот факт, что абстракция файловой системы , используемая ядром Linux, также называется слоем виртуальной файловой системы (VFS). Однако это более низкий уровень.
Модель GVfs отличается от, например, GnomeVFS , которую она заменяет, тем, что файловые системы должны быть смонтированы перед использованием. Существует главный демон ( gvfsd
), который обрабатывает координирующие монтирования, а затем каждое монтирование (обычно) находится в своем собственном процессе демона (хотя монтирования могут совместно использовать процесс демона).
GVfs поставляется с набором внутренних функций, включая поддержку корзины, SFTP , FTP , WebDAV , SMB и локальных данных через интеграцию Udev , OBEX , MTP и другие. [2] GVfs, похоже, не поддерживает протокол передачи файлов по оболочке (FISH).
GVfs также содержит модули для GIO , которые реализуют мониторы громкости и конфигурацию обработчика схемы URI GNOME.
Существует набор аргументов для программы командной строки «gio», который позволяет запускать команды (например, cat, ls, stat, mount и т. д.) для файлов в смонтированных папках GVfs.
Прикрепленные ресурсы предоставляются через синтаксис URI , например smb://server01/gamedata или ftp://username:password@ftp.example.net/public_html, но также монтируются традиционным способом в каталоге или ~/.gvfs/
[ 3] [4], чтобы сделать их доступными для приложений, использующих стандартные команды POSIX и ввод-вывод./run/user/$UID/gvfs
$XDG_RUNTIME_DIR/gvfs
Наряду с полезными API, такими как поддержка сетей и D-Bus, GIO также предоставляет приложениям API VFS. GVfs предоставляет реализации, которые выходят за рамки этого и позволяют получать доступ к файлам и хранилищам с использованием многих протоколов. GVfs предоставляет реализации для различных сетевых файловых систем в качестве загружаемых модулей. Кроме того, GVfs также предоставляет поддержку для корзины, сетевых или недавних папок, для записи компакт-дисков и для мониторинга интересных устройств и томов на компьютере.
Целью GVfs было преодоление недостатков GnomeVFS [6] и предоставление API, которое настолько хорошо, что разработчики предпочитают его сырым вызовам POSIX. Среди прочего, это означает использование GObject. Это также означает не клонирование API POSIX, а предоставление интерфейсов более высокого уровня, ориентированных на документы. GTK может использовать его напрямую, например, в filechooser.
Приложения используют GVfs косвенно, посредством GIO, загружающего модуль GVfs, который реализует точки расширения GIO. Основной демон GVfs gvfsd порождает дополнительные демоны монтирования для каждого отдельного соединения. Поддержка GVfs для мониторинга томов включена в отдельный загружаемый модуль.
Фактическая реализация GVfs распределена по ряду процессов.
GVfs может использовать FUSE для монтирования своего VFS непосредственно в файловую систему. [7] Он состоит из двух частей: [8]
Набор утилит командной строки (таких как gvfs-mount, gvfs-less) работает с ресурсами VFS. [9]
Демон | задача |
---|---|
Основной | |
гвфсд | gvfsd — это главный демон GVfs. Он предоставляет имя "org.gtk.vfs.Daemon" на шине сеанса. gvfsd автоматически запускается клиентами GIO, если он не запущен. Основная задача gvfsd — выступать в качестве трекера/менеджера монтирования. Он создает новые бэкэнды по запросу и отслеживает их жизненный цикл, поддерживая список активных монтирований и создавая прямые подключения к ним. gvfsd также запускает gvfsd-fuse(1) и предоставляет ему точку монтирования, в которой должна быть смонтирована файловая система fuse. |
gvfsd-предохранитель | gvfsd-fuse поддерживает монтирование FUSE ( Filesystem in Userspace ), чтобы сделать бэкэнды GVfs доступными для приложений POSIX. Точка монтирования для файловой системы fuse предоставляется аргументом [PATH]. gvfsd-fuse обычно запускается gvfsd. |
gvfsd-метаданные | gvfsd-metadata — это демон, действующий как сериализатор записи во внутреннее хранилище метаданных gvfs. Он автоматически запускается клиентами GIO при внесении изменений в метаданные. Операции чтения выполняются непосредственно клиентским кодом GIO и не требуют запуска демона. Возможности метаданных gvfs используются , например, файловым менеджером GNOME Files . |
Мониторы громкости | |
gvfs-goa-громкость-монитор | поддержка учетных записей GNOME Online (см. GNOME Online Accounts в GNOME wiki) |
gvfs-gphoto2-громкость-монитор | поддержка протокола передачи изображений , реализованного в gPhoto |
gvfs-mtp-громкость-монитор | поддержка протокола передачи мультимедиа |
gvfs-udisks2-volume-monitor | Процесс gvfs-udisks2-volume-monitor отвечает за диски, носители, монтирования и записи fstab , отображаемые в пользовательском интерфейсе рабочего стола. В частности, GNOME Shell , GNOME Files , а также любое другое приложение, использующее API GLib, используют информацию из этого процесса. [5] В Debian он распространяется как часть пакета gvfs-daemons. [10] Его не следует путать с udisksd и udisksctl, которые являются частью пакета udisks2. [11] udisks : демон udisks служит интерфейсом для системных блочных устройств, реализованным через D-Bus . Он обрабатывает такие операции, как запросы, монтирование, размонтирование, форматирование или отсоединение устройств хранения, таких как жесткие диски или USB-накопители. |
gvfs-afc-громкость-монитор | поддержка Apple File Conduit |
Смонтировать бэкэнды | |
gvfsd-afc | монтирует громкость iPhone/iPod touch |
gvfsd-afp | монтирует тома Apple Filing Protocol |
gvfsd-afp-обзор | просматривает тома Apple Filing Protocol |
gvfsd-архив | монтирует архивные файлы в различных форматах |
gvfsd-гореть | предоставляет место для записи компакт-дисков/ оптических дисков |
gvfsd-cdda | монтирует аудио компакт-диски |
gvfsd-компьютер | предоставляет компьютер:// |
gvfsd-dav | монтирует файловые системы DAV |
gvfsd-dnssd | просматривает DNS-SD |
gvfsd-ftp | монтируется через FTP |
gvfsd-gphoto2 | монтируется через PTP, то есть GVfs использует libgphoto2 для предоставления фотографий с камеры приложениям GNOME через VFS |
gvfsd-http | монтируется через HTTP |
gvfsd-локальныйтест | тестовый бэкэнд |
gvfsd-mtp | монтируется через MTP |
gvfsd-сеть | предоставляет сеть:// |
gvfsd-nfs | монтируется по протоколу NFS |
gvfsd-недавний | предоставляет недавние:// |
gvfsd-sftp | монтируется через sftp |
gvfsd-smb | монтирует тома SMB (т.е. файловую систему Windows Shares) |
gvfsd-smb-обзор | просматривает тома файловой системы Windows Shares |
gvfsd-мусор | предоставляет мусор:// |
Официальную документацию можно найти по адресу https://wiki.gnome.org/Projects/gvfs/backends.
Устройства, подключенные через eSATA или USB, (должны быть) физически подключаемыми в горячем режиме . Когда устройство физически подключается или физически удаляется из компьютерной системы, ядро Linux замечает это и отправляет событие в пространство пользователя. systemd-udevd
получает такие события и реагирует на них в соответствии со своей довольно полной конфигурацией:
/dev
, поэтому systemd-udevd динамически создает и удаляет узлы устройств из /dev, а также загружает драйверы по мере необходимости во время загрузкиudisksd
, и gvfsd
и gvfs-udisks2-volume-monitor
. [12]Демон udisks2 udisksd
служит интерфейсом для системных блочных устройств, реализованных через D-Bus. Он обрабатывает такие операции, как запросы, монтирование, размонтирование, форматирование или отсоединение устройств хранения, таких как жесткие диски или USB-флешки. Этот пакет также предоставляет утилиту udisksctl
, которую можно использовать для запуска этих операций из командной строки (если это разрешено PolicyKit ).
В Debian GVfs упакован в четыре пакета: gvfs, gvfs-daemons, gvfs-bin и gvfs-backends.