Я знаю, что некоторые файловые системы представляются через Fuse, и мне было интересно узнать о плюсах и минусах этого подхода.
источник
Я знаю, что некоторые файловые системы представляются через Fuse, и мне было интересно узнать о плюсах и минусах этого подхода.
Я не уверен, если вы имеете в виду настоящие файловые системы на диске или любую файловую систему. Я никогда не видел, чтобы обычная файловая система использовала FUSE, хотя полагаю, что это возможно; Основное преимущество FUSE состоит в том, что он позволяет вам представить приложения (или пользователю) что-то похожее на файловую систему, но на самом деле просто вызывает функции в вашем приложении, когда пользователь пытается сделать что-то вроде списка файлов в каталоге или создать новый файл. Plan9 хорошо известен тем, что пытается сделать все доступным через файловую систему, и /proc
псевдофайловая система происходит от них; FUSE - это способ, которым приложения легко следуют этому шаблону.
Например, вот скриншот (очень безликой) файловой системы FUSE, которая предоставляет доступ к данным сайта SE:
Естественно, ни один из этих файлов на самом деле не существует; когда ls
меня спросили о списке файлов в каталоге, FUSE вызвал функцию в моей программе, которая сделала запрос API на этот сайт, чтобы загрузить информацию о пользователе 73 (я); cat
пытаясь читать display_name
и website_url
вызывать больше функций, которые возвращали кешированные данные из памяти, без чего-либо реально существующего на диске
Файловые системы Unix традиционно реализованы в ядре. FUSE позволяет файловой системе быть реализованной пользовательской программой.
Встроенные в ядро файловые системы лучше подходят для основных файловых систем для программ и данных:
Файловые системы FUSE имеют и другие преимущества, в основном вращающиеся вокруг своей гибкости:
источник
FUSE - это не файловая система как таковая, а код, который позволяет реализовывать файловые системы в виде процессов вместо модулей ядра.
Одним из наиболее полезных преимуществ FUSE является возможность «смешивать» код GPL с кодом не-GPL. Например, Gnu / Linux и ZFS http://zfs-fuse.net/ или NTFS-3G во многих ОС, таких как OpenSolaris и * BSD http://www.tuxera.com/community/ntfs-3g-download/
Основным недостатком является влияние на производительность по сравнению с родными (ядро) драйверами.
источник