FUSE: Filerendszer a felhasználói térben
Andrew Morton tegnap kiadta a 2.6.11-rc1-es kernel első -mm patchét. Az patch egyik újdonsága a FUSE. Ami miatt megakadt rajta a szemem elsősorban az, hogy meglehetősen magyaros volt a szerző neve. Korábban is láttam már a FUSE-t különböző fórumokon, de most, hogy esély van arra, hogy a mainline kernel része legyen jobban felkeltette az érdeklődésemet.
A FUSE szerzője Miklos Szeredi, aki tulajdonképpen Szeredi Miklós és hazánkfia. Mivel keveset tudtam a FUSE-ről úgy gondoltam, hogy a legegyszerűbb az lesz, ha közvetlenül a szerzőt kérdezem vele kapcsolatban. Ma délután írtam egy levelet, és Miklós pár órán belül válaszolt is.
Nézzük mi az a FUSE:``Láttam, hogy a FUSE beolvasztásra került a 2.6.11-rc1-mm1 kernelbe. Pár kérdésem lenne a FUSE-val kapcsolatban, de nem igazán találtam választ rájuk sem a http://www.szeredi.hu-n, sem a http://fuse.sourceforge.net/-en. Remélem, Tőled választ kapok a kérdéseimre :-)
Amennyit én tudok a FUSE-ről, az a következő:
A FUSE (Filesystem in USErspace) segítségével képesek vagyunk felhasználói térben filerendszert megvalósítani. A FUSE kommunikációs felülete egyszerű, hatékony, biztonságos és emellett támogatja a szokásos filerendszer szemantikákat.
Eredetileg az AVFS projekthez készült, de önálló projektté nőtte ki magát. A megszületése óta számos felhasználói térben megvalósított filerendszer használja a már FUSE-t.
Szóval a kérdések:''
trey: A klasszikus filerendszerek általában kernel térben vannak megvalósítva. Mi célból implementál valaki filerendszert a felhasználói térbe (user space)?
Szeredi Miklós: A kernel programozás több szempontból nehezebb, mint a közönséges (user space) programok írása. Például egy hiba a filerendszerünkben akár az egész rendszer stabilitására kihathat. Nehezebb nyomonkövetni a kernel futását, és a C nyelven kívül más nem használható. Ezek a
hátrányok mind nincsenek, ha userspace-ben valósítjuk meg a filerendszerünket.
Persze vannak hátulütői is a userspace megoldásnak: például
valamelyest lassul a file műveletek sebessége.
trey: Milyen lehetőségek vannak a FUSE-ban a felhasználók szemszögéből? Magyarul mire lehet felhasználni?
Szeredi Miklós: Van mindenféle: titkosított filerendszerek, a GMail-t mint tárhelyet kihasználó filerendszer, van amelyik Siemens telefonok adatait teszi elérhetővé, stb...
trey: Milyen korlátai vannak a FUSE-nak? Mi az amire a FUSE nem használható, és amire a kernel space filrendszereket kell használni?
Szeredi Miklós: Jelenleg a FUSE nem támogatja a memória meppelés (mmap) egy fajtáját (konkrétan shared writable mapping-et). Ezt azonban csak nagyon kevés, speciális program használja. Előbb utóbb majd felmerül az igény, hogy ez is működjön, de egyelőre nélkülözni kell.
Amúgy a határvonal nem ilyen éles. Vannak filerendszerek amik sokkal hatékonyabban megvalósíthatók kernelben (ilyenek a hagyományos, diszk alapú filerendszerek), és vannak amiket sokkal könnyebb userspace-ben megírni (pl. egy zip file-okat kezelő filerendszer)
trey: Mennyire stabil a FUSE? Használható már akár éles környezetben is?
Szeredi Miklós: Attól függ mennyire éles. Atomreaktorok vezérlésére például nem ajánlanám. Amúgy viszonylag stabil. Persze hibák mindig vannak és lesznek is. Jelenleg a legstabilabb verzió az 1.4-es, de ez már elég régi és sok minden hiányzik belőle. A legújabb a 2.2-pre3, ebben
azért még találunk problémákat.
trey: Miben más a FUSE, mit például a LUFS, amelynek első ránézésre hasonló a szerepe?
Szeredi Miklós: Valóban nagyon hasonló a két rendszer. A "lufis" névre hallgató kis programocska (FUSE honlapjáról letölthető) segítségével akár egy LUFS filerendszert is lehet FUSE kernellel futtatni.
A legfőbb különbség a filerendszerek futtatási környezetében rejlik. A LUFS filerendszerek dinamikus könyvtár (shared object) formájúak, miket egy keretprogram tölt be és hív meg minden egyes műveletre.
A FUSE esetén a filerendszer maga egy futtatható program, ami azonban használ egy könyvtárat (libfuse) a kernellel való kommunikáció megkönnyítésére.
trey: Olvastam a filerendszerek közt egy SMB for FUSE névre hallgató FS-ről. A leírása azt mondja, hogy hogy az SMB for FUSE-val probléma nélkül böngészhetem a (windows) hálózatot úgy, mintha az a saját filerendszeremen lenne. Körülbelül ezt tudom megvalósítani a kernel-beli smbfs és smbmount felhasználásával is. Miért jobb nekem, ha ezt a FUSE segítségével valósítom meg?
Szeredi Miklós: Pontosan nem tudom, mivel még nem probáltam (szerencsére nagyon keveset kell Windows környezettel érintkeznem). De valahogy úgy képzelem, hogy az SMB for FUSE a hálózaton található gépek feltérképezését könnyíti meg.
trey: Hiányoltam a filerendszerek közül az SSH-n vagy FTP-n keresztüli távoli filerendszerek mount-olásának lehetőségét (mint például a LUFS SSHFS vagy FTPFS). Ilyen létezik a FUSE-hoz is?
Szeredi Miklós: Egyrészt lehet a fent említett "lufis" megoldást alkalmazni. Ez azonban kicsit nehézkes, és már van natív SSHFS (FUSE honlapjáról letölthető, és 2.2-es FUSE verziót igényel).
trey: Miért pont FUSE a neve? Ha jól tudom, ezen a néven fut már másik projekt is?
Szeredi Miklós: Nagyon okos kis rövidítés: Filesystem in USErspace. De a névválasztás nem az erősségem, és ez a név már sok fejfájást okozott.
Köszönöm szépen Szeredi Miklósnak a gyors válaszokat. Mint Miklós írta, ez volt az első interjúja, így külön örömmel tölt el, hogy a HUP kérdezhette először...
A FUSE-val egyébként a napokban foglakozott a KernelTrap is itt.