Vím, že některé souborové systémy se prezentují prostřednictvím Fuse, a přemýšlel jsem o výhodách a nevýhodách tohoto přístupu.
Odpověď
Nejsem pozitivní, pokud máte na mysli skutečné souborové systémy na disku nebo jakýkoli souborový systém. Nikdy jsem neviděl, aby normální souborový systém používal FUSE, i když to předpokládám “ s je to možné; hlavní výhodou FUSE je to, že vám umožňuje představit něco aplikacím (nebo uživateli), které vypadají jako souborový systém, ale ve skutečnosti jen volají funkce v rámci vaší aplikace, když se uživatel pokusí dělat věci, jako je seznam souborů v adresáři nebo vytvořte nový soubor. Plan9 je dobře známý tím, že se snaží zpřístupnit vše prostřednictvím souborového systému, a /proc
pseudo -filesystem pochází z nich; FUSE je způsob, jak mohou aplikace tento vzor snadno sledovat.
Například zde je snímek (velmi nevýrazného) souborového systému FUSE, který umožňuje přístup k datům SE stránek:
Přirozeně žádný z těchto souborů ve skutečnosti neexistuje; když ls
požádal o seznam souborů v adresáři FUSE volal funkci v mém programu, který na tento web požádal API o načtení informací o uživateli 73 (mě); cat
pokus o čtení z display_name
a website_url
zavolal více funkcí, které vrátily data z mezipaměti paměť, aniž by na disku skutečně něco existovalo
Komentáře
- Existují FUSE implementace FAT , NTFS , iso9660 , ext2 a další .
- Výkonné souborové systémy najdete implementované v pojistkách: LessFS, GlusterFS, MooseFS . Google ' s GFS (nikoli POSIX) běží také v uživatelském prostoru.
- Kde jste tuto aplikaci našli?!?!
- @George Napsal jsem to, když jsem si hrál s SO API. Nepoužívá ' žádné cesty kromě / users, takže ' v podstatě vidíte všechny implementované funkce na tomto snímku obrazovky; bylo to jen proto, abych viděl, jak těžké to bude
- @George dal jsem to na github
Odpověď
Souborové systémy Unix jsou tradičně implementovány v jádře. FUSE umožňuje implementaci souborových systémů pomocí uživatelského programu.
Systémy v jádře jsou vhodnější pro hlavní souborové systémy pro programy a data:
- Mohou být použity na zaváděcím médiu (program implementující souborový systém FUSE musí být načten odkudkoli).
- Jsou „robustnější, protože nevyhrají“ odejít kvůli havárii procesu nebo omylem zabitému.
- Jsou o něco rychlejší.
Systémy souborů FUSE mají další výhody, většinou se točí kolem jejich flexibility:
- Mohou je načíst a připojit běžní uživatelé, takže jsou vhodné pro souborové systémy, které mají uživatelé tendenci připojovat sami: pro přístup k síti, pro procházení archivními soubory, pro vyměnitelná média atd. .
- Pokud dojde ke zhroucení ovladače souborového systému FUSE, nezkroutí to vaše jádro: neuvidíte nic horšího než chyby I / O v aplikacích, které přistupovaly k souborovému systému.
- lze naprogramovat velmi rychle; vazby FUSE pro mnoho skriptovacích jazyků, kde lze užitečný ovladač systému souborů FUSE napsat do několika stovek řádků kódu.
- Mohou být nasazeny velmi rychle, jednak proto, že pro jejich instalaci není nutný zásah administrátora, jednak proto, že je lze snadno přenést mezi podporovanými operačními systémy .
- Neexistují žádné problémy s licencí související se statickým propojením s jádrem (ovlivňuje to zfs ).
Odpověď
FUSE ve skutečnosti není souborový systém sám o sobě, ale kód, který umožňuje implementaci souborových systémů jako procesů namísto modulů jádra.
Jednou z nejužitečnějších výhod FUSE je umožnit „mixování“ kódu GPL s jiným než GPL. Například Gnu / Linux a ZFS http://zfs-fuse.net/ nebo NTFS-3G v mnoha operačních systémech, jako je OpenSolaris a * BSD http://www.tuxera.com/community/ntfs-3g-download/
Hlavní nevýhodou je dopad na výkon ve srovnání s nativními (jádrovými) ovladači.