Wprowadzenie do FUSE
Transkrypt
Wprowadzenie do FUSE
Wprowadzenie do FUSE Zbigniew Jarosik [email protected] http://zibi.nora.pl/ Filesystem in Linux Space ● ● ● ● ● ● ● ● ● Kod bezpośrednio w jądrze Kod ładowany w postaci modułu Pracują w trybie jądra Coś się sypnie – sprowadzają na manowce cały system – ukochane Kernel panic. Duża szybkość działania Trudny rozwój Trudne zarządzanie generowanym obciążeniem Dobre dla dojrzałych systemów Trudno wprowadzalne do systemu Fajnie Używany System Embedowania? ● ● ● Przydałoby się coś, co pozwoli na kolanie napisać interfejs np do podmontowania komórki, nietypowego aparatu, zdalnego fs np poprzez ssh (bo nie ma nfs, samby, tunelu...) Fajnie byłoby, żeby było proste, łatwe i wydajne Fajnie, aby każdy mógł to sam sobie uruchomić nawet na Debianie Juzerspejs, de fajnal frontjer ● FUSE – Filesystem in UserSpacE – remedium na zło tego świata? ● Prosty, łatwy i przyjemny? ● Stabliny, wydajny? Tally ho! ● ● ● ● ● ● UserSpacE – w przestrzeni użytkownika – pracuje jako normalna aplikacja Można ograniczyć przydzielone zasoby Jak się wysypie – unmount albo kill Edycja, kompilacja, test – bez rebootu Proste API Bindings dla C, Pythona, Javy, Ruby... Co się da! ● Mountowanie – – – – – – – – – – Nietypowo sformatowanych kart z aparatów Swojego home z uczelni dostępnego tylko po ssh NFS nie zabijający systemu po padzie serwera Komórki podłączane przez RS232C Mirroring w realtime Archiwizacja w locie Szyfrowanie Monitoring Baza danych jako pliki... A co potrzebne? ;D Co boli? ● UserSpacE: – – – – – – Wydajność? Jaka wydajność?! Bezpieczeństwo? Owszem, ale w 2.4 przy łatanym jądrze Uciążliwe zarządzanie uprawnieniami Nie ma bindingów dla php ;/ Nie działa pod coLinuxem Więcej grzechów nie pamiętam... Jak to działa? Przykłady? ● ● ● ● ● ● ● One Wire File System (OWFS) SSHFS EncFS Bluetooth File System RelFS (databases) CvsFS Siefs ● ● ● ● ● ● ● ● ● BloggerFS ClamFS Ext2fuse FatFuse Gitfs Mp3fs CryptoFS FuseCompress ZFS ;D http://fuse.sourceforge.net/ /wiki/index.php/FileSystems Przykłady! ● Hello – 2kb kodu w C ● HistFS – 8kb kodu w C ● DistFS – 8kb kodu w Pythonie