Le premier test est juste destiné à apprendre le fonctionnement basique des outils liés à BTRFS il a été executé sur des volumes LVM créés pour l'occasion avant de passer au travail sur des partitions physiques.
Mais, ATTENTION, la version des outils n'est (sur Debian unstable) encore que "0.19+20120328-1". Cela bouge mais la version "stable" 1.0 est peut-être encore assez loin.
Pour tester BTRFS il faut un noyau dont le support BTRFS est activé ! Si, comme c'est probable le support BTRFS est compilé en module un simple :
modprobe btrfs
devrait vous renseigner :
FATAL: Module btrfs.ko not found.
ou bien meilleur aucun message et un code retour 0.
Ce support devrait être actif pour les noyaux récents de la plupart des distributions, sinon compilez le vous même et installez le. Les tests sont réalisés avec un noyau très récent (3.4.4) afin de bénéficier des dernières corrections.
Ensuite il faut charger les outils BTRFS pour disposer, entre autres, de mkfs.btrfs. Sur Debian le paquet se nomme "btrfs-tools" sans autre complication et s'installe rapidement.
Pour ce premier test j'ai créé deux "disques" LVM de 20G nommés :
VOL_EXT4 et VOL_BTRFS. Le premier sera formaté classiquement en EXT4, le secon en BTRFS.
La commande "mkfs.btrfs" assure le formatage et la labellisation, ici :
date ; mkfs -t btrfs -L DISK_BTRFS /dev/mapper/TALE-VOL_BTRFS ; date
vendredi 4 mai 2012, 19:55:30 (UTC+0200)
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label DISK_BTRFS on /dev/mapper/TALE-VOL_BTRFS
nodesize 4096 leafsize 4096 sectorsize 4096 size 20.00GB
Btrfs Btrfs v0.19
vendredi 4 mai 2012, 19:55:30 (UTC+0200)
Le résultat est quasi instantané !
En EXT4 :
date; mkfs -t ext4 /dev/mapper/TALE-VOL_EXT4 ; date
vendredi 4 mai 2012, 19:56:52 (UTC+0200)
mke2fs 1.42.2 (9-Apr-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
vendredi 4 mai 2012, 19:56:54 (UTC+0200)
Deux secondes pour 20G, donc plus de trois minutes pour un disque de 2To. On monte ensuite les deux partitions et on vérifie :
df | grep mnt
/dev/mapper/TALE-VOL_EXT4 20907056 440692 19417788 3% /mnt/VOL_EXT4
/dev/mapper/TALE-VOL_BTRFS 20971520 120 18845632 1% /mnt/VOL_BTRFS
Tiens ETX4 consomme 3% ?
Tests "dd" en écriture, fichier de 8Go :
Pour EXT4 wait 37 .. 75% BO # 65000 .. 136000 (chiffres de "vmstat")
256000+0 records in
256000+0 records out
8388608000 bytes (8,4 GB) copied, 63,0721 s, 133 MB/s
Pour BTRFS wait 29.. 55% BO # 68000 .. 180000
256000+0 records in
256000+0 records out
8388608000 bytes (8,4 GB) copied, 60,2699 s, 139 MB/s
Tests "dd" en écriture, fichier de 16Go :
Pour EXT4 wait 37 .. 75% output # 65000 .. 136000
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 136,869 s, 123 MB/s
Pour BTRFS wait 29.. 55% output # 68000 .. 190000
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 123,338 s, 136 MB/s
La vitesse du BTRFS n'est que très peu supérieure mais les "wait_states" sont inférieurs (mesuré avec vmstat) mais reste plus constante pour les fichiers de 8G et 16G.
Tests "dd" en lecture, fichier de 16Go :
EXT4 :
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 125,661 s, 134 MB/s
BTRFS :
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 119,848 s, 140 MB/s
Léger avantage à BTRFS.
Aucune commande complexe n'a été utilisée ici, la seule différence est la pose du label de FS par "mkfs.btrf" qui simplifie un peu les commandes.
Les tests précédents ont étés réalisés avec un noyau "xenifié", ci-dessous le même test sur la même version de noyau (3.3.4) en mode "normal" :
Test "dd" en lecture fichier 16Go :
EXT4 :
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 108,485 s, 155 MB/s
BTRFS :
512000+0 records in
512000+0 records out
16777216000 bytes (17 GB) copied, 99,3723 s, 169 MB/s
Les résultats sont meilleurs laissant toujours un léger avantage à BTRFS.
J'ai prévu de présenter plus loin quelques possibilités attrayantes et les outils qui permettent d'y arriver. C'est tout pour aujourd'hui ... à la prochaine.