Installer ZFS sur Ubuntu
Après mon puisant échec d'utilisation de RAID5 sur Ubuntu, j'ai décidé de repartir sur un système plus souple et performant appelé ZFS (Z File System).
Développé par Sun, ZFS est Open Source et un portage est disponible sur Ubuntu. Ce système a été développé pour pouvoir utiliser des capacités de stockage relativement importantes. Il n'est pas rare de voir des sociétés utiliser ZFS pour des systèmes de plusieurs Pétabytes.
Mais ZFS a également séduit le grand public car il permet de réaliser des snapshots à la volée, et surtout car il est robuste et performant.
De nombreux systèmes utilisent ce système de fichier. On pourra ainsi citer FreeNas qui est basé sur FreeBsd et ZFS.
Juste pour information, il faut savoir que ZFS utilise des zpools qui contiennent des zraid (equivalent de raid5) ou des zraid2 (équivalent de raid6). Chaque conteneur (zpool) peut avoir plusieurs grappes de disques (zraid). Pour plus d'informations théoriques, rendez vous sur wikipédia
.
Le gros avantages est que les différents calculs de checksum et parité se font sur les grappes (raidz) et non sur l'intégralité du zpool.
Par exemple, si vous avez un zpool qui contient 4 zraids et qu'un des zraids vient à défaillir, alors le rebuild ne portera que sur ce zraid et pas sur tout le zpool.
ATTENTION: si vous perdez un raidz, alors tout votre zpool sera perdu.
Veuillez noter que tous mes tests ont été faits sur Oneiric.
Installation de ZFS sur Ubuntu
Pour installer ZFS sur Ubuntu, il faut installer les packets suivant:
aptitude install build-essential gawk alien fakeroot linux-header-$(uname –r) install zlib1g-dev uuid-dev libblkid-dev libselinux1-dev python-software-properties
Ensuite il faut ajouter dépôt ppa pour pouvoir installer zfs en mode natif (il existe zfsonlinux et zfs-fuse):
add-apt-repository ppa :zfs-native/stable aptitude update aptitude install ubuntu-zfs
Vous n'avez plus qu'à rebooter votre Ubuntu et ZFS est installé
Préparation des disques durs pour ZFS
Dans notre exemple, nous allons créer un zpool contenant un raidz de 5 disques de 2To.
La première chose à faire est de formatter et préparer les disques pour ZFS. Les commandes suivantes sont à exécuter pour chaque disque (sdb, sdc, sdb, sde et sdf):
parted /dev/sdb mklabel gpt
Création du zpool et du zraid
Pour créer le zpool et le zraid c'est super facile. Il suffit de taper la commande suivante:
zpool create -o ashift=12 dataz raidz /dev/sd[bcdef]
ATTENTION: il faut mieux utiliser les id de disques:
ls -l /dev/disk/by-id
zpool create -o ashift=12 zfilms raidz /dev/disk/by-id/scsi-SATA_ST2000DL003-9VT5YD6Y15B /dev/disk/by-id/scsi-SATA_ST2000DL003-9VT5YD718LS /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0KV78 /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0KX6L /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0LE5T
Vous noterez que mon zpool s'appellera "dataz" et qu'il contiendra un raidz de 5 disques.
L'argument "-o ashift=12" permet de forcer un alignement des partitions sur 4k, ce qui est nécessaire pour certains disques durs (les WD 2to green par exemple).
Par defaut ZFS crée un point de montage du même nom que le zpool. En faisant un "df -H" vous devrez voir votre nouveau point de montage (dataz dans mon exemple)
root@jhdserver:/home/jhd/Downloads# df -H Filesystem Size Used Avail Use% Mounted on /dev/sda1 489G 19G 446G 4% / udev 2.0G 4.1k 2.0G 1% /dev tmpfs 778M 1.6M 777M 1% /run none 5.3M 4.1k 5.3M 1% /run/lock none 2.0G 103k 2.0G 1% /run/shm dataz 7.9T 608G 7.3T 8% /dataz
Quelques commandes utiles
Pour surveiller votre zpool, il existe plusieurs commandes pratiques:
- zfs list : liste les pools
- zpool status -v : donne l’état de chacun des pools. Cette commande détaille les erreurs lorsqu’il y en a.
- zpool iostat -v dataz 15: affichage des statistiques d’entrées/sorties des pools tout en indiquant la répartition des données et de ces entrées/sorties sur chacun des fichiers ou périphériques constituant le pool.
- zpool scrub dataz : sert a verifier les checksums des données et à corriger les erreurs sur l'array. Je vous conseille de lancer cette commande une fois par mois.
Astuce
ZFS utilise principalement de la mémoire. Si votre machine ne dispose pas d'une grande quantité de RAM, il peut être intéressant de limiter son utilisation via la commande suivante:
set zfs:zfs_arc_max:536870912
Cette commande va alors limiter l'utilisation de la mémoire par ZFS à 512Mo





ZeM.fr est un blog que j'ai lancé afin de stocker les informations qui me semblent importantes.