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

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

[[email protected] aerya]$ bonnie++ -d /rpool/ -s 48G -n 2 -f -b -u rootUsing uid:0, gid:0.Writing intelligently...donestart '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 %CPpve             48G            311m  17  226m  22            613m  29 170.4   5Latency                        3024ms     542ms               423ms     529msVersion  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   0Latency               338ms       8us     480ms     348ms      15us     449ms1.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[[email protected] aerya]$ time sh -c "dd if=/dev/zero of=/rpool/test.tmp bs=4k count=2000000 && sync"2000000+0 records in2000000+0 records out8192000000 bytes (8.2 GB, 7.6 GiB) copied, 9.71033 s, 844 MB/sreal	0m12.822suser	0m1.181ssys	0m7.522sTEST en lecture[[email protected] aerya]$ time sh -c "dd if=/rpool/test.tmp of=/dev/null bs=4k"2000000+0 records in2000000+0 records out8192000000 bytes (8.2 GB, 7.6 GiB) copied, 26.5967 s, 308 MB/sreal	0m26.598suser	0m1.197ssys	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.

(68 vues)