Vlákno názorů k článku Btrfs v praktických ukázkách od Lukáš Karas - Při použití BtrFS je potřeba si dávat pozor...

  • Článek je starý, nové názory již nelze přidávat.
  • 22. 2. 2013 12:37

    Lukáš Karas

    Při použití BtrFS je potřeba si dávat pozor na údaj o volném místě. Hodnota vrácená pomocí df je spíš takovým "odhadem" než něco na co by se dalo spolehnout. To by ani tolik nevadilo, kdyby šlo nějakým způsobem odhadnou kdy volné místo dochází a kdy je potřeba disk pročistit...

    BtrFS má oddělené prostory pro data a metadata (protože metadata je výhodnější ukládat do menších bloků nežli data). Může se tedy stát že místo pro metadata dojde ve chvíli kdy data mají místa ještě dostatek (spousta malých souborů). Protože při každé úpravě (i mazání souboru!) je potřeba udělat COW a tedy alokovat nové místo, může nedostatek místa pro metadata znamenat že z FS ani nic nesmažeme a dostaneme se do situace kdy máme plný FS a nemůžeme s tím nic dělat!

    Aby toho nebylo málo, oblast pro metadata je pro jistotu (defaultně) duplikovaná... Tady malý pohled do toho zmatku:

    $ df -h
    Souborový systém     Velikost Užito Volno Uži% Připojeno do
    /dev/sda7                 31G   19G   12G  62% /
    
    $ btrfs fi df /
    Data: total=21.00GB, used=16.72GB
    System, DUP: total=32.00MB, used=4.00KB
    System: total=4.00MB, used=0.00
    Metadata, DUP: total=1.50GB, used=777.86MB
    
    $ btrfs fi show /dev/sda7
    Label: none  uuid: 69858b22-79b3-486a-94ef-73fd02caf034
            Total devices 1 FS bytes used 17.48GB
            devid    1 size 30.98GB used 24.07GB path /dev/sda7

    Jak z toho ven? BtrFS má mechanismus na "vyvažování" prostoru pro metadata a data. Ten ale "online" nefunguje na 100%! Naposledy jsem ENOSPC dostal minulý týden s jádrem 3.7.x. Podařilo se mi najít způsob jak tento stav vyřešit, vyžaduje ale několik restartů a pevné nervy...

    # smazat cache, pokud jsou použity...
    mount / -o remount,clear_cache
    ## ručně vynutit re-balancování dat a metadat
    btrfs fi balance /
    ## smazat bordel
    aptitude clean
    rm -rf /tmp/* /var/tmp/*
    ...

    Jediné co může být útěchou je to že vývojáři o tomto problému ví https://btrfs.wiki.kernel.org/index.php/ENOSPC

  • 22. 2. 2013 13:40

    Lael Ophir (neregistrovaný)

    Opět můžeme srovnat s NTFS. Na metadata (a malé soubory) se používá Master File Table, která existuje ve dvou kopiích. Na disku je při vytvoření FS vyhrazena MFT Zone, do které MFT expanduje. Pokud se zaplní "datový" prostor, pokračuje se v zápisu dat v MFT Zone. Pokud se zaplní MFT Zone, pokračuje se v zápisu MFT v "datovém" prostoru. Defragmentace pak případnou fragmentaci MFT odstraní, což je výhodné z hlediska výkonu. Výsledek je funkčně podobný jako u btrfs, ale údaj o volném místu skutečně platí.

  • 22. 2. 2013 16:04

    Izak (neregistrovaný)

    Kur* NTFS je smejd, nezjima me, nic neumi, je to zkopirovany Btree FS z OS/2 a v w2000 meli jeste starou chybu, ktera HPFS (z OS/2 ) zhrouti pri vetsim disku, ted nevim, jak velky ... OS/2 (IBM) to opravila v dobe, kdy takovych kapacit nemohlo dosahovat ani pole, NTFS se zhroutil ;-)) ja jen cekal, kdy k tomu dojde a mel jsem velkou radost, ze se me proroctvi otom, ze M$ jsou lusetri a tu znamou chybu tam zavlecou taky, priotm stacilo zkopirovat HPFS.386 a nepouzivat starsi HPFS ...

    Mimochodem BTRFS neni dobry FS, chova se divne, ale ja mam XFS, ext4, jfs (i IBM uznala, ze HPFS nema budoucnost) raiser .... atd. a tam problem co ... NENI, stejne jako se nam nestava, ze by LVM ci SW_RAID ztracel partition etc, jako dynamicke disky ...

    Treba ZFS jsem zavrhl, kdyz jsem zjistil, ze neumi pridat disky do RAID-Z ... a SUN/Oracle jeste tvrdi, ze to nepotrebuji ;-)))

    Mimochodem NTFS v linuxu je jeste horsi nez ... vlastne nez cokoliv, takze co zde resime ? ... jiny OS nez unixovy je na tomhle serveru OT ...

  • 22. 2. 2013 22:53

    martin-ux (neregistrovaný)

    >> Treba ZFS jsem zavrhl, kdyz jsem zjistil, ze neumi pridat disky do RAID-Z
    A skusali ste si vobec precitat dokumentaciu na sun docs? resp. oracle?

    Vase argumenty su na urovni /mozno/ strednej skoly.

    Disky tvoria vdevs, ktore maju svoje vlastnosti (mirror/raidz*). Jeden alebo viac vdevs tvoria pool. Extenduje sa pool vdevami, nie samotnymi diskami. Z performance hladiska je SUNom (ok, oraclom) doporuceny na 9 diskov na vdev - optimalne. SAN /oracle/ vie, co tvrdi .. a ma na to dovody.

  • 23. 2. 2013 13:51

    Trident (neregistrovaný)

    Pravdu mas.
    Sun, tedy alespon jeste pred koupi Oraclem, na to mel dedikovane farmy masin na kterych testoval a testoval jeste pred tim nez zacal reseni prodavat.
    Obcas neni dobry myslet si ze clovek vymysli neco svetoborneho proti lidem kteri znaji streva filesystemu a maji narozdil od nas zdroje k otestovani.

  • 26. 2. 2013 19:17

    Izak (neregistrovaný)

    1) ja mam pod spravou tisice disku, SUN vi hov*, mimochodem na rozdil od nich jsem stvoril i vlastnii pole, oni jen kupuji ;-))) ale to je jedno ze. Problem s vykonem je az od 20 disku, pravda, radeji do 16 ... to je tak nejak universalni na mnoha RAID radicich, myslim radice Fc poli, ne nejake levne karty ... budou chtit ucit orla litat ?

    No ja nevim, do netappu do RAID-DP davam disky jak na bezicim pase, to ze si nastavim omezeni, kolik bude v jedne RG je moje vec, ale do te doby muzu RG zvetsovat.

    Kdyz dam do ZFS 3 disky a budu chtit pridat 4., mam smulu, nepridam, dal by se tam jako single a pri vypadku prijdu o vsechno. Takze musim dat 2 disky do mirroru, nebo zase 3 do noveho RAID-Z ... opravdu ZFS znam velmi, ale velmi dobre, proto jsem jej ten nenasadil, uz jsem videl i jeden, co se zhroutil .... a ze pry se nezhrouti ;-)))

    No takze mam SW RAID5, kde si pres mdadm --grow pridavam disky, muzu menit z R5 treba i R10 ... no a hlavne, muzu si pridat disky podle potreby, nebot proc bych mel mit doma 12 disku, kdyz mi staci mene ... koupim lacino, az budu potrebovat ;-))
    Mimochodem SW_RAID ma i funkce na opravu havarie RAID, rozpadleho pole, pokud se disky znova chyti etc. taky o nem neco vim, proto jsem tam vrazil SW_RAID, LVM a etx4 ... jeste jsem uvazoval o XFS, taky dobry FS ;-)) ten jsem pouzival na vetsich discich.

    Mimochodem Oracle bezi taky na netappech ;-)) ... ale misto pres FC na 10Gb LAN - NFS, takze by mohli vedet, jak vypada RAID na Linux/BSD (Ontap byl linux, ted je to BSD)

  • 26. 2. 2013 21:52

    martin-ux (neregistrovaný)

    No .. kazdy ma pravo na svoj nazor; i ked s Vasim nazorom, ze SUN vie h* asi nema dalej riesit tuto temu.

    Mate zvlastnu metriku, ze kolko mate pod spravou "diskov" .. mozno dam za trest kolegom v robote spocitat disky z p9500viek, XPciek a EVA poli, ak budu hnevat .. nechcel by som to ratat.

    Otazne o com sa bavime: o highendoch alebo lowendoch? Fyzicke disky /jbod/ alebo logicke z externych poli ? Domace nakolene postavene servery alebo poriadne produkcne masiny ?

    Tema dlha a i tak tu nic nevyriesime. Vas priklad domaceho serveru s 3 diskami v raidz ma pointu ; tam by som tie disky vymenil za vacsie. Na mensom serveri nie je problem pridat dalsie 3 disky do dalsieho vdev-u.
    Ostatne preco by som 4TB male pole extendoval o jeden non-raid disk? A aka bude performance degradation pri expadnuti raid5 z 3 na 4 disky (kvoli I/O size) ?

    Pri produkcnych masinach sa nema zmysel bavit o par 100GB..

  • 23. 2. 2013 13:56

    Lael Ophir (neregistrovaný)

    To máte nějak popletené. OS/2 používala HPFS. B-tree je datová struktura, kterou HPFS ani NTFS nepoužívá (oba používají B+ tree). NTFS také není zkopírovaný HPFS. NTFS má výrazně odlišný koncept (vycházející spíš z VMS Files-11, psaného mimochodem v assembleru), je napsaný v C (HPFS386 v assembleru), i odlišné features. Mimochodem HPFS386 je také dílo MS, v IBM ho pro OS/2 licencovali.

    NTFS že nic neumí? To je velmi vtipné tvrzení. Kdyby existoval linuxový FS s možnostmi NTFS, byl by to pro spoustu lidí důvod k velké oslavě.
    http://en.wikipedia.org/wiki/NTFS#Features

    NTFS se hroutilo na velkém disku? Rád se dozvím technické detaily.

    Podpora NTFS na Linuxu je by default mizerná, souhlas. Pokud chcete kvalitní implementaci, kupte si Tuxera NTFS nebo Paragon NTFS for Linux.

    Ne-unixové FS rozhodně nejsou off-topic, zvlášť když jde o srovnání s těmi unixovými.

  • 26. 2. 2013 19:26

    Izak (neregistrovaný)

    Samozrejme ve windows 2000 ;-)) psali o tom dokonce i v CHIPU ;-)

    HPFS samozrejme napsala IBM, stejne jako napsala SMB protokol ;-))

    NTFS umi vse jen na papire, jak umi quoty jsem videl, skoncilo to zalohou, formatem a obnovou, no nakonec na linuxu a SAMBA ;-))

    Jak umi dinamicke disky, obdoba LVM a SW_RAID jsem taky testoval, treba w200 kdyz se tam dal nejaky RAID nejrive zapsal na jeden disk, pak na dalsi, narust vykonu nebyl ani u Raid0, krom toho, ze po startu obcas info o rozdeleni disku ztratil a onovovalo se to pres testdisk, coz je puvodne linuxovy program, dostupny uz i pro windows ... nekteri zakaznici si tuhle skvelou vlastnost zapli na FC discich z RAID ... no dokud disk "nepodepsali" tak to slo zachranit.

    No ten journal v NTFS nejak moc nefunguje co ? kdyz tak dlouho scanuje ;-))

    No a to, ze na nejake volby pri montovani disku, popr zmena voleb za behu OS, to ani nema, napr. ze bych si vyladil disk pro DB, tedy ze bude primi zapis a zadna mezicache pro zapis etc. ....

  • 26. 2. 2013 16:38

    Sten (neregistrovaný)

    Ono to oddělení dat a metadat má smysl. Umí NTFS udělat RAID 1 na metadata a RAID 10 na data? Výkonostní rozdíl je totiž dost velký.

  • 22. 2. 2013 16:13

    Izak (neregistrovaný)

    No mi se stala srandovnejsi vec, mam BTRFS na RAID5+LVM2 takze system a metadata DUP

    Na disku/raid jsem mel jeste 500GB mista, ale metadata si vzala jen 5GB a zabrala jiz 5.8GB ... a FS se bruralne, ale brutalne zpomalil, zkusil jsem ten (btrfs fi balance) a houby, pomohlo az prebalancovat metadata:
    (btrfs fi balance -m) a zvedlo se to z 5GB na 6GB a jede to OK ... nez se to zas stane ...

    Ale jak jsem se dival, dat mu treba 10GB nebo treba i 20GB nejde, leda upravit zdrojak ... nikde jsem nenasel, jak mu dat vice ...

  • 23. 2. 2013 14:18

    Lukáš Karas

    Poměr metadat a dat lze štelovat pomocí volby "metadata_rati­o="... Zkuste pohledat.