Améliorer les performances de ZFS

zfs optimize

L'ensemble de mes données sensibles sont stockées sur un système ZFS dans plusieurs zpool (qui est l'équivalent d'un RAID5).

Après plusieurs semaines d'utilisation je me suis aperçu que les vitesses d'écriture et de lecture n'étaient vraiment pas rapide.

J'ai donc effectué des recherches afin de trouver des astuces pour améliorer les performances de mon système ZFS.

Utiliser un processeur 64 Bits et de la mémoire

Une des particularités de ZFS est de consommer pas mal de mémoire car il bufferise pas mal.

Dans mon cas, j'utilise 1Go de mémoire par téraoctet d'espace disque utile. Ainsi si votre zpool fait 8To, je vous conseille d'utiliser 8Go de ram.

J'ai également lu qu'un processeur 64 Bits était préférable pour utiliser ZFS. Personnellement je n'ai pas pu testé ZFS sous un système 32 Bits mais il est fort probable que l'utilisation d'un système d'exploitation 64 Bits a un impact direct sur l'utilisation de la mémoire.

Utiliser des disques durs similaires

Souvent il n'est pas conseillé d'utiliser les mêmes références de disques durs au sein d'un raid car si un disque vient à défaillir on peut supposer que les disques identiques auront le même problème.

Toutefois pour ZFS, il est conseillé d'utiliser des disques durs de même capacité, de même vitesse et ayant la même mémoire tampon (buffer) et le même nombre de secteurs.

Activer la compression

ZFS peut compresser les données afin de gagner en espace disque. Cette fonctionnalité est coûteuse en processeur et en mémoire.

Je vous conseille donc de ne compresser que les zpool qui contiennent des données à fort taux de compression.
Par exemple, il est intéressant d'activer la compression pour la sauvegarde de fichiers bureautique (fichiers texte, word, excel, …) mais il n'est pas intéressant d'activer la compression pour des données de média (mp3, avi, divx, …).

Désactiver les fonctions inutiles

Par défault, ZFS active toute sorte de fonctionnalités qui ne vous seront pas forcément utiles.

Pour récupérer la liste de fonctionnalités activées par ZFS, il faut utiliser la commande suivante:

zfs get all

Vous pourrez alors modifier les options en utilisant la commande "set". Voici un exemple qui désactive le contrôle du checksum pour le zpool nom_du_zpool:

zfs set checksum=off nom_du_zpool

Mettre à jour votre version de ZFS

ZFS est constamment en cours de développement. De nouvelles fonctionnalités et de nombreux correctifs sont apportés régulièrement.

Je vous recommande donc de garder votre version de ZFS à jour en utilisant les commandes:

zfs upgrade nom_du_zpool
zpool upgrade nom_du_zpool

ZFS et SSD Caching

Le SSD Caching permet d'utiliser la rapidité d'un SSD pour stocker certaines logs et mettre en cache les données.

Ainsi pour améliorer les performances en lecture, il faut utiliser la commande:

zpool add 'nom_du_zpool' cache 'nom_du_device_ssd'

Pour améliorer les performances en écriture, il faut utiliser la commande:

zpool add 'nom_du_zpool' log 'nom_du_device_ssd'

Veillez noter qu'il est strictement impossible à l'heure actuelle de retirer un disque ssd utilisé pour améliorer les performances en écriture. Il est donc préférable d'utiliser le SSD en tant que disque mirroir:

zpool add 'nom_du_zpool' log mirror /dev/log_ssd

Augmenter le nombre de disques

ZFS est beaucoup plus rapide si vous utilisez 2 disques de 2To qu'un seul disque de 4To.

En effet, ZFS utilise ainsi les performances propres à chaque disque afin d'augmenter les vitesses en lecture et écriture.

Je vous conseille donc d'utiliser le maximum de disques possible.

Désactiver la déduplication

La déduplication est une technologie qui permet de ne stocker physiquement qu'une seule fois un fichier même s'il est présent plusieurs fois (logiquement).

La déduplication stocke des index en mémoire afin de savoir si le fichier existe ou pas. Dans la documentation ZFS, il est précisé que si la déduplication est activée, il faudra avoir au minimum 2Go de mémoire pour 1To de données.

La plupart du temps, la déduplication ZFS n'est pas intéressante et pas nécessaire. Je vous conseille donc de la désactiver via la commande:

zfs set dedup=off nom_du_zpool

Conclusion

Les améliorations énoncées ci-dessus dépendent de votre configuration matérielle, de vos besoins et de la nature de vos données. ZFS est performant à condition qu'il soit bien configuré.

N'hésitez pas à poster des commentaires si vous avez d'autres astuces.

Leave a Reply

Your email address will not be published. Required fields are marked *