Salut à toi utilisateur de la boule rouge à cornes. Si comme moi tu en as eu marre de faire joujou avec geom les drivers et cartes chelous, et que tu as quelques disques d'un joli gabarit tu t'es sûrement dit et si je tentais l'aventure ZFS ?

Pour l'installation du zfs en tant que sysème de fichier racine je vous donne ce petit howto bien foutu : http://ish.com.au/solutions/articles/freebsdzfs

Mais là n'est pas l'intérêt de ce tip. Il se trouve que je n'avais qu'un vieux p4 32bits et que je rencontrais des locks dans le system de fichiers. Après moult recherches et moult docs lues ça et là, je suis tombé sur une recette de cuisine qui a fait de mes 3 NAS de prod des boites à données rock solid. Oui je partage et je me tais :

1/ kernel

L'implémentation de zfs se fait niveau kernel chez freebsd. Tout le monde sait que zfs est assez gourmand en ram, du coup il faut prévoir. Permiere tâche permettre au kernel de s'étendre en ram en le recompilant avec par exemple :

options KVA_PAGES=512

NB: ceci n'est nécessaire qu'en environnement 32 bits

2/ loader.conf

Maintenant que le kernel est prêt à remplir les barettes on tune un poil son /boot/loader.conf avec :

vm.kmem_size="768M"
vm.kmem_size_max="768M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"
  
#en cas de besoins particuliers (mysqld par exemple) jouer avec ces paramètres
#vfs.zfs.cache_flush_disable="1"
#vfs.zfs.zil_disable="1"
#vfs.zfs.prefetch_disable="1"

3/ sysctl.conf

Les classiques qui évitent les surprises en cas de grosse charge

kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.maxvnodes=200000

4/ snapshots et pti truc pratiques

Avoir du zfs c'est bien, mais snapshoter c'est mieux. Comme vous le savez certainement déjà, ZFS permet de générer des snapshots sur simple commande. J'ai dont fait un petit script sh très simple qui effectue une rotation des snapshots sur N jours. Je vous présente zfsrotatesnapshots.sh :

#!/bin/sh
export zfs="/sbin/zfs"

$zfs destroy tank/root@15dago
for i in `jot - 15 2`;
        do
                $zfs rename -r tank/root@$((i-1))dago @${i}dago
        done
$zfs snapshot -r tank/root@1dago
touch /lastzfssnapshot

sinon dans le genre à ne pas oublier j'ai mis un scrub dans la crontab. Comme ça l'intégrité du raid0+1 de la box est vérifiée quotidiennement :

0 0 * * * /usr/local/sbin/zfsrotatesnapshots.sh
0 1 * * 1 /sbin/zpool scrub tank

5/ finito

Une fois tout ce bazar réglé, je n'ai plus eu de soucis avec un freebsd 7.0-STABLE un p4 2.4 ghz datant un peu et 1go de ram. Le meilleur test que j'ai trouvé pour vérifier la stabilité de zfs : lancer une foultitude de clients bittorrents sur la dite machine. Au bout de quelques heures (pas plus de 2 jours) on est fixés.

freebsd/zfs_stable.txt · Last modified: 2010/01/12 13:29 (external edit)