Přeskočit na obsah
Tech-Blog Chatujme.cz Chatujme.cz
Počítače

Souborový systém GEFS z 9frontu běží na OpenBSD, zatím ale hrozí ztráta dat

Do konference openbsd-tech dorazil 15. září náhled souborového systému GEFS, který původně vznikl pro operační systém 9front. Port běží a dá se stáhnout jako jedna záplata, počítá se u něj ale se ztrátou dat a do zdrojového stromu OpenBSD ho zatím nikdo nenavrhuje.

· 10 zhlédnutí

Souborový systém GEFS běží na OpenBSD. Oznamuje to Ori Bernstein v dopise, který 15. září dorazil do konference openbsd-tech. Hned první věta upozorňuje, že zařazení do zdrojového stromu zatím na pořadu není: port není připravený na provoz a ztráta dat se u něj čeká, zvlášť když něco selže. Zbývající potíže jsou prý až na výjimky pochopené natolik, že se do nich dá píchat.

Otevřený 2,5palcový pevný disk s talířem a raménkem hlavy
Otevřený 2,5palcový pevný disk Samsung MP0402H. Foto: Mk2010, Wikimedia Commons (CC BY 4.0)

GEFS vznikl pro 9front, tedy udržovanou větev operačního systému Plan 9 z Bellových laboratoří. Do 9frontu se dostal v roce 2024 a podle abstraktu přednášky, která na konferenci EuroBSDCon 2026 zazněla 13. září, je dnes v běžném provozu: pohání sestavovací infrastrukturu 9frontu i několik webových serverů. Přednášející ho na svém notebooku s Plan 9 provozuje přes rok, s dodatkem, že ztráty se zatím týkaly jen cizích dat.

Strom, který si zapisuje vzkazy

Jádrem GEFS je datová struktura zvaná Bε strom, varianta B+ stromu optimalizovaná na zápis. Vnitřní uzly v ní mají navíc vyrovnávací paměť. Změna se do stromu vloží jako zpráva do kořene, a když se paměť naplní, přelije se do toho potomka, pro kterého v ní čeká nejvíc zápisů. Tak to pokračuje níž, dokud se zprávy nedostanou k listu. Čtení pak vedle listu prohlédne i vyrovnávací paměti na cestě ke kořeni a nedoručené zprávy na výsledek dopočítá.

Zisk je v tom, že zápis se nemusí ptát, co na disku stojí teď. Když se souboru mění čas poslední změny, nečte se stará hodnota – do kořene se vloží vzkaz o nové verzi. Popis v technické zprávě na tom staví i snímky: každý ukazatel na blok nese generaci, ve které vznikl, a nepotřebné bloky se uvolňují algoritmem deadlist, který se inspiroval ZFS. Snímek se tak dá smazat kdykoli a místo po něm se vrátí zpátky do oběhu.

Druhá věc, kterou ukazatel nese, je hash dat, na která míří. Když úložiště vrátí poškozený blok, souborový systém to pozná a ohlásí; obnovit se ta data pak dají ze zálohy, z pole RAID nebo jinudy.

Proti čemu to na Plan 9 vzniklo

Technická zpráva vyjmenovává, co na dosavadních souborových systémech Plan 9 nesedí. CWFS, výchozí volba na 9frontu, je podle ní výkonný a spolehlivý, ale nepřežije výpadek proudu bez poškození a z archivních dumpů neumí uvolnit místo. HJFS je nejjednodušší ze všech, zato pomalý a bez mechanismu kontroly a obnovy. Fossil z 9legacy sází na soft updates, tedy na přístup, který se podle téhož textu v systémech BSD v praxi neosvědčil. Všem třem navíc trvá vyhledání souboru ve velkém adresáři čas úměrný počtu položek v něm.

Seznam zbývajících problémů je součástí oznámení

Za největší neznámou dopis označuje protokol konzistence. Zápis do superbloku musí přijít až po všech zápisech snímku a k tomu se ještě musí z 9frontu přenést několik oprav pořadí zápisů. Ošetření chyb je z větší části zakomentované: přístup zvolený na 9frontu je pro OpenBSD nepřijatelný. Několik globálních proměnných navíc nedovolí připojit víc než jeden svazek naráz.

Chybí i nástroje v uživatelském prostoru. Založit svazek nebo ho zkontrolovat jde dnes jen tak, že se ve virtuálním stroji nabootuje 9front, což dopis sám za dlouhodobé řešení nepovažuje. Dál na seznamu stojí pevné odkazy, kqueue, NFS, podpora zavaděče a kvóty. Testovací sada existuje pro Plan 9, pro OpenBSD žádná. A mazání velkých souborů je pomalé nezávisle na obou systémech.

Necelých devět tisíc řádků

Kódu v jádře je podle dopisu zatím pod devět tisíc řádků a poroste, protože kus věcí ještě chybí. Zveřejněná záplata to potvrzuje: přidává 8 922 řádků ve 21 souborech a 8 892 z nich připadá na šestnáct nových souborů v adresáři sys/gefs. Zbytek je drobnost jinde – pět řádků v sys/kern/vfs_init.c, jedenáct v sys/sys/mount.h, jeden v sys/sys/vnode.h, dvanáct v sys/conf/files a jeden v sys/conf/GENERIC, který zapíná volbu option GEFS s komentářem „good enough file system“. Ta čísla jsou vlastní počet přidaných řádků nad souborem staženým 17. září, oznámení je neuvádí.

Kdo si to chce vyzkoušet, má podle návodu v dopise naklonovat zrcadlo OpenBSD z GitHubu a jen rozdíly si dotáhnout ze serveru na shithub.us. Ten server je malý a čerstvé klony by ho zavalily. Větev se bude přepisovat podle toho, jak se posune OpenBSD, takže se identifikátory commitů budou měnit.

Co má OpenBSD teď

OpenBSD stojí na FFS, tedy na Fast File System zděděném z BSD. Volba softdep při připojení svazku v něm podle manuálové stránky mount(8) zůstala jen kvůli slučitelnosti a nemá žádný účinek. Thom Holwerda z OSnews k tomu píše, že poměrně archaický souborový systém je jedna ze slabin OpenBSD a že už jen mít GEFS jako další možnost by systému prospělo. Termín žádný z pramenů neuvádí; nahradit FFS je podle Holwerdy tak jako tak běh na dlouhou trať.

Zdroje: dopis v konferenci openbsd-tech z 15. září 2026, technická zpráva GEFS, A Good Enough File System, abstrakt přednášky na EuroBSDCon 2026, manuálová stránka mount(8), PhoronixOSnews, obojí ze 16. září 2026.

Počítače

Souborové systémy OpenBSD Plan 9

← zpět na výpis