Файловая система в пользовательском пространстве ( FUSE ) — это программный интерфейс для Unix и Unix-подобных компьютерных операционных систем , который позволяет непривилегированным пользователям создавать свои собственные файловые системы без редактирования кода ядра . Это достигается путем запуска кода файловой системы в пользовательском пространстве , в то время как модуль FUSE обеспечивает только мост к фактическим интерфейсам ядра.
Система FUSE изначально была частью AVFS ( виртуальной файловой системы ), реализации файловой системы, на которую сильно повлияла концепция транслятора GNU Hurd . [4] Она заменила Linux Userland Filesystem и предоставила интерфейс транслятора, использующий lufislibfuse1.
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".
Эксплуатация и использование
libfuseДля реализации новой файловой системы необходимо написать программу-обработчик, связанную с поставляемой библиотекой. Основная цель этой программы — указать, как файловая система должна отвечать на запросы чтения/записи/статистики. Программа также используется для монтирования новой файловой системы. Во время монтирования файловой системы обработчик регистрируется в ядре. Если пользователь теперь выдает запросы чтения/записи/статистики для этой недавно смонтированной файловой системы, ядро пересылает эти запросы ввода-вывода обработчику, а затем отправляет ответ обработчика обратно пользователю.
FUSE особенно полезен для написания виртуальных файловых систем . В отличие от традиционных файловых систем, которые по сути работают с данными на массовом хранилище, виртуальные файловые системы на самом деле не хранят данные сами по себе. Они действуют как представление или трансляция существующей файловой системы или устройства хранения.
В принципе, любой ресурс, доступный для реализации FUSE, может быть экспортирован как файловая система.
Приложения
Файловые системы на диске
Обычные файловые системы на диске могут быть реализованы в пользовательском пространстве с помощью FUSE, например, по соображениям совместимости или лицензирования.
Линейная ленточная файловая система : позволяет осуществлять доступ к файлам, хранящимся на магнитной ленте, так же, как и к файлам на дисках или съемных флэш-накопителях.
retro-fuse: retro-fuse — это файловая система пользовательского пространства, которая позволяет монтировать файловые системы, созданные древними системами Unix, на современных ОС. Текущая версия retro-fuse поддерживает монтирование файловых систем, созданных пятым, шестым и седьмым изданием Research Unix от Bell Labs , а также системами на базе 2.9BSD и 2.11BSD.
Многоуровневые файловые системы
Файловые системы FUSE могут создавать представление базовой файловой системы, преобразуя файлы определенным образом.
Atlas (программное обеспечение для резервного копирования Rubrik): неизменяемая распределенная файловая система, используемая приложениями защиты данных Rubrik Cloud Data Management.
Restic: Бесплатное, быстрое, эффективное и безопасное программное обеспечение для резервного копирования использует FUSE для просмотра всех ваших резервных копий как обычной файловой системы.
SPFS Файловая система для Spectrum Protect, разработанная для монтирования файлового пространства сервера резервного копирования в любом месте вашего сервера и использования функций, включенных в сервер резервного копирования (шифрование, дедупликация, сжатие, фильтрация и т. д.). Это файловая система WORM .
Клиенты удаленной/распределенной файловой системы
CernVM-FS: распределенная система распространения программного обеспечения, доступная только для чтения, реализованная как файловая система POSIX в пространстве пользователя (FUSE) с использованием HTTP-транспорта для быстрой и надежной доставки программного обеспечения в глобальном масштабе.
CloudStore (ранее файловая система Kosmos): при монтировании через FUSE существующие утилиты Linux могут взаимодействовать с CloudStore.
ExpanDrive : коммерческая файловая система, реализующая SFTP/FTP/S3/Swift с использованием FUSE
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.
WikipediaFS : просмотр и редактирование статей Википедии, как если бы они были реальными файлами.
Wuala : была многоплатформенной, полностью интегрированной в ОС распределенной файловой системой на основе Java. Использовала FUSE, MacFUSE и CBFS Connect соответственно для интеграции файловой системы, в дополнение к приложению на основе Java, доступному из любого веб-браузера с поддержкой Java (сервис прекращен в 2015 году).
IndexFS: Удаленная файловая система для агрегации файлов с прозрачным доступом CURL к распределенным файлам.
rvault: безопасное и аутентифицированное хранилище для секретов и небольших документов, использующее шифрование конверта с аутентификацией одноразового пароля (OTP). Оно использует FUSE для раскрытия хранилища как файловой системы.
^ "Некоторые технические преимущества Hurd". 15 мая 2011 г. Получено 28 марта 2016 г.
^ "WhatsNew/FreeBSD10 - FreeBSD Wiki".
^ "openbsd dev - tech - Поддержка Fuse (и sshfs) для OpenBSD". Архивировано из оригинала 2020-10-26 . Получено 2013-07-14 .
^ "'CVS: cvs.openbsd.org: src' - MARC".
^ "file-systems.fuse.devel - FUSE объединен с 2.6.14! - msg#00021 - Недавнее обсуждение OSDir.com". Архивировано из оригинала 20.04.2016.
^ "libfuse/libfuse, эталонная реализация интерфейса Linux FUSE (файловая система в пользовательском пространстве)". libfuse. 9 января 2020 г. Получено 9 января 2020 г.
^ "libfuse3 ChangeLog". GitHub . Получено 9 января 2020 г. .