GNU/Linux >> Linux Esercitazione >  >> Cent OS

Una guida per installare e utilizzare ZFS su CentOS 7

ZFS, la forma abbreviata di Zettabyte Filesystem, è un filesystem avanzato e altamente scalabile. È stato originariamente sviluppato da Sun Microsystems e ora fa parte del progetto OpenZFS. Con così tanti filesystem disponibili su Linux, è del tutto naturale chiedersi cosa c'è di speciale in ZFS. A differenza di altri filesystem, non è solo un filesystem ma anche un gestore di volumi logici. Alcune delle caratteristiche di ZFS che lo rendono popolare sono:

  • Integrità dei dati:la coerenza e l'integrità dei dati sono garantite attraverso tecniche di copia su scrittura e checksum
  • Pooling dello spazio di archiviazione:le unità di archiviazione disponibili possono essere riunite in un unico pool chiamato zpool
  • Software RAID:configurare un array raidz è semplice come eseguire un singolo comando.
  • Gestione del volume integrato:ZFS funge anche da gestore del volume.
  • Istantanee, cloni, compressione:queste sono alcune delle funzionalità avanzate fornite da ZFS.

ZFS è un filesystem a 128 bit e ha la capacità di memorizzare 256 zetta byte! In questa guida impareremo come installare, configurare e anche utilizzare alcuni importanti comandi ZFS su un server CentOS 7.

NOTA:la parte di installazione è specifica per il server CentOS mentre i comandi sono comuni su qualsiasi sistema Linux

Terminologia

Prima di andare avanti, cerchiamo di comprendere alcune delle terminologie comunemente utilizzate in ZFS.

Piscina

Raggruppamento logico di unità di archiviazione. È l'elemento costitutivo di base di ZFS ed è da qui che lo spazio di archiviazione viene allocato per i set di dati.

Set di dati

I componenti del filesystem ZFS, vale a dire filesystem, cloni, snapshot e volumi, sono indicati come set di dati.

Specchio

Un dispositivo virtuale che memorizza copie di dati identiche su due o più dischi. In situazioni in cui un disco si guasta, gli stessi dati sono disponibili su altri dischi di quel mirror.

Riargentatura

Processo di copia dei dati da un disco all'altro in caso di ripristino di un dispositivo.

Scrub

Scrub viene utilizzato per il controllo della coerenza in ZFS come viene utilizzato fsck in altri filesystem

Installazione di ZFS

Per installare ZFS su CentOS, dobbiamo prima configurare il repository EPEL per supportare i pacchetti e quindi il repository ZFS per installare i pacchetti ZFS richiesti.

Nota:se non sei l'utente root, anteponi sudo a tutti i comandi.

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 

Ora installa lo sviluppo del kernel e i pacchetti zfs. I pacchetti di sviluppo del kernel sono necessari poiché ZFS è compilato come modulo e inserito nel kernel.

yum install kernel-devel zfs 

Verifica se il modulo zfs è inserito nel kernel usando il comando 'lsmod' e, in caso contrario, inseriscilo manualmente usando il comando 'modprobe'.

[root@li1467-130 ~]# lsmod |grep zfs[root@li1467-130 ~]# modprobe zfs[root@li1467-130 ~]# lsmod |grep zfszfs 2790271 0zunicode 331170 1 zfszavl 15236 1 zfszcommon 55411 1 zfsznvpair 89086 2 zfs,zcommonspl 92029 3 zfs,zcommon,znvpair 

Verifichiamo se siamo in grado di utilizzare i comandi zfs:

[root@li1467-130 ~]# zfs listno set di dati disponibili 

Amministrazione

ZFS ha due utilità principali, zpool e zfs. Mentre zpool si occupa della creazione e della manutenzione dei pool utilizzando i dischi, l'utilità zfs è responsabile della creazione e della manutenzione dei set di dati.

Utility zpool

Creazione e distruzione di pool

Per prima cosa verifica i dischi disponibili per creare uno storage pool.

[root@li1467-130 ~]# ls -l /dev/sd*brw-rw---- 1 disco di root 8,  0  16 marzo 08:12 /dev/sdabrw-rw--- - 1 disco di root 8, 16 mar 16 08:12 /dev/sdbbrw-rw---- 1 disco di root 8, 32 mar 16 08:12 /dev/sdcbrw-rw---- 1 disco di root 8, 48 mar 16 08:12 /dev/sddbrw-rw---- 1 disco di root 8, 64 16 marzo 08:12 /dev/sdebrw-rw---- 1 disco di root 8, 80 16 marzo 08:12 /dev/sdf  

Crea un pool da un set di unità.

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

Il comando 'zpool status' mostra lo stato dei pool disponibili

[root@li1467-130 ~]# zpool statuspool:zfspoolstate:ONLINEscan:nessuno richiestoconfig:NAME STATE READ WRITE CKSUMzfspool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0errors :Nessun errore di dati noto 

Verifica se la creazione del pool è riuscita.

  [root@li1467-130 ~]# df -hfilesystem Dimensione usata Disponibile% montato su/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%/sys/fs/cgrouptmpfs 100m 0 100m 0%/run/utente/0zfspool 3.7g 0 3.7g 0%/zfspool  

Come puoi vedere, zpool ha creato un pool chiamato 'zfspool' di dimensioni 3,7 GB e lo ha anche montato in /zfspool.

Per distruggere un pool, usa il comando 'zpool destroy'

zpool destroy [root@li1467-130 ~]# zpool destroy zfspool[root@li1467-130 ~]# zpool statusno pool disponibili 

Proviamo ora a creare un semplice pool di mirror.

zpool create   mirror  ...  

Possiamo anche creare più mirror contemporaneamente ripetendo la parola chiave mirror seguita dalle unità.

[root@li1467-130 ~]# zpool create -f mpool mirror sdc sdd mirror sde sdf[root@li1467-130 ~]# zpool statuspool:mpoolstate:ONLINEscan:nessuno richiestoconfig:NOME STATO LETTURA SCRITTURA 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 0errors:Nessun errore di dati noto 

Nell'esempio sopra, abbiamo creato pool di mirror ciascuno con due dischi.

Allo stesso modo, possiamo creare un pool raidz.

[root@li1467-130 ~]# zpool create -f rpool raidz sdc sdd sde sdf[root@li1467-130 ~]# zpool statuspool:rpoolstate:ONLINEscan:nessuno richiestoconfig:NOME STATO LEGGI SCRIVI 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 0errors:Nessun errore di dati noto 

Gestione dei dispositivi nei pool ZFS

Una volta creato un pool, è possibile aggiungere o rimuovere hot spare e dispositivi cache dal pool, collegare o scollegare dispositivi dai pool con mirroring e sostituire i dispositivi. Ma i dispositivi non ridondanti e raidz non possono essere rimossi da un pool. Vedremo come eseguire alcune di queste operazioni in questa sezione.

Sto prima creando un pool chiamato "testpool" composto da due dispositivi, sdc e sdd. A questo verrà quindi aggiunto un altro dispositivo sde.

[root@li1467-130 ~]# zpool create -f testpool sdc sdd[root@li1467-130 ~]# zpool add testpool sde[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan :nessuno richiestoconfig:NOME STATO LETTURA SCRITTURA CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0errors:Nessun errore di dati noto 

Come accennato in precedenza, non posso rimuovere questo dispositivo appena aggiunto in quanto non è un pool ridondante o raidz.

[root@li1467-130 ~]# zpool remove testpool sdecannot remove sde:possono essere rimossi solo hot spare, cache, dispositivi di primo livello o log inattivi 

Ma posso aggiungere un disco di riserva a questo pool e rimuoverlo.

[root@li1467-130 ~]# zpool add testpool spare sdf[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:nessuno richiestoconfig:NAME STATE READ WRITE CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sparessdf AVAILerrors:Nessun errore di dati noto[root@li1467-130 ~]# zpool remove testpool sdf[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:nessuno richiestoconfig:NAME        STATE Leggi scrivi cksumtestpool online 0 0 0sdc online 0 0 0sdd online 0 0 0sde online 0 0 0errors:nessun errore di dati noto  

Allo stesso modo, possiamo usare il comando attach per collegare i dischi a un pool con mirroring o non mirror e il comando stacca per staccare i dischi da un pool con mirroring.

zpool allegato    zpool scollega   

Quando un dispositivo si guasta o viene danneggiato, possiamo sostituirlo utilizzando il comando 'sostituisci'.

zpool sostituisci     

Lo verificheremo corrompendo con forza un dispositivo in una configurazione con mirroring.

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

Questo crea un pool di mirror composto da dischi sdd e sde. Ora corromperemo deliberatamente l'unità sdd scrivendoci degli zeri.

[root@li1467-130 ~]# dd if=/dev/zero of=/dev/sdddd:scrittura su '/dev/sdd':nessuno spazio rimasto su device2048001+0 record in2048000+0 record out1048576000 byte (1,0 GB) copiati, 22,4804 s, 46,6 MB/s 

Useremo il comando 'scrub' per rilevare questa corruzione.

[root@li1467-130 ~]# zpool scrub testpool[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEstatus:Impossibile utilizzare uno o più dispositivi perché l'etichetta è mancante o non valida. Esistono repliche sufficienti per consentire al pool di continuare a funzionare in uno stato degradato. azione:sostituire il dispositivo utilizzando 'zpool replace'.see:http://zfsonlinux.org/msg/ZFS-8000-4Jscan:scrub riparato 0 in 0h0m con 0 errori on Ven Mar 18 09:59:40 2016config:NAME STATE READ WRITE CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdd NON DISPONIBILE 0 0 0 datasde danneggiato ONLINE 0 0 0errors:Nessun errore di dati noto 

Ora sostituiremo sdd con sdc.

[root@li1467-130 ~]# zpool sostituire testpool sdd sdc; zpool statuspool:testpoolstate:ONLINEscan:resilvered 83.5K in 0h0m con 0 errori su Ven Mar 18 10:05:17 2016config:NAME STATE READ WRITE CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0replacecing-0 NON DISPONIBILE 0 0 0sdd NON DISPONIBILE 0 0 0 datasdc danneggiato ONLINE 0 0 0sde ONLINE 0 0 0errors:Nessun errore di dati noto[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:resilvered 74.5K in 0h0m con 0 errori su Ven Mar 18 10:00:36 2016config :NOME STATO LETTURA SCRITTURA CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdc ONLINE 0 0 0sde ONLINE 0 0 0errors:Nessun errore di dati noto 

Migrazione dei pool

Possiamo migrare i pool di archiviazione tra diversi host utilizzando i comandi di esportazione e importazione. Per questo, i dischi utilizzati nel pool dovrebbero essere disponibili da entrambi i sistemi.

[root@li1467-130 ~]# zpool export testpool[root@li1467-130 ~]# zpool statusnessun pool disponibili 

Il comando 'zpool import' elenca tutti i pool disponibili per l'importazione. Esegui questo comando dal sistema in cui desideri importare il pool.

[root@li1467-131 ~]# zpool importpool:testpoolid:3823664125009563520state:ONLINEazione:Il pool può essere importato utilizzando il suo nome o identificatore numerico.config:testpool ONLINEsdc ONLINEsdd ONLINEsde ONLINE 

Ora importa il pool richiesto

[root@li1467-131 ~]# zpool import testpool[root@li1467-131 ~]# zpool statuspool:testpoolstate:ONLINEscan:nessuno richiestoconfig:NAME STATE READ WRITE CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0errors:Nessun errore di dati noto 

iostato

È possibile verificare le statistiche io dei dispositivi del pool utilizzando il comando iostat.

  [root@li1467-130 ~]# zpool iostat -v testpoolcapacity operazioni bandwidthpool alloc lettura gratuita scrivi scrivi ---------- ----- ------ --- ----- ----- ----- TestPool 1.80m 2.86g 27 27 470K 417KSDC 598K 975M 8 9 200k 139ksdd 636k 975m 7 9 135k 139ksde 610k 975m 6 9 135k 139k ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----   -----     -----           -----          -----               -----  ----- 

Utilità zfs

Passiamo ora all'utilità zfs. Qui daremo un'occhiata a come creare, distruggere set di dati, compressione del filesystem, quote e snapshot.

Creazione e distruzione del filesystem

Il filesystem ZFS può essere creato usando il comando zfs create

zfs crea  
[root@li1467-130 ~]# zfs create testpool/students[root@li1467-130 ~]# zfs create testpool/professors[root@li1467-130 ~]# df -hFilesystem                    Size             Usato            Avail % Montato su/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%/sys/fs/fs/cgrauptpaol 2.8 2.8 G 0 2,8G 0%/TestPooltmpfs 100m 0 100m 0%/RUN/USER/0TESTPOOL/Studenti 2.8G    0         2.8G             0%            /testpool/studentstestpool/professors  2.8G                   0         2.8G             0%  

Dall'output di cui sopra, osserva che sebbene non sia stato fornito alcun punto di montaggio al momento della creazione del filesystem, il punto di montaggio viene creato utilizzando la stessa relazione di percorso di quella del pool.

zfs create consente di utilizzare -o con esso utilizzando il quale possiamo specificare opzioni come mountpoint, compressione, quota, exec ecc.

Si può elencare il filesystem disponibile usando zfs list:

; /codice>

Possiamo distruggere un filesystem usando l'opzione di distruzione

zfs distrugge  

Compressione

Ora capiremo come funziona la compressione in ZFS. Prima di iniziare a usare la compressione, dobbiamo abilitarla usando 'imposta compressione'

zfs impostato   

Una volta fatto ciò, la compressione e la decompressione avvengono al volo sul filesystem in modo trasparente.

Nel nostro esempio, abiliterò la compressione sulla directory degli studenti utilizzando l'algoritmo di compressione lz4.

[root@li1467-130 ~]# zfs set compression=lz4 testpool/students 

Ora copierò un file di dimensioni 15M in questo filesystem e verificherò le dimensioni una volta copiato.

[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 studenti]# df -h .Filesystem               Dimensioni     Usato   Avail    Use%      Montato sutestpool/students   100M   1,7M   99M        2%      /testpool/students 

Si noti che la dimensione utilizzata nel filesystem è solo 1,7 M mentre la dimensione del file era 15 M. Possiamo anche controllare il rapporto di compressione..

[root@li1467-130 ~]# zfs get compressratio testpoolNAME      PROPERTY         VALUE            SOURCEtestpool    compressratio     9.03x               -

Quote e prenotazione

Lascia che ti spieghi le quote con un esempio di vita reale. Supponiamo di avere un requisito in un'università per limitare lo spazio su disco utilizzato dal filesystem per professori e studenti. Assumiamo di dover allocare 100 MB per gli studenti e 1 GB per i professori. Possiamo utilizzare le "quote" in ZFS per soddisfare questo requisito. Le quote assicurano che la quantità di spazio su disco utilizzata da un filesystem non superi i limiti impostati. La prenotazione aiuta nell'allocazione effettiva e nella garanzia che la quantità di spazio su disco richiesta sia disponibile per il filesystem.

zfs imposta quota= zfs imposta prenotazione=  
[root@li1467-130 ~]# zfs set quota=100M testpool/students[root@li1467-130 ~]# zfs set prenotazione=100M testpool/students[root@li1467-130 ~]# zfs Elenco Nome usate Disponibile Riferisci MountPointTestPool 100m 2.67G 19K/TestPooltestPool/Professori 19K 2.67G 19K/TestPool/ProfessorstestPool/Students 1.57m 98.4M 1.57M/TestPool/Students [root@li1467-130 ~]# ZFS set quota =1g TestPool/Professors Professors [root@li1467-130 ~]# zfs listName usate disponibile fare riferimento a MountPointTestPool 100m 2.67G 19K/TestPooltestPool/Professors 19K 1024M 19K/TestPool/ProfessorstestPool/Students 1.57M 98,4M 1.57M/Studenti  

Nell'esempio sopra, abbiamo allocato 100 MB per gli studenti e 1 GB per i professori. Osservare la colonna 'AVAIL' in 'zfs list'. Inizialmente avevano la dimensione di 2,67 GB ciascuno e dopo aver impostato la quota, i valori sono cambiati di conseguenza.

Istantanee

Gli snapshot sono copie di sola lettura del filesystem ZFS in un determinato momento. Non consumano spazio extra nella piscina zfs. Possiamo ripristinare lo stesso stato in una fase successiva o estrarre solo un singolo o un insieme di file secondo i requisiti dell'utente.

Ora creerò alcune directory e un file in '/testpool/professors' dal nostro esempio precedente e poi farò un'istantanea di questo filesystem.

[root@li1467-130 ~]# cd /testpool/professors/[root@li1467-130 professors]# mkdir matematica fisica chimica[root@li1467-130 professori]# cat> qpaper.txt Questionario per l'anno 2016-17[root@li1467-130 professors]# ls -latotal 4drwxr-xr-x  5  root root    6   19 marzo 10:34 .drwxr-xr-x  4  root root    4   19 marzo 09:59 ..drwxr- xr-x  2  root root    2   19 marzo 10:33 chemistrydrwxr-xr-x  2  root root    2   19 marzo 10:32 mathsdrwxr-xr-x  2  root root    2   19 marzo 10:32 physics-rw-r--r-- 1  root root  36   19 marzo 10:35 qpaper.txt 

Per scattare un'istantanea, utilizza la seguente sintassi:

istantanea zfs 
> 
  [root@li1467-130 professori]# zfs snapshot testpool/professori@03-2016 [root@li1467-130 professori]# zfs elenco -t snapshotname usate usate refer mountpointtestpool/professori@03-2016 0- 20.5K          - 

Ora eliminerò il file che è stato creato e lo estrarrò dagli snapshot

[root@li1467-130 professors]# rm -rf qpaper.txt[root@li1467-130 professors]# lschimica matematica fisica[root@li1467-130 professori]# cd .zfs[root@li1467- 130 .zfs]# cd snapshot/03-2016/[root@li1467-130 03-2016]# lschemistry matematica fisica 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]# lschemistry matematica fisica qpaper.txt 

Il file eliminato è tornato al suo posto.

Possiamo elencare tutte le istantanee disponibili usando zfs list:

  [root@li1467-130 ~]# zfs elenco -t snapshotname usate disponibile fai riferimento a mountpointtestpool/professori@03-2016 10.5k -20.5k - 

Infine, distruggiamo lo snapshot usando il comando zfs destroy:

zfs destroy 
> 
[root@li1467-130 ~]# zfs destroy testpool/professors@03-2016[root@li1467-130 ~]# zfs list -t snapshotno set di dati disponibili 

Conclusione

In questo articolo, hai imparato come installare ZFS su CentOS 7 e utilizzare alcuni comandi di base e importanti dalle utility zpool e zfs. Questa non è una lista esauriente. ZFS ha molte più capacità e puoi esplorarle ulteriormente dalla sua pagina ufficiale.


Cent OS
  1. Come installare e utilizzare PHP Composer su CentOS 7

  2. Come installare e utilizzare ifconfig su CentOS 7

  3. Come installare e utilizzare Docker su CentOS 7

  4. Come installare e utilizzare Docker Compose su CentOS 7

  5. Come installare e utilizzare TeamSpeak Server su CentOS 7

Come installare e utilizzare SSHFS su CentOS 7

Installa e usa Docker Compose su CentOS 8

Installa e usa NoMachine Remote Desktop su CentOS 8

Come installare e utilizzare TermRecord su CentOS 8

Come installare e utilizzare TermRecord su CentOS 8

Come installare e utilizzare Traceroute su CentOS 7