
ZFS, krátká forma Zettabyte Filesystem, je pokročilý a vysoce škálovatelný souborový systém. Původně byl vyvinut společností Sun Microsystems a nyní je součástí projektu OpenZFS. S tolika souborovými systémy dostupnými na Linuxu je zcela přirozené ptát se, co je na ZFS zvláštního. Na rozdíl od jiných souborových systémů to není jen souborový systém, ale také správce logických svazků. Některé z funkcí ZFS, díky kterým je populární, jsou:
- Integrita dat – konzistence a integrita dat jsou zajištěny pomocí technik kopírování při zápisu a kontrolního součtu
- Sdružování úložného prostoru – dostupné úložné jednotky lze sloučit do jednoho fondu zvaného zpool
- Softwarový RAID – Nastavení pole raidz je stejně jednoduché jako zadání jediného příkazu.
- Vestavěný správce svazků – ZFS funguje také jako správce svazků.
- Snímky, klony, komprese – to jsou některé z pokročilých funkcí, které ZFS poskytuje.
ZFS je 128bitový souborový systém a má kapacitu pro uložení 256 zetta bajtů! V této příručce se naučíme, jak nainstalovat, nastavit a také používat některé důležité příkazy ZFS na serveru CentOS 7.
POZNÁMKA:Instalační část je specifická pro server CentOS, zatímco příkazy jsou běžné na jakémkoli systému Linux
Terminologie
Než přejdeme dále, dovolte nám pochopit některé terminologie, které se běžně používají v ZFS.
Bazén
Logické seskupování úložných jednotek. Je to základní stavební blok ZFS a odtud je úložný prostor alokován pro datové sady.
Soubory dat
Komponenty souborového systému ZFS, jmenovitě souborový systém, klony, snímky a svazky, se označují jako datové sady.
Zrcadlo
Virtuální zařízení ukládající identické kopie dat na dva nebo více disků. V situacích, kdy jeden disk selže, jsou stejná data dostupná na dalších discích tohoto zrcadlení.
Přestříbření
Proces kopírování dat z jednoho disku na druhý v případě obnovy zařízení.
Vyčištění
Scrub se používá pro kontrolu konzistence v ZFS, jako je použití fsck v jiných souborových systémech
Instalace ZFS
Abychom mohli nainstalovat ZFS na CentOS, musíme nejprve nastavit úložiště EPEL pro podpůrné balíčky a poté úložiště ZFS pro instalaci požadovaných balíčků ZFS.
Poznámka:Pokud nejste uživatelem root, uveďte prosím předponu sudo ke všem příkazům.
yum localinstall --nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpmyum localinstall --nogpgcheck http:// archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm
Nyní nainstalujte balíčky vývoje jádra a zfs. Vývojové balíčky jádra jsou potřeba, protože ZFS je vytvořen jako modul a vložen do jádra.
yum install kernel-devel zfs
Ověřte, zda je modul zfs vložen do jádra pomocí příkazu 'lsmod' a pokud ne, vložte jej ručně pomocí příkazu 'modprobe'.
[root@li1467-130 ~]# lsmod |grep zfs[root@li1467-130 ~]# modprobe zfs[root@li1467-130 ~]# lsmod |grep zfszfs 2790271 0zunicode 0zunicode 31111 zfszcommon 55411 1 zfsznvpair 89086 2 zfs,zcommonspl 92029 3 zfs,zcommon,znvpair
Pojďme zkontrolovat, zda jsme schopni použít příkazy zfs:
[root@li1467-130 ~]# seznam zfs žádné dostupné datové sady
Administrace
ZFS má dva hlavní nástroje, zpool a zfs. Zatímco zpool se zabývá vytvářením a údržbou fondů pomocí disků, nástroj zfs je zodpovědný za vytváření a údržbu datových sad.
nástroj zpool
Vytváření a ničení bazénů
Nejprve ověřte dostupné disky pro vytvoření fondu úložiště.
[root@li1467-130 ~]# ls -l /dev/sd*brw-rw---- 1 kořenový disk 8, 0 16. března 08:12 /dev/sdabrw-rw--- - 1 kořenový disk 8, 16. března 16 08:12 /dev/sdbbrw-rw---- 1 kořenový disk 8, 32. března 16 08:12 /dev/sdcbrw-rw---- 1 kořenový disk 8, 48. března 16 08:12 /dev/sddbrw-rw---- 1 kořenový disk 8, 64. března 16 08:12 /dev/sdebrw-rw---- 1 kořenový disk 8, 80. března 08:12 /dev/sdf
Vytvořte fond ze sady disků.
vytvořit zpool ....
[root@li1467-130 ~]# zpool create -f zfspool sdc sdd sde sdf
Příkaz 'zpool status' zobrazuje stav dostupných fondů
[root@li1467-130 ~]# stavový fond fondu:zfspoolstate:ONLINEscan:none requiredconfig:NAME STATE ČÍST ZAPISOVAT CKSUMzfspool ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 00sd error :Žádné známé chyby dat
Ověřte, zda bylo vytvoření fondu úspěšné.
[root@li1467-130 ~]# df -Hfilesystem Velikost Použitá využití DEV/SHMTMPFS 497M 50M 447M 11%/RUNTMPFS 497M 0 497M 0%/SYS/FS/CGROUPTMPFS 100M 0 100M 0%/RUN/Uživatel/0ZFSPOOL 3,7G 0 3,7G/ZFSPOL
Jak můžete vidět, zpool vytvořil fond s názvem 'zfspool' o velikosti 3,7 GB a také jej připojil do /zfspool.
Ke zničení bazénu použijte příkaz 'zpool zničit'
zpool zničit [root@li1467-130 ~]# zpool zničit zfspool[root@li1467-130 ~]# fond zpool žádný dostupný fond
Pokusme se nyní vytvořit jednoduchý fond zrcadlení.
zpool vytvořit zrcadlit ...
Můžeme také vytvořit více zrcadel současně opakováním klíčového slova mirror následovaného drives.
[root@li1467-130 ~]# vytvoření zpool -f mpool mirror sdc sdd mirror sde sdf[root@li1467-130 ~]# fond stavu fondu:mpoolstate:ONLINEscan:žádné požadovanéconfig:NAME STATE READ WRITE CKSUMmpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0mirror-1 ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0chyby:Žádné známé chyby dat
Ve výše uvedeném příkladu jsme vytvořili zrcadlové fondy, každý se dvěma disky.
Podobně můžeme vytvořit raidz pool.
[root@li1467-130 ~]# vytvoření fondu -f rpool raidz sdc sdd sde sdf[root@li1467-130 ~]# fond stavu fondu:rpoolstate:ONLINEscan:none requiredconfig:NAME STATE ČTĚTE ZAPIŠTE CKSUMrpool ONLINE 0 0 0raidz1-0 ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0chyby:Žádné známé chyby dat
Správa zařízení ve fondech ZFS
Jakmile je fond vytvořen, je možné přidávat nebo odebírat horké náhradní díly a zařízení mezipaměti z fondu, připojovat nebo odpojovat zařízení od zrcadlených fondů a nahrazovat zařízení. Ale neredundantní a raidz zařízení nelze z fondu odstranit. V této části uvidíme, jak provést některé z těchto operací.
Nejprve vytvářím fond nazvaný „testpool“ sestávající ze dvou zařízení, sdc a sdd. K tomu se pak přidá další sde zařízení.
[root@li1467-130 ~]# zpool vytvořit -f testpool sdc sdd[root@li1467-130 ~]# zpool přidat testpool sde[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan :none requiredconfig:NAME STATE ČÍST ZAPISOVAT CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0chyby:Žádné známé chyby dat
Jak již bylo zmíněno dříve, nemohu toto nově přidané zařízení odebrat, protože se nejedná o redundantní nebo raidz fond.
[root@li1467-130 ~]# zpool odebrat testpool sdenelze odstranit sde:lze odebrat pouze neaktivní horké náhradní díly, mezipaměť, zařízení nejvyšší úrovně nebo protokolová zařízení
Ale mohu do tohoto fondu přidat náhradní disk a odebrat jej.
[root@li1467-130 ~]# zpool přidat testpool náhradní sdf[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:žádné požadovanéconfig:NAME STATE ČÍST ZAPISOVAT CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sparessdf AVAILerrors:Žádné známé chyby dat[root@li1467-130 ~]# zpool odebrat testpool sdf[root@li1467-130 ~]# fond stavu fondu:testpoolstate:ONLINEscan:žádná požadovaná config NAME Přečtěte si napsat CKSUMTESTPOOL Online 0 0 0 0SDC Online 0 0 0sdd online 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.
Podobně můžeme použít příkaz připojit k připojení disků k zrcadlené nebo nezrcadlené oblasti a příkaz odpojit k odpojení disků ze zrcadlené oblasti.
připojení zpool zpool odpojit
Když zařízení selže nebo se poškodí, můžeme jej nahradit příkazem 'nahradit'.
zpool nahradit
Vyzkoušíme to násilným poškozením zařízení v zrcadlené konfiguraci.
[root@li1467-130 ~]# zpool create -f testpool mirror sdd sde
Tím se vytvoří zrcadlový fond skládající se z disků sdd a sde. Nyní úmyslně poničme sdd disk tím, že na něj zapíšeme nuly.
[root@li1467-130 ~]# dd if=/dev/zero of=/dev/sdddd:zápis do '/dev/sdd':Na záznamech zařízení2048001+0 v záznamech 2048000+0 nezbývá místo out1048576000 bytes (1,0 GB) zkopírováno, 22,4804 s, 46,6 MB/s
K detekci tohoto poškození použijeme příkaz 'scrub'.
[root@li1467-130 ~]# zpool scrub testpool[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEstav:Jedno nebo více zařízení nebylo možné použít, protože štítek chybí nebo je neplatný. Existuje dostatek replik, aby fond mohl nadále fungovat ve zhoršeném stavu. akce:Vyměňte zařízení pomocí „zpool nahradit“. Viz:http://zfsonlinux.org/msg/ZFS-8000-4Jscan:čištění opraveno 0 za 0h0m s 0 chybami v pátek 18. března 09:59:40 2016config:NAME STATE ČTĚTE ZAPISujte CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdd NEDOSTUPNÉ 0 0 0 poškozená datasde ONLINE 0 0 0chyby:Žádné známé chyby dat
Nyní nahradíme sdd sdc.
[root@li1467-130 ~]# zpool nahradit testpool sdd sdc; zpool statuspool:testpoolstate:ONLINEscan:resilvered 83,5K za 0h0m s 0 chybami v pátek 18. března 10:05:17 2016config:NAME STATE ČTĚTE ZAPIŠTE CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0UNAVAILsd000 0 poškozený datasdc ONLINE 0 0 0sde ONLINE 0 0 0chyby:Žádné známé chyby dat[root@li1467-130 ~]# fond stavu fondu:testpoolstate:ONLINEscan:resilvered 74,5 kB za 0h0m s 0 chybami v pátek 18. března 10:001636 :JMÉNO STÁT ČÍST ZAPISOVAT CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdc ONLINE 0 0 0sde ONLINE 0 0 0chyby:Žádné známé chyby dat
Migrace fondů
Můžeme migrovat úložiště mezi různými hostiteli pomocí příkazů export a import. Za tímto účelem by měly být disky používané ve fondu dostupné z obou systémů.
[root@li1467-130 ~]# zpool export testpool[root@li1467-130 ~]# zpool stav žádné fondy k dispozici
Příkaz 'zpool import' uvádí seznam všech fondů, které jsou k dispozici pro import. Tento příkaz spusťte ze systému, do kterého chcete fond importovat.
[root@li1467-131 ~]# fond importpool:testpoolid:3823664125009563520state:ONLINEakce:Fond lze importovat pomocí jeho názvu nebo číselného identifikátoru.config:testpool ONLINEsdc ONLINEsdd ONLINEsde ONLINE
Nyní importujte požadovaný fond
[root@li1467-131 ~]# zpool import testpool[root@li1467-131 ~]# zpool statuspool:testpoolstate:ONLINEscan:none requiredconfig:NAME STATE ČÍST ZAPISOVAT CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0chyby:Žádné známé chyby dat
iostat
Statistiku io zařízení fondu lze ověřit pomocí příkazu iostat.
[root@li1467-130 ~]# Zpool iostat -V Testpoolcapacity Operations Bandwidthpool přidělovače zdarma Číst Read Read Write ---------- -------------------------------------------------- --- ----- ----- ----- Testpool 1,80 m 2,86G 22 27 470K 417KSDC 598K 975M 8 9 200K 139KDD 636K 975M 7 9 135K 139KSDE 610K 975M 6 95K 139K ----- ----- ----- ----- ----- ----- ----- -----
nástroj zfs
Nyní přejdeme k obslužnému programu zfs. Zde se podíváme na to, jak vytvořit, zničit datové sady, kompresi souborového systému, kvóty a snímky.
Vytvoření a zničení souborového systému
Souborový systém ZFS lze vytvořit pomocí příkazu zfs create
zfs vytvořit
[root@li1467-130 ~]# zfs vytvořit testovací fond/studenti[root@li1467-130 ~]# zfs vytvořit testpool/professors[root@li1467-130 ~]# df -hFilesystem % Namontováno na/dev/sda 19G 1,4G 17G 8%/devtmpfs 488M 0 488M 0%/devtmpfs 497m 0 497m 0%/dev/shmtmpfs 497m 50m 447m 11%/RuntMPFS 497M 0 497M 0%/fs/fs/fs/frouptestspool 2,8. G 0 2,8G 0%/testpooltmpfs 100m 0 100 m 0%/běh/uživatel/0testpool/studenti 2.8G „
Z výše uvedeného výstupu si všimněte, že ačkoliv v době vytváření souborového systému není uveden žádný bod připojení, je bod připojení vytvořen pomocí stejné cesty jako u fondu.
zfs create umožňuje použití -o, pomocí kterého můžeme specifikovat možnosti jako přípojný bod, komprese, kvóta, exec atd.
Dostupný souborový systém lze vypsat pomocí zfs list:
[root@li1467-130 ~]# ZFS LISTNAME Použité Dopřejte MountPointTestPool 100m 2,67G 19K/Testpooltestpool/Profesoři 31K 1024M 20,5K/TestPool/ProfesorStestpool/Studenti 1,57M 98,4M 1,57 m/Testpool/Studenti
Souborový systém můžeme zničit pomocí možnosti zničit
zfs zničit
Komprese
Nyní pochopíme, jak funguje komprese v ZFS. Než začneme používat kompresi, musíme ji povolit pomocí 'nastavení komprese'
zfs set
Jakmile je toto hotovo, komprese a dekomprese probíhá na souborovém systému transparentně za chodu.
V našem příkladu povolím kompresi v adresáři studentů pomocí kompresního algoritmu lz4.
[root@li1467-130 ~]# sada zfs komprese=lz4 testpool/studenti
Nyní zkopíruji soubor o velikosti 15M do tohoto souborového systému a po zkopírování zkontroluji velikost.
[root@li1467-130 /]# cd /var/log[root@li1467-130 log]# du -h secure15M secure[root@li1467-130 ~]# cp /var/log/secure /testpool/students/[root@li1467-130 students]# df -h .Filesystem Velikost Použito Dostupnost Použít % Namontovaný na testpool/studenti 100 mil. /studentů 100 mil. / 1,7 mil. % %
Všimněte si, že velikost použitá v souborovém systému je pouze 1,7M, zatímco velikost souboru byla 15M. Můžeme také zkontrolovat kompresní poměr..
[root@li1467-130 ~]# zfs získá komprimační poměr testpoolNAME PROPERTY HODNOTA SOURCEtestpool compressratio 9,03x -
Kvóty a rezervace
Dovolte mi vysvětlit kvóty na příkladu ze skutečného života. Předpokládejme, že máme na univerzitě požadavek na omezení místa na disku používaného souborovým systémem pro profesory a studenty. Předpokládejme, že potřebujeme přidělit 100 MB pro studenty a 1 GB pro profesory. Ke splnění tohoto požadavku můžeme využít 'kvóty' v ZFS. Kvóty zajišťují, že množství diskového prostoru používaného souborovým systémem nepřekročí nastavené limity. Rezervace pomáhá skutečně alokovat a zaručit, že je pro souborový systém k dispozici požadované množství místa na disku.
zfs nastavená kvóta= zfs nastavená rezervace=
[root@li1467-130 ~]# zfs nastavená kvóta=100 mil. testpool/studenti[root@li1467-130 ~]# zfs nastavená rezervace=100 mil. testpool/students[root@li1467-130 ~]# zfs LISTNAME POUŽITY KVALUJTE VÝZNAM MOUNTOPTESTPOOL 100M 2,67G 19K/TESTPOOLTESTPOOL/Profesoři 19K 2,67G 19K/TestPool/ProfessorStestpool/Studenti 1,57M 98,4 m 1,57m/Testpool/Studenti [root@li1467-130 ~]# ZFS sada =1g testpool/profesoři/profesoři/profesoři/profesoři/profesoři [root@li1467-130 ~]# ZFS ListName Používá se aUVIVOT VISE MOUNTOPTIONTESTPOOL 100M 2,67G 19K/TESTPOOLTESTPOOL/Profesoři 19K 1024M 19K/TESTPOOL/ProfessorStestpool/Studenti 1,57M 98,4 m 1,57M/Testpool/Studenti>
Ve výše uvedeném příkladu jsme vyčlenili 100 MB pro studenty a 1 GB pro profesory. Sledujte sloupec 'AVAIL' v 'zfs list'. Zpočátku měly velikost 2,67 GB každý a po nastavení kvóty se hodnoty odpovídajícím způsobem změnily.
Snímky
Snímky jsou kopie souborového systému ZFS v daném okamžiku pouze pro čtení. Nespotřebovávají žádné další místo v zfs poolu. Můžeme se buď vrátit do stejného stavu později, nebo extrahovat pouze jeden nebo sadu souborů podle požadavků uživatele.
Nyní vytvořím některé adresáře a soubor pod '/testpool/professors' z našeho předchozího příkladu a poté pořídím snímek tohoto souborového systému.
[root@li1467-130 ~]# cd /testpool/professors/[root@li1467-130 profesoři]# mkdir matematika fyzika chemie[root@li1467-130 profesoři]# kočka> qpaper.txtDotazník pro rok 2016-17[root@li1467-130 profesorů]# ls -latotal 4drwxr-xr-x 5 kořenový kořen 6 19. března 10:34 .drwxr-xr-x 4 kořenový kořen w x 94 . 9. března xr-x 2 kořenový kořen 2 19. března 10:33 chemistrydrwxr-xr-x 2 kořenový kořen 2 19. března 10:32 mathsdrwxr-xr-x 2 kořenový kořenový adresář 2-1 w-3r 19. března 1 root root 36 19. března 10:35 qpaper.txt
Chcete-li pořídit snímek, použijte následující syntaxi:
snímek zfs
>
[root@li1467-130 Profesoři]# ZFS Snapshot Testpool/Profesors@03-2016 [root@li1467-130 Profesoři]# ZFS Seznam -t SnapshotName Používá se aUVE MountPointTestPool/Profesors@03-2016 0- 20,5 kB -
Nyní vymažu soubor, který byl vytvořen, a extrahuji jej ze snímků
[root@li1467-130 profesoři]# rm -rf qpaper.txt[root@li1467-130 profesoři]# lschemie matematika fyzika[root@li1467-130 profesoři]# cd .zfs[root@li1467- 130 .zfs]# cd snapshot/03-2016/[root@li1467-130 03-2016]# lschemie matematika fyzika qpaper.txt[root@li1467-130 03-2016]# cp -a qpaper.txt /testpool/professors /[root@li1467-130 03-2016]# cd /testpool/professors/[root@li1467-130 professors]# lschemie matematika fyzika qpaper.txt
Smazaný soubor je zpět na svém místě.
Všechny dostupné snímky můžeme vypsat pomocí zfs list:
[root@li1467-130 ~]# ZFS List -T SnapshoTName Používá se a využít MountPointTestPool/Profesors@03-2016 10,5K -20,5K -
Nakonec zničme snímek pomocí příkazu zfs zničit:
zfs zničit
>
[root@li1467-130 ~]# zfs zničit testpool/professors@03-2016[root@li1467-130 ~]# seznam zfs -t snapshot žádné dostupné datové sady
Závěr
V tomto článku jste se naučili, jak nainstalovat ZFS na CentOS 7 a používat některé základní a důležité příkazy z utilit zpool a zfs. Toto není úplný seznam. ZFS má mnohem více možností a můžete je dále prozkoumat z jeho oficiální stránky.
Cent OS