Photo by Chris Liverani / Unsplash

Tester son système de fichiers (RAID et ZFS) avec Bonnie++

Hardware 30 janv. 2022

Je n'avais utilisé ZFS que pour de la station de travail et je trouve mon serveur parfois poussif. Certes, cet un agrégat de petits SATA, en RAIDz-1, mais ça me surprend.

Il faut que je regarde de plus près la configuration de ZFS mais je voulais aussi faire un test de vitesse qui me servirait notamment de point de comparaison pour la suite.

J'utilise Bonnie++, (vieil) utilitaire de benchmark de système de fichiers dont voici le man ("manuel") et le site de son auteur.
On l'installe tout simplement via apt par exemple

sudo apt-get install bonnie++

Il y a plusieurs manière de l'utiliser, voici un exemple simple :

bonnie++ -d /rpool/ -s 48G -n 2 -f -b -u root

-d /rpool = où effectuer le test. /rpool étant un de mes pools RAIDz-1
-s 48G : taille du fichier de test, Bonnie++ recommande le double de la RAM
-n 2 : nombre de fichiers utilisés pour le test
-f : fast mod
-b : pas de buffer d'écriture (pour un accès direct et donc plus réaliste)
-u root : utilisateur d'exécution

[root@pve aerya]$ bonnie++ -d /rpool/ -s 48G -n 2 -f -b -u root
Using uid:0, gid:0.
Writing intelligently...
done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version  2.00       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
pve             48G            311m  17  226m  22            613m  29 170.4   5
Latency                        3024ms     542ms               423ms     529ms
Version  2.00       ------Sequential Create------ --------Random Create--------
pve                 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                  2  2048   0 +++++ +++  2048   0  2048   0 +++++ +++  2048   0
Latency               338ms       8us     480ms     348ms      15us     449ms
1.98,2.00,pve,1,1641109158,48G,,8192,5,,,318369,17,231080,22,,,627973,29,170.4,5,2,,,,,29,0,+++++,+++,30,0,41,0,+++++,+++,32,0,,3024ms,542ms,,423ms,529ms,338ms,8us,480ms,348ms,15us,449ms

Le résultat est particulièrement imbuvable et on le transcrit en HTML via le code Perl "bon_csv2html" sous la forme de

echo "Résultats" | bon_csv2html > Résultats.html

Comme je suis sur un serveur, je place le résultat dans un serveur Web format Docker

docker run -d \
--name=bonniehtml \
-p 8053:8080 \
-v /home/aerya/docker/bonniehtml:/var/www/html \
trafex/php-nginx

Donc

echo "1.98,2.00,pve,1,1641109158,48G,,8192,5,,,318369,17,231080,22,,,627973,29,170.4,5,2,,,,,29,0,+++++,+++,30,0,41,0,+++++,+++,32,0,,3024ms,542ms,,423ms,529ms,338ms,8us,480ms,348ms,15us,449ms" | bon_csv2html > /home/aerya/docker/bonniehtml/Résultats.html

Ce qui me les sert bien en version Web (et lisible)

Proxmox

Maintenant faut bien entendu interpréter les résultats. Ce qui m'intéressait dans l'immédiat ce sont les M/sec des I/O.
Soit 613MB/s en écriture (input) et 311MB/s en lecture (Output).
Ce que je peux confirmer avec dd :

TEST en écriture

[root@pve aerya]$ time sh -c "dd if=/dev/zero of=/rpool/test.tmp bs=4k count=2000000 && sync"
2000000+0 records in
2000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 9.71033 s, 844 MB/s

real	0m12.822s
user	0m1.181s
sys	0m7.522s

TEST en lecture

[root@pve aerya]$ time sh -c "dd if=/rpool/test.tmp of=/dev/null bs=4k"
2000000+0 records in
2000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 26.5967 s, 308 MB/s

real	0m26.598s
user	0m1.197s
sys	0m25.379s

Hey ! Blaireau ! Pourquoi tu nous parles de bonnie++ alors que tu as la même en plus simple et rapide avec dd ?!

Parce que Bonnie++ est plus complet (latence etc) et que c'est un point de comparaison plus fiable et complet quand on veut tweaker un peu ZFS.

Mots clés