Файловая система в пространстве пользователя

Программный интерфейс для Unix-подобных систем
Файловая система в пространстве пользователя
Стабильный релиз
3.16.2 [1]  / 10 октября 2023 г. ; 12 месяцев назад ( 10 октября 2023 )
Репозиторий
  • github.com/libfuse/libfuse
Написано вС
Операционная системаUnix , Unix-подобный
Тип Драйвер файловой системы
ЛицензияGPL для части ядра Linux, LGPL для Libfuse, упрощенная BSD на FreeBSD, лицензия ISC на OpenBSD; частная для macOS
Веб-сайтgithub.com/libfuse/libfuse

Файловая система в пользовательском пространстве ( FUSE ) — это программный интерфейс для Unix и Unix-подобных компьютерных операционных систем , который позволяет непривилегированным пользователям создавать свои собственные файловые системы без редактирования кода ядра . Это достигается путем запуска кода файловой системы в пользовательском пространстве , в то время как модуль FUSE обеспечивает только мост к фактическим интерфейсам ядра.

FUSE доступен для Linux , FreeBSD , OpenBSD , NetBSD (как puffs ), OpenSolaris , Minix 3 , macOS , [2] и Windows . [3]

FUSE — это свободное программное обеспечение , изначально выпущенное на условиях GNU General Public License и GNU Lesser General Public License .

История

Система FUSE изначально была частью AVFS ( виртуальной файловой системы ), реализации файловой системы, на которую сильно повлияла концепция транслятора GNU Hurd . [4] Она заменила Linux Userland Filesystem и предоставила интерфейс транслятора, использующий lufislibfuse1.

FUSE изначально был выпущен на условиях GNU General Public License и GNU Lesser General Public License , позже также переработан как часть базовой системы FreeBSD [5] и выпущен на условиях Simplified BSD license. Переработанная реализация под лицензией ISC от Sylvestre Gallon была выпущена в марте 2013 года [6] и включена в OpenBSD в июне 2013 года [7].

FUSE был включен в основное дерево ядра Linux в версии ядра 2.6.14. [8]

Пользовательская часть FUSE, библиотека libfuse , в целом следовала темпу разработки ядра Linux, поддерживая при этом «максимальную» совместимость с потомками BSD. Это возможно, поскольку ядро ​​FUSE сообщает о своих собственных «уровнях функций» или версиях. Исключением является форк FUSE для macOS, OSXFUSE, который имеет слишком много различий для совместного использования библиотеки. [9] Перерыв в истории libfuse — libfuse3, который включает некоторые несовместимые улучшения в интерфейсе и производительности по сравнению со старой libfuse2, которая сейчас находится в режиме обслуживания. [10]

Поскольку протокол FUSE kernel-userspace имеет версии и является общедоступным, программист может выбрать использование другого фрагмента кода вместо libfuse и по-прежнему взаимодействовать с возможностями ядра FUSE. С другой стороны, libfuse и его многочисленные порты предоставляют переносимый интерфейс высокого уровня, который может быть реализован в системе без возможности "FUSE".

Эксплуатация и использование

Блок-схема, показывающая, как работает FUSE: запрос из пространства пользователя на список файлов (ls -l /tmp/fuse) перенаправляется ядром через VFS в FUSE. Затем FUSE выполняет зарегистрированную программу-обработчик (./hello) и передает ей запрос (ls -l /tmp/fuse). Программа-обработчик возвращает ответ обратно в FUSE, который затем перенаправляется в программу пространства пользователя, которая изначально сделала запрос.

libfuseДля реализации новой файловой системы необходимо написать программу-обработчик, связанную с поставляемой библиотекой. Основная цель этой программы — указать, как файловая система должна отвечать на запросы чтения/записи/статистики. Программа также используется для монтирования новой файловой системы. Во время монтирования файловой системы обработчик регистрируется в ядре. Если пользователь теперь выдает запросы чтения/записи/статистики для этой недавно смонтированной файловой системы, ядро ​​пересылает эти запросы ввода-вывода обработчику, а затем отправляет ответ обработчика обратно пользователю.

Размонтирование файловой системы на базе FUSE с помощью fusermountкоманды

FUSE особенно полезен для написания виртуальных файловых систем . В отличие от традиционных файловых систем, которые по сути работают с данными на массовом хранилище, виртуальные файловые системы на самом деле не хранят данные сами по себе. Они действуют как представление или трансляция существующей файловой системы или устройства хранения.

В принципе, любой ресурс, доступный для реализации FUSE, может быть экспортирован как файловая система.

Приложения

Файловые системы на диске

Обычные файловые системы на диске могут быть реализованы в пользовательском пространстве с помощью FUSE, например, по соображениям совместимости или лицензирования.

  • Линейная ленточная файловая система : позволяет осуществлять доступ к файлам, хранящимся на магнитной ленте, так же, как и к файлам на дисках или съемных флэш-накопителях.
  • NTFS-3G и Captive NTFS , обеспечивающие доступ к файловым системам NTFS .
  • retro-fuse: retro-fuse — это файловая система пользовательского пространства, которая позволяет монтировать файловые системы, созданные древними системами Unix, на современных ОС. Текущая версия retro-fuse поддерживает монтирование файловых систем, созданных пятым, шестым и седьмым изданием Research Unix от Bell Labs , а также системами на базе 2.9BSD и 2.11BSD.

Многоуровневые файловые системы

Файловые системы FUSE могут создавать представление базовой файловой системы, преобразуя файлы определенным образом.

Архивирование и резервное копирование файловых систем

Файловые системы FUSE могут предоставлять доступ к содержимому архивов или резервных копий без необходимости их предварительного извлечения.

  • архивмонтировать
  • Atlas (программное обеспечение для резервного копирования Rubrik): неизменяемая распределенная файловая система, используемая приложениями защиты данных Rubrik Cloud Data Management.
  • Borg (программное обеспечение для резервного копирования) : программа резервного копирования с функцией дедупликации, позволяющая монтировать архивы резервных копий как файловые системы FUSE.
  • Restic: Бесплатное, быстрое, эффективное и безопасное программное обеспечение для резервного копирования использует FUSE для просмотра всех ваших резервных копий как обычной файловой системы.
  • SPFS Файловая система для Spectrum Protect, разработанная для монтирования файлового пространства сервера резервного копирования в любом месте вашего сервера и использования функций, включенных в сервер резервного копирования (шифрование, дедупликация, сжатие, фильтрация и т. д.). Это файловая система WORM .

Клиенты удаленной/распределенной файловой системы

  • CernVM-FS: распределенная система распространения программного обеспечения, доступная только для чтения, реализованная как файловая система POSIX в пространстве пользователя (FUSE) с использованием HTTP-транспорта для быстрой и надежной доставки программного обеспечения в глобальном масштабе.
  • CloudStore (ранее файловая система Kosmos): при монтировании через FUSE существующие утилиты Linux могут взаимодействовать с CloudStore.
  • ExpanDrive : коммерческая файловая система, реализующая SFTP/FTP/S3/Swift с использованием FUSE
  • FTPFS
  • GlusterFS : кластерная распределенная файловая система с возможностью масштабирования до нескольких петабайт.
  • goofys: файловая система FUSE, которая обеспечивает доступ к хранилищу Amazon S3/Microsoft Azure с упором на производительность.
  • google-drive-ocamlfuse — это файловая система FUSE для Google Drive, написанная на OCaml. Она позволяет вам монтировать ваш Google Drive на Linux.
  • IPFS : одноранговая распределенная файловая система, которая стремится объединить все вычислительные устройства с одной и той же системой файлов.
  • JuiceFS: распределенная файловая система POSIX, созданная на основе Redis и S3.
  • KBFS : распределенная файловая система со сквозным шифрованием и глобальным пространством имен на основе сервиса Keybase.io , который использует FUSE для создания криптографически защищенных монтирований файлов.
  • Файловая система Lustre Cluster будет использовать FUSE для запуска в пользовательском пространстве, что позволит использовать порт FreeBSD. [11] Однако порт Lustre для ZFS -Linux будет запускать DMU (Data Management Unit) ZFS в пользовательском пространстве. [12]
  • MinFS : MinFS — это драйвер fuse для сервера хранения объектов, совместимого с Amazon S3. MinFS [13] позволяет монтировать удаленный бакет (из хранилища объектов, совместимого с S3), как если бы это был локальный каталог.
  • MooseFS : Распределенная отказоустойчивая файловая система с открытым исходным кодом, доступная на всех ОС с реализацией FUSE (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), способная хранить петабайты данных, распределенных по нескольким серверам, видимым как один ресурс.
  • Nexfs: коммерческая файловая система Linux, объединяющая блочное, файловое и совместимое с S3 облачное и объектное хранилище в единый пул POSIX-совместимого хранилища.
  • ObjectiveFS: распределенная файловая система с бэкэндом объектного хранилища (Amazon S3, Google Cloud Storage или S3-совместимое объектное хранилище) с использованием FUSE
  • Rclone может монтировать различные удаленные/облачные хранилища с помощью FUSE.
  • s3fs: дает возможность монтировать S3-корзину так, как если бы это была локальная файловая система.
  • Sector File System : Sector — это распределенная файловая система, разработанная для большого количества компьютеров. Sector использует FUSE для предоставления монтируемого интерфейса локальной файловой системы.
  • SSHFS : обеспечивает доступ к удаленной файловой системе через SSH .
  • Transmit: коммерческий FTP-клиент, который также добавляет возможность монтировать серверы WebDAV, SFTP, FTP и Amazon S3 в качестве дисков в Finder через MacFUSE.
  • WebDrive : коммерческая файловая система, реализующая WebDAV , SFTP, FTP, FTPS и Amazon S3.
  • WikipediaFS : просмотр и редактирование статей Википедии, как если бы они были реальными файлами.
  • Wuala : была многоплатформенной, полностью интегрированной в ОС распределенной файловой системой на основе Java. Использовала FUSE, MacFUSE и CBFS Connect соответственно для интеграции файловой системы, в дополнение к приложению на основе Java, доступному из любого веб-браузера с поддержкой Java (сервис прекращен в 2015 году).
  • IndexFS: Удаленная файловая система для агрегации файлов с прозрачным доступом CURL к распределенным файлам.

Другой

  • GVfs : виртуальная файловая система для рабочего стола GNOME
  • rvault: безопасное и аутентифицированное хранилище для секретов и небольших документов, использующее шифрование конверта с аутентификацией одноразового пароля (OTP). Оно использует FUSE для раскрытия хранилища как файловой системы.

Смотрите также

Ссылки

  1. ^ "Release 3.16.2". 10 октября 2023 г. Получено 19 октября 2023 г.
  2. ^ "Главная - FUSE для OS X".
  3. ^ Зиссимопулос, Билл (2021-02-14), billziss-gh/winfsp , получено 2021-02-16
  4. ^ "Некоторые технические преимущества Hurd". 15 мая 2011 г. Получено 28 марта 2016 г.
  5. ^ "WhatsNew/FreeBSD10 - FreeBSD Wiki".
  6. ^ "openbsd dev - tech - Поддержка Fuse (и sshfs) для OpenBSD". Архивировано из оригинала 2020-10-26 . Получено 2013-07-14 .
  7. ^ "'CVS: cvs.openbsd.org: src' - MARC".
  8. ^ "file-systems.fuse.devel - FUSE объединен с 2.6.14! - msg#00021 - Недавнее обсуждение OSDir.com". Архивировано из оригинала 20.04.2016.
  9. ^ "libfuse/libfuse, эталонная реализация интерфейса Linux FUSE (файловая система в пользовательском пространстве)". libfuse. 9 января 2020 г. Получено 9 января 2020 г.
  10. ^ "libfuse3 ChangeLog". GitHub . Получено 9 января 2020 г. .
  11. ^ "Lustre FreeBSD". Архивировано из оригинала 2008-03-12 . Получено 2008-03-02 .
  12. ^ "Архитектура ZFS для Lustre". Sun Microsystems. Архивировано из оригинала 2009-01-22 . Получено 2008-03-02 .
  13. ^ "minio/minfs". GitHub . Получено 12 апреля 2018 г. .
  • Официальный сайт
  • Разработайте собственную файловую систему с помощью FUSE от Сумита Сингха
  • Список файловых систем FUSE
  • Документация Documentation/filesystems/fuse.txt в исходном дереве Linux
  • WinFSP, FUSE-подобная система для Windows (для Cygwin предусмотрен уровень совместимости с FUSE)
  • Crossmeta FUSE, порт FUSE для Windows (коммерческое программное обеспечение)
Получено с "https://en.wikipedia.org/w/index.php?title=Файловая_система_в_пространстве_пользователя&oldid=1236423817"