Premier Training & Business Partner Red Hat

ZFS su CentOS 6.x

Mirko Resca
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

zfs linux ZFS è, a mio modesto parere, uno dei FileSystem più flessibili e gestibile che siano mai stati prodotti. Lo sviluppo è da attribuire ai laboratori a Sun Microsystems. Questo FS entra sul mercato in modo ufficiale con il primo rilascio di Solaris 10 nel lontano 2005. Nel corso degli anni ha raggiunto un estremo livello di robustezza ed affidabilità da poter essere impiegato in ambienti mission e business critical. ZFS è un file system a 128 bit: può quindi fornire uno spazio di 16 miliardi di miliardi di volte la capacità dei file system a 64 bit. I limiti del ZFS sono concepiti per essere così ampi da non essere mai raggiunti in una qualunque operazione pratica. ZFS utilizza il metodo transazionale ad oggetti copy-on-write. Tutti i puntatori ai blocchi contengono un checksum a 256 bit. Il blocco viene controllato ad ogni lettura. I blocchi contenenti dati non vengono mai sovrascritti: viene invece allocato un nuovo blocco dove vengono scritti i dati modificati; ogni blocco metadati che faceva riferimento al vecchio blocco viene riallocato. Per ridurre l’overhead, le scritture multiple vengono raggruppate in transazioni. Per le suo doti di stabilità e facilità d’uso è stato messo in pratica il porting in ambiente Linux. Ho avuto modo di testarlo su diverse distribuzioni, ma resto fedele a quella che per me rimane la più stabile ed affidabile nello scenario odierno: CentOS/RHEL. Su entrambe le distribuzioni è stato testato per diverso tempo e alla fine portato in produzione su diversi ambienti: dai Web Server ai File Server fino ai più critici DB Server con Oracle DB. Non sono mai stati rilevati problemi di corruzione dei dati. Vi è da indicare che non esiste ancora la policy per SELinux quindi per forza di cose, quest’ultimo va disabilitato o impostato in modalità “permissive”. Passiamo alla parte pratica:

cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted

Procediamo con l’installazione di ZFS tramire l’rpm che ci viene fornito direttamente dal mantainer:

$ sudo yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release-1-3.el6.noarch.rpm
$ sudo yum install zfs

Attendiamo l’installazione e procediamo alla creazione del POOL ZFS e degli ZFS. ZFS lavora molto bene con i dischi interi piuttosto che son le partizioni, quindi il consiglio è quello di non partizioare il disco e darlo in pasto per intero. Nel nostro caso il disco da utilizzare sarà lo /dev/sdd zpool create -f <pool_name> /dev/sdd Volendo creare una struttura che ospiterà un DB ho assegnato il nome del pool ORA_DB zpool create -f ORA_DB /dev/sdd

Disk /dev/sdd: 214.7 GB, 214748364800 bytes
256 heads, 63 sectors/track, 26006 cylinders, total 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdd1 1 419430399 209715199+ ee GPT

Fatto ciò possiamo procedere con la creazione degli ZFS

zfs create ORA_DB/u01
df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/sda1                   15G  6.9G  6.9G  50% /
tmpfs                       4.9G    0  4.9G   0% /dev/shm
/dev/sda2                   15G  355M   14G   3% /var

ORA_DB/u01                 161G  3.7G  157G   3% /oracle/u01
ORA_DB/u02                 162G  5.1G  157G   4% /oracle/u02
ORA_DB/u03                 161G  3.5G  157G   3% /oracle/u03

Come si può notare i FileSystem di sistema vengono referenziati tramite “Block Device” e “mountpoint” mentre gli ZFS hanno come riferimento il POOL e lo ZFS.

Info about author

Mirko Resca