Hlavní navigace

Súborový systém ZFS – konzistentnosť dát

Marián Jamrich 19. 1. 2011

Udržať konzistentnosť dát v súborovom systéme, kde je veľa dát, nie je často jednoduchou záležitosťou. Firma Oracle hovorí o svojom súborovom systéme ZFS ako o „A better, safer way to manage your data“. Poďme si teda ukázať zakladnú prácu s týmto zaujímavým súborovým systémom.

Rád by som upozornil, že cieľom môjho článku nie je porovnávať ostatné filesystémy, ale poukázať na nesporné výhody súborového systému ZFS a opísať moje krátke praktické skúsenosti a postrehy s jeho používaním. Príklady sú prevažne z operačného systému FreeBSD 8.2 PRERELEASE (zfs zpool testovacia verzia 28).

O čom budem konkrétne písať?

Seriál som rozdelil na tri časti. V prvej časti spomeniem, aké metódy používa ZFS na ochranu svojich dát, ako pracuje a ako si rýchlo nainštalovať FreeBSD s podporou ZFS. V druhej časti vysvetlím, ako pracovať s poolom, z čoho sa ZFS skladá a ako sa ovláda. V tretej časti si vysvetlíme, ako pracovať s datasetmi  a ako vytvoriť snapshoty, klony, nastaviť práva na snapshoty a datasety.

Teoretická časť

Úvod do ZFS

ZFS je 128-bitový filesystém, ktorý bol pôvodne vyvíjaný spoločnosťou Sun Microsystems pre operačný systém Solaris, teraz ho vlastní firma Oracle. ZFS bolo po prvý krát predstavené v júni 2006 v operačnom systéme Solaris 10. ZFS pridáva do operačného systému medzivrstvu, ktorá mapuje logické bloky dát na ich fyzické umiestnenie na disku. Skratka ZFS znamená Zettabyte File System a vďaka open-source licencii CDDL je od 6.apríla 2007 portovaný aj do FreeBSD-7.0 RELEASE (zpool verzia 6). V stabilnej verzii FreeBSD 8.1 je od júla 2010 s aktuálnou verziou zpoolu 14. Je dostupná aj opravná verzia FreeBSD 8.2-RC1 s verziou zpoolu 15, ktorá opravuje mnohé bugy predošlej verzie. Pre porovnanie aktuálny Solaris 11 Express má ZFS verziu 31 z novembra 2010.

ZFS má tieto hlavné výhody:

 – je to kompletne 128-bitový súborový systém
 – môžeme uchovať 256 quadriliónov zettabytov (1 zettabyt má 1 bilión terabytov)
 – má integrovaný volume manager
 – stráži integritu svojich dát
 – robí tzv. self-healing dát (automaticky opravuje poškodené dáta)
 – ľahké ovládanie
 – vie spraviť/obnoviť aktuálne snímky súborového systému (snapshoty)
 – na disku je teoreticky možné uchovať až 2 na 64 snapshotov
 – chybovosť dát je asi iba 0,01%

Transakčný model COPY-ON-WRITE

ZFS obsahuje patentovanú funkciu ORACLU s názvom Copy-On-Write (COW), ktorý stráži konzistenciu dát. COW je transakčný model a používa tzv. block pointers, teda ukazovatele na bloky dát v rámci svojho súborového systému. V praxi to znamená, že dátové bloky obsahujúce aktívne dáta sa neprepisujú až do chvíle, kým sa úspešne nezapíšu na iné miesto na disku. Ak je teda kopírovanie starého bloku dát ÚSPEŠNE dokončené, všetky ukazovatele na staré bloky a metadáta sú zmenené na nové bloky dát. Toto zaručí konzistenciu dát aj napríklad pri výpadku elektrického prúdu. ZFS si udržiava takisto kontrolné súčty všetkých dát a metadát. Pokiaľ sa zmení checksum nejakých dát, tak sa ich pokúsi opraviť bez manuálneho zásahu. ZFS používa 256-bitové kontrolné súčty, ktoré sú uložené priamo na disku. Z týchto dôvodov ZFS nepotrebuje fsck (file system check) na kontrolu konzistencie súborového systému. Takto sa zaručí, že pri zlyhaní diskovej operácie (napr. pri hard resete, výpadku elektrického prúdu) sa dáta budú vedieť po reštarte systému vrátiť do pôvodných dátových blokov a tak strážiť integritu svojich dát.

ZFS self-healing

ZFS self-healing je funkcia, ktorá pri mirrore dvoch a viac diskov automaticky opravuje poškodené dáta. Na spodnom obrázku vidíme v prvom kroku červený štvorec, čo značí poškodené bloky dát, kde nesedí kontrolný súčet (checksum). V druhom kroku to ZFS zistí, pozrie sa na druhý disk, kde zistí, že checksum je správny a v treťom kroku sa poškodené dáta na prvom disku automaticky prepíšu tými správnymi, ktoré sú na druhom disku. Na stránkach opensolarisu je uverejnené pekné video, ako to celé funguje.

Ukážka automatickej opravy dát pri mirrore

• RAID-1 – ZFS robí opravu zlých dátových blokov použitím kópie z mirroru
• RAID-Z/Z2 – ZFS robí opravu zlých dátových blokov použitím parity

ZFS ARC (Adaptive Replacement Cache)

Architektúra ARC

ZFS ARC je rýchla hlavná vyrovnávacia pamäť pre operácie so ZFS, ktorá sa nachádza vo fyzickej pamäti. ARC má schopnosť dynamicky meniť svoju veľkosť cache s ohľadom na celkovú dostupnú pamäť systému. Pri stave, kedy nemá systém dostatok pamäte (potreba inej aplikácie, procesu), povie ZFS, aby nejakú okamžite uvoľnil. V mnohých prípadoch tvorí ARC asi 3/4 z celkovej dostupnej pamäte pre systém.

ZFS intent log slúži na zapisovanie všetkých, aj zamýšľaných, diskových operácií do špeciálnej časti súborového systému. Jeho účel je, aby pri výpadku existoval záznam týchto udalostí, ak nastane kernel panic alebo výpadok prúdu. Toto zabraňuje nekonzistentnosti v súborovom systéme.

L2ARC je vrstva medzi diskom a virtuálnou pamäťou ARC vo fyzickej pamäti pre ZFS. Hlavná úloha tejto pamäte je urýchlenie náhodne čítaných dát.

32bit vs. 64bit

Vzhľadom k tomu, že ZFS používa vo veľkej miere operačnú pamäť, musíme zabezpečiť dostatočne veľkú operačnú pamäť, ktorú môže obhospodarovať. Odporúča sa 64-bitová verzia operačného systému a minimálne 1GB fyzickej pamäte pri FreeBSD, 512MB pri Solarise a adekvátna veľkosť swapu. Užívatelia, ktorí používajú 32-bitovú architektúru operačného systému, by si mali skompilovať kernel nanovo a pridať option „KVA_PAGES“, ktorý definuje približne jednu štvrtinu z celkovej veľkosti fyzickej pamäte pre KVA (kernel virtual address space), ktorá dovoľuje ZFS použiť viac fyzickej pamäte. V prípade, ak dôjde k vyčerpaniu voľnej pamäte pre ZFS, nastane kernel panic a samovoľne sa reštartuje operačný systém. Ak máme napr. 1GB fyzickej pamäte, tak si nastavte v configu kernelu následovné:

 options    KVA_PAGES=256 ; 1024MB deleno 4 = 256MB

Ešte je potrebné definovať v konfiguračnom súbore /boot/loader.conf tieto hodnoty:

vm.kmem_size="512M" ; 1/2 z celkovej veľkosti RAM
vm.kmem_size_max="512M" ; 1/2 z celkovej veľkosti RAM
vfs.zfs.arc_max="256M" ; 1/2 z vm.kmem_size_max

mfsBSD

Veľmi jednoduchým spôsobom ako si nainštalovať FreeBSD s podporou filesystému ZFS je stiahnuť bootovateľné ISO mfsBSD (memory filesystem). Je to minimálna inštalácia FreeBSD, ktorá sa kompletne nahrá do operačnej pamäti. Stačí nabootovať ISO súbor, pripojiť sa na systém (heslo pre ISO je mfsroot):

# mount_cd9660 /dev/acd0 /cdrom ; namontuje ISO do /cdrom
# zfsinstall -d /dev/ad0 [-d /dev/ad1] -t /cdrom/8.1-PRERELEASE-i386.tar.xz -s 2G -p pool
# chroot /mnt ; zmeníme root systému
# passwd ; nastavíme root heslo

Skript zfsinstall nainštaluje automaticky systém s podporou ZFS filesystému na disk ad0 s 2GB swapom a názvom poolu „pool“.

Nastavíme ešte automatické spustenie SSH démona a sieťovú kartu v /etc/rc.conf, aby sme sa po reboote server vedeli opäť pripojiť:

sshd_enable="YES" ; automatický štart SSH po reboote servera
ifconfig_(sieťovka)="DHCP" ; automatické IP adresy z DHCP servera

V súbore /etc/sshd/sshd_config:

PermiRootLogin yes ; povolenie prihlásenia pre roota
# shutdown -r now ; reštart systému

Po reštarte systému vidíme základnú štruktúru ZFS filesystému, ktorú nám vytvoril skript  zfsinstall:

# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
pool                 17.5G   664G    19K       none
pool/root          16.1G   664G  12.9G      /
pool/root/tmp      19K   664G    19K       /tmp
pool/root/var    180M   664G   158M      /var

Záver

Týmto by som ukončil úvodný teoretický článok o ZFS. V druhom dieli si už povieme, ako pracovať s poolmi, z čoho sa vlastne ZFS skladá a akým spôsobom ho ovládať.

Našli jste v článku chybu?

19. 1. 2011 15:47

chsajarsa (neregistrovaný)

Jde o to pro jaky segment je ZFS primarne urceno a tim neni Desktop a dokonce ani ne servery nizsi stredni tridy. Vyhody tohote reseni se projevi stejne jako nasazeni "velkych" unixu az na velke clustery v Enterprise sfere. Tyto killer feature se zda totiz pomalu stavaji nutnosti.

Stejne jako zde bylo napsano ze ZFS zere stovky mega pameti, "muj" nejslabsi server se ZFS ma 20 GB pameti a v tehle sfere zacina byt nejaky ten GB pameti fuk.:-) Je nedoporucovano mit 32-bit architekturu a min jak 4G…

19. 1. 2011 11:30

ike (neregistrovaný)

Mam tak trochu jiny pohled na vec. Takovy hodne filozoficky: Co slozitost?
Mysleno zcela vseobecne. Celkem verim, ze ZFS je nabuseny FS a nechci upadnou do
flamu zda je lepsi, rychlejsi, krasnejsi tohle ci ono.
Jde mi o takovou tu ideu cistoty navrhu a rozumne dekompozice reseni. Nemohu se totiz zbavit dojmu, ze soucasne implementace fs jsou stale vetsi a slozitejsi bumbrlicci, coz ma (dle meho nazoru) tyto dusledky:
* vic kodu = vice chyb. Napr. ext3 je asi mene nabusena nez zfs, ale je tu s na…



120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky