ZFS ha combinato il gestore del volume e il filesystem con diverse funzionalità avanzate.
Questa è la prima parte di una serie di articoli su ZFS.
Nell'articolo forniremo un'introduzione di alto livello a ZFS, spiegheremo come installare ZFS su Linux, creare un pool ZFS e diversi comandi ZFS zpool.
1. Introduzione a ZFS
Le seguenti sono alcune delle caratteristiche del filesystem ZFS:
- Protezione contro il danneggiamento dei dati
- Supporto per capacità di archiviazione elevate
- Compressione dati efficiente
- Scatta istantanee del filesystem
- Cloni copia su scrittura
- Supporto RAID Z
- Verifica dell'integrità
- Riparazione automatica e supporto per ACL NFSV4 nativa
Questo è stato sviluppato originariamente da Sun Microsystems per la piattaforma Solaris. Nel 2010, Oracle ha acquisito i microsistemi Sun e ha apportato molti miglioramenti al filesystem ZFS.
ZFS sta diventando popolare di recente su Linux poiché è diventato più stabile.
Il port ZFS su Linux è prodotto dal Lawrence Livermore National Laboratory (LLNL).
ZFS su Linux è un modulo del kernel che puoi scaricare, compilare e installare. Non è necessario applicare patch o ricompilare il kernel.
Puoi scaricare i pacchetti sorgente per la tua rispettiva distribuzione del sistema operativo da qui.
2. Installa ZFS su Linux
In questo articolo, installeremo ZFS sul server CentOS. Ma i comandi zfs menzionati di seguito sono gli stessi per quasi tutte le distribuzioni su distribuzioni Linux eccetto la parte di installazione.
Esegui i seguenti comandi yum per installare ZFS su Redhat / CentOS.
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install kernel-devel zfs
Assicurati che tutte le dipendenze siano soddisfatte. Una delle dipendenze in cui l'installazione normalmente non riesce, sarebbe un requisito per installare il compilatore GCC. In questo caso, installa il compilatore GCC prima di installare ZFS.
Assicurati che i moduli ZFS siano caricati con il comando lsmod come mostrato di seguito:
# lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs,zcommon,znvpair,zavl,zunicode
In una nota correlata, potresti voler leggere le nozioni di base su come vengono creati i moduli del kernel caricabili Linux.
Abbiamo aggiunto alcuni dischi su questo server (da /dev/sdb a /dev/sdf) per testare la funzionalità ZFS.
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
3. Crea uno zpool
Comando Zpool utilizzato per configurare gli storage pool in ZFS. Il pool di archiviazione è una raccolta di dispositivi che fornisce archiviazione fisica e replica dei dati per i set di dati zfs.
Quanto segue crea uno zpool.
# zpool create -f mypool raidz sdb sdc sdd sde sdf
Nell'esempio sopra:
- create sta per creare un nuovo pool.
- L'opzione -f consiste nell'ignorare le etichette delle partizioni del disco poiché si tratta di nuovi dischi
- raidz è il livello del raid. RAIDZ non è altro che la variante di RAID-5 che consente una migliore distribuzione sulla parità ed elimina il buco di scrittura "RAID-5" (incoerenza di dati e parità dopo una perdita di alimentazione).
- Un gruppo raidz può avere parità singola, doppia o di tribù, il che significa che può sostenere rispettivamente uno, due o tre fallimenti senza perdere alcun dato. I dati e la parità vengono sottoposti a striping su tutti i dischi all'interno di un gruppo raidz.
Successivamente, verifica lo stato dello zpool appena creato.
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors
Una volta creato il pool, se esegui df –h, vedrai che il pool appena creato viene montato automaticamente sul mountpount.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool
4. Crea un pool con mirroring
Per creare un pool con mirroring, usa il comando zpool create con le seguenti opzioni.
Se uno qualsiasi dei dischi nel particolare gruppo di mirror è guasto, l'altro disco conserva ancora i dati. Non appena il disco guasto viene sostituito, il contenuto viene eseguito nuovamente (noto anche come resilvering) sul disco appena sostituito.
# zpool create -f mypool mirror sdb sdc mirror sdd sde
Quindi, verifica lo stato dello zpool con mirroring che abbiamo appena creato:
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors
5. Importazione ed esportazione Zpool
In alcuni casi potrebbe essere necessario migrare un pool zfs tra i sistemi.
ZFS lo rende possibile esportando un pool da un sistema e importandolo in un altro sistema.
Per esportare qualsiasi pool, utilizzare il comando zpool export e il comando zpool import viene utilizzato per importare il pool come mostrato nell'esempio seguente:
# zpool export mypool # zpool import mypool
6. Visualizza le statistiche di I/O del Pool ZFS
Per visualizzare le statistiche di I/O di zpool, utilizzare il comando zpool iostat come mostrato di seguito:
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- -----
7. Elimina un pool ZFS
Per distruggere un pool, usa il comando zpool destroy come mostrato di seguito:
# zpool destroy mypool
8. Sostituisci il disco danneggiato nel pool ZFS
Per sostituire un disco, dopo un guasto o un danneggiamento, utilizzare il comando seguente:
# zpool replace mypool sde sdf
9. Espandi ZFS Pool con il nuovo disco
Per espandere zpool aggiungendo un nuovo disco, utilizzare il comando zpool come indicato di seguito:
# zpool add -f mypool sde
10. Aggiungi un disco di riserva al pool ZFS
Puoi anche aggiungere un disco di riserva al pool zfs utilizzando il comando seguente, aggiungendo un dispositivo di riserva a un pool zfs.
I dischi guasti vengono automaticamente sostituiti dal dispositivo di riserva e l'amministratore può sostituire i dischi guasti in un secondo momento.
Tieni presente che puoi anche condividere il dispositivo di riserva tra più pool ZFS.
# zpool add -f mypool spare sde
Nella parte successiva dell'articolo, spiegheremo come utilizzare i pool ZFS per creare il filesystem ZFS, montare il filesystem ZFS e manipolarlo dalla riga di comando.