MENU

Souborový systém Btrfs

Souborový systém (filesystem) je něco bez čeho se při ukládání dat neobejdeme. Běžného uživatele samozřejmě souborový systém vůbec nezajímá dokud počítač funguje. Ti zkušenější vědí, že tam něco takového mají, často se to jmenuje FAT nebo NTFS, ti opravdu zkušení znají i další filesystémy. Zasvěcený uživatel ví, že souborový systém je velice důležitá část operačního systému, a jelikož slouží k ukládání/načtení dat, tak jakýkoli problém a nebo výhoda silně ovlivňuje funkčnost celého systému.

Různé souborové systémy

Ten kdo řeší jaký vybrat disk, by měl zároveň řešit jaký vybere souborový systém, bohužel však neřeší. Souborový systém FAT (FAT32) je velmi zastaralý. Je nevhodný i na výměnná media jako jsou SDkarty a USB flash paměti, ale zde se bohužel díky Windows stále používá. S příchodem platformy NT Microsoft přinesl souborový systém NTFS, který se následně rozšířil s verzí Windows XP. Byl to od Microsoftu slušný pokrok oproti FAT, ale na druhou stanu je smutné, že do dneška jeho funkce neumí uživatelé Windows využít. Ale i NTFS už je zastaralý a nemá takové schopnosti jako nové Linuxové filesystémy. Sice se říkám Linuxové, ale spousta jich byla primárně vyvinuta pro různé unixové systémy, avšak i na Linux byly portovány. Na Linuxu je asi nepoužívanější filesystém ext (aktuálně verze 4), hodně používaný je ReiseFS, který už je asi na ústupu. Další filesytémy jsou například XFS nebo mnou používaný JFS. Tyto filesystémy jsou moderní, výkonné, stabilní a byly navrženy tak, aby uživatel v budoucnosti nenarazil na jejich limity. Kvůli mobilním zařízením a flash diskům, které se svou funkčností liší od běžných disků, vznikly i další nové filesystémy, které byly speciálně navržené pro flash paměti. Jako hlavní příklad se kterým mám zkušenosti uvedu JFFS.

Novinky u filesystémů

Ale je zbytečné stát na místě. Další nové myšlenky u filesystému v reálném nasazení přinesl Sun (dnes Oracle) se svým ZFS. V Linuxu je však jeho použití z licenčních důvodů problémové a obdobný filesystém nebyl pro Linux ani jiný OS. Proto vznikl filesystém Btrfs. Schopnosti Btrfs jsou široké umí snapshoty a používá COW. Mě však zaujalo to, že je optimalizován pro práci jak pro klasické rotačním disky tak pro flash disky, RAID je implementovat přímo ve filesystému (zatím jen RAID0 a RAID1) a pro mě to nejzajímavější, že provádí kontrolní součty nad jednotlivými bloky dat.

Nekvalita disků

malá odbočka o discích

Poslední dobou jde kvalita disků dolu a moje důvěra v ně je pramalá.
Se zvyšující kapacitou a tím zvyšující se hustotou dat roste i potenciální problém s diskem. Na discích, také odjakživa dochází ke skryté degradaci dat. Prostě nic není trvalé, vše mění se... Sami disky provádí kontrolní součty a tak jsou schopny data opravit a problém pak mohou nahlásit. Ne vždy se však oprava zdaří a v takovém případě může být příslušný soubor nenávratně poškozen. Tyto kontroly provádí firmware disku a informace o tom zaznamenává. Toto obstarává S.M.A.R.T.. Ale ne vždy je S.M.A.R.T. spolehlivý. Dokonce jsem narazil na informaci, že některé disky výrobce Western Digital tyto problémy vyřeší skrytě. V případě, že se mu blok nepovede opravit, tak vrátí prázdný blok dat a o vzniklém problému disk vůbec neinformuje.
S diskem můžou být i jiné problémy, které ale nemusí způsobovat sám disk. Problém může být v jiné části hardwaru počítače, například IDE/SATA řadiči, špatný kabel, nebo chyba softwaru.

Já aktuálně narážím na problém, že po kontrole integrity RAIDu1 se ukázalo, že některé bloky nesouhlasí, ale nedá se v podstatě zjistit, které bloky to jsou a ke kterému souboru náleží. V případě použití RAID1 a Btrfs, který provádí kontrolní součty, to však funguje mnohem lépe. Při přečtení vadného bloku dat, je tato vada zjištěna a blok načten z druhého disku a na prvním disku je vadný blok opraven :-). A to je moje motivace proč začít používat Btrfs.

Test Btrfs

Jednoduchý test Btrfs v RAIDu1 a kontrolou dat v reálu.
Provedeno na distribuci Mageia3: Btrfs v0.20-rc1, kernel 3.8.13.4-desktop-1.mga3.

Vytvoření filesystému Btrfs s RAIDem1 na dvou partyšnách ruzných disků:
mkfs.btrfs -m raid1 -d raid1 /dev/sdb2 /dev/sdc2 -L btrfs2
připojení filesystému:
mount  /dev/sdc2 /mnt/btrfs2/
nakopírování dat:
cp Mageia-4-alpha3-i586-DVD.iso /mnt/btrfs2/
zjištění stavu RAIDu, informace o zaplnění disku a dalších informací:
 
btrfs filesystem df /mnt/btrfs2
btrfs filesystem show
tímto příkazem jsem provedl poškození dat na jednom disku:
 
dd if=/dev/zero of=/dev/sdb2 bs=1MB count=1000
takto provedení čtení dat:
 
cat /mnt/btrfs2/Mageia-4-alpha3-i586-DVD.iso-copy >/dev/null 
Pak v logu kernelu (u mageii /var/log/kernel/info.log ), debian (/var/log/kern.log), můžeme vidět informace o tom, že nesedí kontrolní součty a informaci o umístění daného bloku. A pak informaci o opravách a kterých sektorů se to týká:
 
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671612928 csum 2566472073 private 2778140509
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671617024 csum 2566472073 private 2800729912
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671621120 csum 2566472073 private 1522128662
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671674368 csum 2566472073 private 2448968283
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671752192 csum 2566472073 private 1296282567
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671756288 csum 2566472073 private 2828806260
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671760384 csum 2566472073 private 1593117388
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671764480 csum 2566472073 private 4136347329
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671817728 csum 2566472073 private 2889709515
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671821824 csum 2566472073 private 3334484093
Oct 25 15:28:49 localhost kernel: btrfs bad tree block start 0 18904940544
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 674168832 (dev /dev/sdb2 sector 1849600)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 674172928 (dev /dev/sdb2 sector 1849608)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679321600 (dev /dev/sdb2 sector 1859664)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671481856 (dev /dev/sdb2 sector 1844352)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679243776 (dev /dev/sdb2 sector 1859512)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671485952 (dev /dev/sdb2 sector 1844360)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679247872 (dev /dev/sdb2 sector 1859520)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679747584 (dev /dev/sdb2 sector 1860496)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671490048 (dev /dev/sdb2 sector 1844368)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679751680 (dev /dev/sdb2 sector 1860504)

Nasazení Btrfs

Takže jsem se rozhodl Btrfs nasadit na disk se zálohami a na home partyšnu. Na pártyšnu s daty NE, neboť tam mam RAID5, který Btrfs přímo zatím neumí, je to však již ve vývoji. Aktuální verze v Debianu Wheezy: kernel 3.2.0-4-686-pae, Btrfs v0.19.

Mám v plánu též využít schopnosti Btrfs při zálohování, jak na home partyšně tak disku pro zálohování.
U Btrfs je to složité se zabraným a volným místem, ale je škoda, že i ve výpisu při použití RAIDu1 se velikost celého disku neukazuje správně, ukazuje to součet, tedy jako by tam byl RAID0.

V případě problému se dá na obnovu dat použít utilita btrfs-recover.

Po prvních úspěšných zkušenostech, BTRFS nasazuji všude kde je to možné. Jak na oddíl systémový, tak datový i na zálohovací disky. Díky BTRFS tak lze velmi jednoduše a efektivně zálohovat v mžiku jak systém tak data.

další odkazy s informacemi:
abclinuxu - Btrfs
oficiální stránka o Btrfs od Oraclu
beginners-guide-to-btrfs

Další linuxové články:

Souborový systém Btrfs
Operační systém GNU/Linux
Jednodeskový ARM počítač Raspberry PI
TouchBooku v praxi
Boot a instalace bez DVD mechaniky
4TB disk GPT a UEFI boot

Kontakt

Pozdrav, dotaz nebo žádost o konzultaci pošlete na můj email:mail(uzenáč)josefjebavy.cz




Flattr this



Ověřit CSS!