Vodič za instaliranje i korišćenje ZFS-a na CentOS 7-u

ZFS, kratak oblik Zettabyte Filesystem-a je napredni i veoma skalabilan fajl sistem. Prvobitno je razvio Sun Microsystems i sada je deo OpenZFS projekta. Sa toliko fajl sistema dostupnih na Linuxu, sasvim je prirodno pitati šta je posebno u vezi sa ZFS-om. Za razliku od drugih datotečnih sistema, to nije samo sistem datoteka, već i logički menadžer zvuka. Neke od karakteristika ZFS-a koje ga čine popularne su:

  • Data Integrity – data consistency and integrity are ensured through copy-on-write and checksum techniques
  • Pooling of storage space – available storage drives can be put together into a single pool called zpool
  • Software RAID – Setting up a raidz array is as simple as issuing a single command.
  • Inbuilt volume manager – ZFS acts as a volume manager as well.
  • Snaphots, clones, compression – these are some of the advanced features that ZFS provides.

ZFS je 128-bitni sistem datoteka i ima kapacitet za skladištenje 256 zetta bajtova! U ovom vodiču ćemo naučiti kako da instalirate, podesite i koristite neke važne ZFS naredbe na CentOS 7 serveru.

NAPOMENA: Deo instalacije je specifičan za CentOS server dok su komande česte na bilo kom Linux sistemu

terminologija

Pre nego što nastavimo dalje, razumećemo neke terminologije koje se najčešće koriste u ZFS-u.

bazen

Logička grupa disk jedinica. To je osnovni građevinski blok ZFS-a i odatle se odlagali prostor za skupove podataka.

Skupovi podataka

Komponente datotečnog sistema ZFS, odnosno datotečnog sistema, klonova, snimaka i zapremina, nazivaju se skupovima podataka.

Ogledalo

Virtuelni uređaj koji čuva identične kopije podataka na dva ili više diskova. U situacijama kada jedan disk ne uspije, isti podaci su dostupni i na drugim diskovima tog ogledala.

Rešavanje

Proces kopiranja podataka sa jednog diska na drugi u slučaju restauracije uređaja.

Čišćenje

Scrub se koristi za provjeru konzistentnosti u ZFS-u kao što je fsck korišten u drugim datotečnim sistemima

Instaliranje ZFS-a

Da bi instalirali ZFS na CentOS-u, potrebno je prvo postaviti EPEL spremište za podršku paketa, a zatim ZFS spremište za instaliranje potrebnih ZFS paketa.

Napomena: Molimo prefix sudo na sve komande ako niste root korisnik.

yum localinstall –nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

yum localinstall –nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

Sada instalirajte razvoj kernela i zfs pakete. Potrebni su razvojni paketi kernela, jer je ZFS izgrađen kao modul i ubačen u kernel.

yum instalirati kernel-devel zfs

Verify if the zfs module is inserted into the kernel using ‘lsmod’ command and if not, insert it manually using ‘modprobe’ command.

[root @ li1467-130 ~] # lsmod | grep zfs

[root @ li1467-130 ~] # modprobe zfs

[root @ li1467-130 ~] # lsmod | grep zfs
zfs 2790271 0
zunicode 331170 1 zfs
zavl 15236 1 zfs
zcommon 55411 1 zfs
znvpair 89086 2 zfs, zcommon
92029 3 zfs, zcommon, znvpair

Hajde da proverimo da li možemo da koristimo naredbe zfs:

[root @ li1467-130 ~] # zfs lista
nema skupova podataka

administracija

ZFS ima dva glavna programa, zpool i zfs. Iako se zpool bavi kreiranjem i održavanjem bazena pomoću diskova, zfs utility je odgovoran za kreiranje i održavanje skupova podataka.

zpool korisnost

Kreiranje i uništavanje bazena

Prvo proverite dostupne diskove za kreiranje skladišta za skladištenje.

[root @ li1467-130 ~] # ls -l / dev / sd *
brw-rw—- 1 root disk 8, 0 Mar 16 08:12 /dev/sda
brw-rw—- 1 root disk 8, 16 Mar 16 08:12 /dev/sdb
brw-rw—- 1 root disk 8, 32 Mar 16 08:12 /dev/sdc
brw-rw—- 1 root disk 8, 48 Mar 16 08:12 /dev/sdd
brw-rw—- 1 root disk 8, 64 Mar 16 08:12 /dev/sde
brw-rw—- 1 root disk 8, 80 Mar 16 08:12 /dev/sdf

Napravite bazu iz skupa uređaja.

zpool create <option> <pool name. <drive 1> <drive 2> …. <drive n>

[root @ li1467-130 ~] # zpool kreirati -f zfspool sdc sdd sde sdf

‘zpool status’ command displays the status of the available pools

[root @ li1467-130 ~] # status zpoola
bazen: zfspool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

greške: Nema poznatih grešaka

Proverite da li je kreiranje bazena bilo uspješno.

[root @ li1467-130 ~] # df -h
Veličina datoteke korišćene veličine datoteka Koristite% Mounted on
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / run
tmpfs 497M 0 497M 0% / sys / fs / grupa
tmpfs 100M 0 100M 0% / run / korisnik / 0
zfspool 3.7G 0 3.7G 0% / zfspool

As you can see, zpool has created a pool by name ‘zfspool’ of size 3.7 GB and has also mounted it in /zfspool.

To destroy a pool, use the ‘zpool destroy’ command

zpool destroy <ime pool>

[root @ li1467-130 ~] # zpool uništiti zfspool
[root @ li1467-130 ~] # status zpoola
nema bazena

Sada pokušajte da napravite jednostavan bazen za ogledalo.

zpool create <option> <pool name> mirror <drive 1> <drive 2>… <drive n>

Takođe možemo stvoriti više ogledala istovremeno ponavljajući ključnu riječ ogledala praćene pogonima.

[root @ li1467-130 ~] # zpool kreirati -f mpool ogledalo sdc sdd ogledalo sde sdf
[root @ li1467-130 ~] # status zpoola
bazen: mpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
ogledalo-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
ogledalo-1 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

greške: Nema poznatih grešaka

U gore navedenom primeru, napravili smo ogledalne bazove sa po dva diska.

Slično tome, možemo napraviti raidz bazen.

[root @ li1467-130 ~] # zpool kreirajte -f rpool raidz sdc sdd sde sdf
[root @ li1467-130 ~] # status zpoola
bazen: rpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

greške: Nema poznatih grešaka

Upravljanje uređajima u ZFS bazama

Kada se kreira bazen, moguće je dodati ili ukloniti hot rezervne dijelove i keš uređaje iz bazena, priključiti ili odvojiti uređaje iz ogledalih bazena i zamijeniti uređaje. Međutim, ne-redundantni i raidz uređaji ne mogu biti uklonjeni iz bazena. U ovom poglavlju ćemo videti kako izvoditi neke od ovih operacija.

I’m first creating a pool called ‘testpool’ consisting of two devices, sdc and sdd. Another device sde will then be added to this.

[root @ li1467-130 ~] # zpool kreirajte -f testpool sdc sdd

[root @ li1467-130 ~] # dodati testpool sde
[root @ li1467-130 ~] # status zpoola
bazen: testpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

Kao što je već pomenuto, ne mogu da uklonim ovaj novi dodati uređaj jer nije rezervni ili raidz bazen.

[root @ li1467-130 ~] # zpool ukloniti testpool sde
ne mogu ukloniti sde: samo neaktivni hot rezervni dijelovi, keš, vrhunski ili uređaji za evidenciju mogu se ukloniti

Ali mogu dodati rezervni disk u ovaj bazen i ukloniti ga.

[root @ li1467-130 ~] # zpool dodati testpool rezervni sdf
[root @ li1467-130 ~] # status zpoola
bazen: testpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
rezervni delovi
sdf AVAIL

greške: Nema poznatih grešaka
[root @ li1467-130 ~] # zpool ukloniti testpool sdf
[root @ li1467-130 ~] # status zpoola
bazen: testpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

Slično tome, možemo koristiti komandu za dodavanje kako bi dodali diskove u ogledalo ili bez ogledala i odvojili naredbu da odvojite diske iz ogledalnog bazena.

zpool attach <opcije> <ime bazena> <uređaj> <novi uređaj>

zpool detach <ime bazena> <uređaj>

When a device fails or gets corrupted, we can replace it using the ‘replace’ command.

zpool zameniti <opcije> <ime bazena> <uređaj> <novi uređaj>

Mi ćemo to testirati silom korumpirajući uređaj u ogledalu konfiguracije.

[root @ li1467-130 ~] # zpool kreiraj -f testpool mirror sdd sde

Ovo stvara ogledalni bazen koji se sastoji od diskova sdd i sde. Sada, namerno korumpirajte SDD disk tako što upišite nula u njega.

[root @ li1467-130 ~] # dd ako = / dev / nula od = / dev / sdd
dd: pisanje na '/ dev / sdd': na uređaju nema prostora
2048001 + 0 zapise
2048000 + 0 snima
1048576000 bajtova (1.0 GB) kopirana, 22.4804 s, 46.6 MB / s

We will use the ‘scrub’ command to detect this corruption.

[root @ li1467-130 ~] # zpool scrub testpool
[root @ li1467-130 ~] # status zpoola
bazen: testpool
stanje: ONLINE
status: Jedan ili više uređaja se ne mogu koristiti jer oznaka nedostaje ili
nevažeći. Postoje dovoljne replike da se bazen nastavi
funkcioniše u degradiranom stanju.
action: Replace the device using ‘zpool replace’.
pogledajte: http://zfsonlinux.org/msg/ZFS-8000-4J
skeniranje: popravljen popravak 0 u 0h0m sa 0 greškama u petak 18 09: 59: 40 2016
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
ogledalo-0 ONLINE 0 0 0
sdd UNAVAIL 0 0 0 oštećeni podaci
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

Sada ćemo zameniti sdd sdc.

[root @ li1467-130 ~] # zpool zamijeniti testpool sdd sdc; zpool status
bazen: testpool
stanje: ONLINE
scan: resulverted 83.5K u 0h0m sa 0 greškama u Pet Mar 18 10: 05: 17 2016
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
ogledalo-0 ONLINE 0 0 0
zamjenjuje 0 UNAVAIL 0 0 0
sdd UNAVAIL 0 0 0 oštećeni podaci
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

[root @ li1467-130 ~] # status zpoola
bazen: testpool
stanje: ONLINE
scan: resulverted 74.5K u 0h0m sa 0 greškama u Pet Mar 18 10: 00: 36 2016
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
ogledalo-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

Migracija bazena

Mi možemo migrirati skladišta za skladištenje između različitih hostova koristeći naredbe za izvoz i uvoz. Za to, diskovi koji se koriste u bazenu trebaju biti dostupni i od oba sistema.

[root @ li1467-130 ~] # zpool izvozni test
[root @ li1467-130 ~] # status zpoola
nema bazena

The command ‘zpool import’ lists all the pools that are available for importing. Execute this command from the system where you want to import the pool.

[root @ li1467-131 ~] # zpool import
bazen: testpool
id: 3823664125009563520
stanje: ONLINE
akcija: bazen se može uvoziti koristeći svoje ime ili numerički identifikator.
config:

testpool ONLINE
sdc ONLINE
sdd ONLINE
sde ONLINE

Sada uvozite potreban bazen

[root @ li1467-131 ~] # import import testpool
[root @ li1467-131 ~] # status zpoola
bazen: testpool
stanje: ONLINE
skeniranje: nijedan nije tražio
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

greške: Nema poznatih grešaka

iostat

Moguće je potvrditi io statistiku uređaja bazena pomoću komande iostat.

[root @ li1467-130 ~] # zpool iostat -v testu
Kapacitet operativnih propusnosti
bazen dodijeliti slobodno čitati pisati čitati pisati
———- —– —– —– —– —– —–
testni 1.80M 2.86G 22 27 470K 417K
sdc 598K 975M 8 9 200K 139K
sdd 636K 975M 7 9 135K 139K
sde 610K 975M 6 9 135K 139K
———- —– —– —– —– —– —–

zfs utility

Sada ćemo preći na zfs utility. Ovde ćemo pogledati kako kreirati, uništiti skupove podataka, kompresiju datotečnog sistema, kvote i snimke.

Kreiranje i uništavanje datotečnog sistema

Datoteka ZFS može se kreirati pomoću naredbe zfs create

zfs kreirajte <filesystem>

[root @ li1467-130 ~] # zfs stvoriti testpool / studente
[root @ li1467-130 ~] # zfs stvoriti testpool / profesore
[root @ li1467-130 ~] # df -h
Veličina datoteke korišćene veličine datoteka Koristite% Mounted on
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / run
tmpfs 497M 0 497M 0% / sys / fs / grupa
test 2.8G 0 2.8G 0% / testpool
tmpfs 100M 0 100M 0% / run / korisnik / 0
testpool / studenti 2.8G 0 2.8G 0% / testpool / studenti
testpool / profesori 2.8G 0 2.8G 0% / testpool / profesori

Iz gornjeg izlaza, zapazite da, iako u trenutku kreiranja datotečnog sistema nema tačke montiranja, tačka mountpoint se kreira koristeći istu vezu putanja sa bazom.

zfs kreira mogućnost korištenja -o sa njim pomoću kojih možemo odrediti opcije kao što su mountpoint, compression, quota, exec itd.

Možete da navedete raspoloživi fajl sistem koristeći zfs listu:

[root @ li1467-130 ~] # zfs lista
NAME je koristio AVAIL REFER MOUNTPOINT
test 100M 2.67G 19K / testpool
testpool / profesori 31K 1024M 20.5K / testpool / profesori
testpool / studenti 1.57M 98.4M 1.57M / testpool / studenti

Mi možemo uništiti datotečni sistem koristeći opciju uništiti

zfs uništi <filesystem>

kompresija

We will now understand how compression works in ZFS. Before we start using compression, we need to enable it using ‘set compression’

zfs set <kompresija = vrednost> <fajl sistem | zapremina | snapshot>

Kada se to uradi, kompresija i dekompresija se vrši transparentno na datotečnom sistemu na licu.

U našem primeru ću omogućiti kompresiju na studentskom direktoriju koristeći algoritam kompresije lz4.

[root @ li1467-130 ~] # kompresija zfs = lz4 testpool / studenti

Sada ću kopirati datoteku veličine 15M u ovaj fajl sistem i proveriti veličinu nakon kopiranja.

[root @ li1467-130 /] # cd / var / log
[root @ li1467-130 dnevnik] # du -h siguran
15M siguran

[root @ li1467-130 ~] # cp / var / log / secure / testpool / studenti /

[root @ li1467-130 učenici] # df -h.
Veličina datoteke korišćene veličine datoteka Koristite% Mounted on
testpool / studenti 100M 1.7M 99M 2% / testpool / studenti

Obratite pažnju da je veličina koja se koristi u datotečnom sistemu samo 1.7M dok je veličina datoteke 15M. Takođe možemo proveriti i odnos kompresije.

[root @ li1467-130 ~] # zfs dobijete testiranje kompresije
IME IMOVINE VREDNOSTI IMOVINE
testpool compressratio 9.03x –

Kvote i rezervacija

Let me explain quotas with a real life example. Suppose we have a requirement in a university to limit the disk space used by the filesystem for professors and students. Let us assume that we need to allocate 100MB for students and 1GB for professors. We can make use of ‘quotas’ in ZFS to fulfill this requirement. Quotas ensure that the amount of disk space used by a filesystem doesn’t exceed the limits set. Reservation helps in actually allocating and guaranteeing that the required amount of disk space is available for the filesystem.

zfs podesi kvota = <vrednost> <fajl sistem | zapremina | snapshot>

zfs postaviti rezervaciju = <vrednost> <fajl sistem> volumen> snimak>

[root @ li1467-130 ~] # zfs postavljena kvota = 100M testpool / studenti
[root @ li1467-130 ~] # zfs postaviti rezervaciju = 100M testpool / studenti
[root @ li1467-130 ~] # zfs lista
NAME je koristio AVAIL REFER MOUNTPOINT
test 100M 2.67G 19K / testpool
testpool / profesori 19K 2.67G 19K / testpool / profesori
testpool / studenti 1.57M 98.4M 1.57M / testpool / studenti

[root @ li1467-130 ~] # zfs postaviti kvotu = 1G testpool / profesori
[root @ li1467-130 ~] # zfs lista
NAME je koristio AVAIL REFER MOUNTPOINT
test 100M 2.67G 19K / testpool
testpool / profesori 19K 1024M 19K / testpool / profesori
testpool / studenti 1.57M 98.4M 1.57M / testpool / studenti

In the above example, we have allocated 100MB for students and 1GB for professors. Observe the ‘AVAIL’ column in ‘zfs list’. Initially they had the size of 2.67GB each and after setting the quota, the values have changed accordingly.

Snimci

Snapshots su samo za čitanje kopije ZFS datotečnog sistema u datom trenutku. Oni ne konzumiraju dodatni prostor u zfs bazenu. Možemo se vratiti u isto stanje u kasnijoj fazi ili izvući samo jedan ili niz datoteka u skladu sa zahtevima korisnika.

I will now create some directories and a file under ‘/testpool/professors’ from our previous example and then take a snapshot of this filesystem.

[root @ li1467-130 ~] # cd / testpool / profesori /

[root @ li1467-130 profesori] # mkdir matematika fizika hemija

[root @ li1467-130 profesori] # cat> qpaper.txt
Pitanje za godinu 2016-17
[root @ li1467-130 profesori] # ls -la
ukupno 4
drwxr-xr-x 5 root root 6 Mar 19 10: 34.
drwxr-xr-x 4 korijen root 4 Mar 19 09: 59 ..
drwxr-xr-x 2 root root 2 Mar 19 10: 33 hemija
drwxr-xr-x 2 root root 2 Mar 19 10: 32 matematika
drwxr-xr-x 2 root root 2 Mar 19 10: fizika 32
-rw-r–r– 1 root root 36 Mar 19 10:35 qpaper.txt

Da biste snimili snimak, koristite sledeću sintaksu:

zfs snimak <filesystem | volume @ <snap >>

[root @ li1467-130 profesori] # zfs snapshot testpool / profesori @ 03-2016
[root @ li1467-130 profesori] # zfs lista -t snapshot
NAME je koristio AVAIL REFER MOUNTPOINT
testpool/professors@03-2016 0 – 20.5K –

I’ll now delete the file that was created and extract it from the snapshots

[root @ li1467-130 profesori] # rm -rf qpaper.txt
[root @ li1467-130 profesori] # ls
matematika hemije matematike
[root @ li1467-130 profesori] # cd .zfs
[root @ li1467-130 .zfs] # cd snimak / 03-2016 /
[root @ li1467-130 03-2016] # ls
chemistry mathematics physics qpaper.txt

[root @ li1467-130 03-2016] # cp -a qpaper.txt / testpool / profesori /
[root @ li1467-130 03-2016] # cd / test / profesori /
[root @ li1467-130 profesori] # ls
chemistry mathematics physics qpaper.txt

Izbrisana datoteka se vratila na svoje mjesto.

Mi možemo popisati sve dostupne snimke pomoću zfs liste:

[root @ li1467-130 ~] # zfs lista -t snimak
NAME je koristio AVAIL REFER MOUNTPOINT
testpool/professors@03-2016 10.5K – 20.5K –

Finally, let’s destroy the snapshot using the zfs destroy command:

zfs uništi <filesystem | volume @ <snap >>

[root @ li1467-130 ~] # zfs uništiti testpool / profesore @ 03-2016

[root @ li1467-130 ~] # zfs lista -t snimak
nema skupova podataka

zaključak

U ovom članku naučili ste kako instalirati ZFS na CentOS 7 i koristiti neke osnovne i važne komande iz zpool i zfs utilities. Ovo nije sveobuhvatna lista. ZFS ima mnogo više mogućnosti i možete ih dalje istražiti od svog službena stranica.

Ostavite odgovor

Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.

GTranslate Your license is inactive or expired, please subscribe again!