ZFS sur Debian GNU/Linux

Références

Installation des outils

# echo 'deb http://archive.zfsonlinux.org/debian wheezy-daily main' > /etc/apt/sources.list.d/zfsonlinux.list

# apt-get update
# apt-get install debian-zfs

Configuration des disques

Lister les 'pools' disponibles:

# zfs list
no datasets available

# zpool status
no pools available

Créer un nouveau pool régulier (dynamic stripe pool, i.e. RAID-0) avec tous les disques:

# zpool create -f foostore /dev/sdXX1 /dev/sdXX2 /dev/sdXX3

(où "foostore" deviendra aussi le nom et mount-point du pool, donc le pool sera monté comme /foostore).

Si on a 3 disques ou plus, on peut faire du RAID-Z:

# zpool create -f foostore raidz /dev/sdXX1 /dev/sdXX2 /dev/sdXX3

Mais si on a juste 2 disques, on peut faire un mirroir (i.e. RAID 1):

#  zpool create -f foostore mirror /dev/sdXX1

C'est ce que j'ai fait dans mon cas, car j'ai juste 2 disques.

Résultat:

# df -h
Sys. de fichiers                           Taille Utilisé Dispo Uti% Monté sur
foostore                                     2,7T       0  2,7T   0% /foostore

Maintenant on peut créer un espace général pour le stockage:

# zfs create foostore/home

Résultat:

# df -h
Sys. de fichiers                           Taille Utilisé Dispo Uti% Monté sur
foostore                                     2,7T       0  2,7T   0% /foostore
foostore/home                                2,7T       0  2,7T   0% /foostore/home

Pour créer un volume pour une VM (ref):

# zfs create -V 20G foostore/vm-foobar

http://docs.oracle.com/cd/E23120_01/html/821-2854/usingzfswithvirtualdisks.html

Espace occupé par les snapshots:

# zfs list -o space

Lister les snapshots:

zfs list -t snapshot

Migrer une partition d'un pool vers un autre

Sur un système j'ai 2 disques rotatifs en mirroir et 2 disques SSD mirroirs (les uns pour du stockage long terme et sauvegardes, les autres pour des serveurs virtuels).

Je voulais migrer des volumes d'un pool (foostore) vers l'autre (bar), ex:

zfs snapshot -r foostoree/vm-abc@moving
zfs send foostore/vm-abc@moving | pv | zfs receive bar/vm-abc

Ceci crée automatiquement un volume sur le pool "bar". La commande "pv" permet de voir l'état de la migration (données transférées, vitesse de transfert).

En créant un snapshot, on peut aussi réduire le temps d'interruption en migrant la VM pendant que le système est en fonction, puis fermer la VM, re-sychroniser et redémarrer la VM (après avoir changé la configuration du disque dans KVM).

Référence: http://serverfault.com/a/375430/262140

Toute la mémoire est utilisée par ZFS (ARC)

Ex: si toute la mémoire est utilisée par ZFS, et qu'il est impossible de créer une nouvelle machine virtuelle (allouer un gros bloc de mémoire d'un coup):

echo 1073741824 >> /sys/module/zfs/parameters/zfs_arc_max
echo 3 > /proc/sys/vm/drop_caches

Et:

echo "options zfs zfs_arc_max=1073741824" >> /etc/modprobe.d/zfs.conf

Réfs:

Notes