Btrfs

07. 03. 2015

Pokud to funguje, oprav to. Občas takový přístup zastávám a zkouším, co mé počítačové systémy vydrží. A protože mi přišlo, že na notebooku mám málo volného místa na disku, začal jsem hledat filesystém, který umí kompresi. Narazil jsem na btrfs.

Nejen, že umí kompresi. Umí hromadu velmi zajímavých věcí. Například snapshoty (uložit si stav adresáře v čase). Umí deduplikaci dat ‒ pokud je někde nějaký soubor uložený vícekrát, na disku je fyzicky uložený jen jednou. Umí integrovat raid a měnit jeho vlastnosti zcela za běhu. Umí kontrolovat integritu filesystému za běhu. A v podstatě cokoliv jiného také za běhu. A tak jsem si řekl, že to vyzkouším.

Narazil jsem na varování o tom, že to ještě není úplně dodělané a v produkční kvalitě. Říkal jsem si, OK, to se bude špatně vyrovnávat s chybovými stavy, když někdo vysype náhodná data na disk a tak. Případně, půjde to zmást, když po tom budu chtít příliš těch vychytávek najednou a kombinovat je. Ale nižší spolehlivost mi nijak moc na notebooku nevadí, stejně se celý nalévá z obrazu, co mám na počítači. Nebo, většina. Ale rozhodně na něm nejsou žádná unikátní data a případné úplné rozpadnutí filesystému by mě stálo jen pár dní práce a drobného nastavování.

Vytvořil jsem tedy nový filesystém. Sice se btrfs umí vytvořit z existujícího ext4 filesystému, ale udělal jsem to celé nově. Nahrál data a říkal si, že se to chová i rozumě svižně. A zaplnil disk asi tak na 90%.

Poté jsem ale začal dělat další experimenty. Chtěl jsem si na notebook odložit nějaká větší data, smazal jsem tedy hromadu menších souborů (které jsem měl i na desktopu, takže bych je tam mohl později zase vrátit). Zaplnění kleslo asi na 35% procent a začal jsem nahrávat velké soubory.

Jaké bylo mé překvapení, když mi při zaplnění 60% oznámil, že už nic nahrávat nejde, že došlo volné místo. Vyzkoušel jsem kdejaký trik na přerovnání místa (a že jich jde za běhu toho filesystému pustit hodně). Občas se mi stalo, že mi začal hlásit 55% místo 60%, trochu se tam dalo přidat, ale vždycky se to zarazilo na nějakém nesmyslně malém místě. Podle všech výpisů jsem měl ještě všeho dost ‒ nealokovaného místa, místa pro inody. Nikde nesvítila nula. A souborů tam opravdu bylo nahráno tak zhruba na zaplnění těch 60%.

Při opakovaném mazání a novém nahrávání mi hranice, kde to nastalo, začala ještě více klesat. A i smazání velkých souborů a pokus nahrání těch, co tam byly původně, selhalo.

Když jsem četl, že je to nedopsané, tak jsem si říkal, že po 10 letech vývoje by takovou základní věc už mohli zvládat. No, zřejmě ne. A navíc je to jak mimino. Stále aby na tom člověk pouštěl nějaká udělátka pro údržbu.

Zrušil jsem i pokus nastěhovat btrfs na raid na desktopu a začal se vracet k ext4. Na tom raidu teď už mám nastavení, které umí i většinu těch vychytávek btrfs (snad kromě deduplikace a komprese, a kompresi bych tam zvládl přidat, kdyby stejně nebyla na těch datech, co tam jsou, k ničemu). Pravda, je to trochu komplikovanější vrstevnaté nastavení ‒ LUKS, na tom mdraid, na něm LVM a na něm ext4. Ale umím tomu měnit velikosti za běhu, přestavovat formát raidu za běhu, vyrábět snapshoty a tak.

Takže závěrem? Od btrfs pryč. Nefunguje to a i ty jeho skvělé funkce jde zařídit jinak, a rozhodně řádově spolehlivěji. A více bez údržby ‒ ext4 filesystém může pár let běžet, aniž by se rozpadl.

Re: Btrfs Libča (7. 3. 2015 - 17:22) Sbalit(2)
Jen tak pro jistotu se zeptám: jseš si jistý, že nenastala možnost, že na disk nešlo nahrát více dat, protože se snažil si pamatovat i historii ?
Re: Btrfs Michal 'vorner' Vaner (7. 3. 2015 - 22:13) Sbalit(1)
Btrfs si nepamatuje historii sám, umí ty snapshoty a žádné jsem nedělal. A především, sice mi ta hranice, kolik toho šlo nahrát, klesala, ale ne o celý objem dat. Prostě, smazal jsem 30GB a pak šlo nahrát jen třeba 28. Smazal jsem 28, šlo nahrát 26. To nevypadá, že by někde uchovával historii.

Spíš to bylo opravdu nějaké nemocné. Ale kontrola nehlásila nic špatného. Tak už tam není, no.

Jako, musím mu přiznat jednu kladnou vlastnost. Data mi nesežral, co jsem na něj úspěšně nahrál, to mi taky zase dal. Aspoň tak O:-)