Mot-clé - debootstrap

Fil des billets - Fil des commentaires

lundi 22 août 2011

Btrfs sous Debian sid

Récemment, j'ai constaté une baisse de performances sur mon SSD. C'est de ma faute, je me suis rendu compte un peu tard que je n'avais pas activé le TRIM. J'ai donc réinstallé, après avoir bien pris soin de faire un secure erase de mon disque.

J'en ai profité pour passer à btrfs pour la partition racine (je l'utilisais déjà pour ma /home). En utilisant debootstrap, j'ai pu dès le départ monter le système de fichiers avec les options qui vont bien (ssd, discard et compress=lzo entre autres). J'ai été étonné de la lenteur avec laquelle la debian sid s'installait. J'ai tout d'abord pensé que le SSD était entrain de mourir. Le processus est tout de même arrivé à terme après plus d'une heure.

Premier souci lors du premier redémarrage. Grub2 se charge mais arrive sur l'invite de commandes plutôt que sur le menu. Soit ! Après plusieurs tests, le fichier /boot/grub/grub.cfg est pourtant bien présent. Le problème vient de la compression lzo avec btrfs. Grub2 ne sait pas encore lire les fichiers compressés avec cet algo. Par contre, comme le fichier du kernel est binaire, il n'est pas compressé, ce qui explique que j'arrive tout de même à charger Linux.

Deuxième constat, le chargement est rapide, comme avant la réinstallation. Un petit tour avec hdparm me montre qu'il n'y a pas de problème de performances. Bizarre. Par contre, l'installation via apt-get est extrêmement lente. J'ai donc stracé le processus pour voir ce qu'il se passait. Les appels à la fonction fsync semblait très longs. Et comme un très grand nombre de ces appels est fait, forcément, c'est pénalisant. Après une petite recherche, je suis tombé sur le bug 635993, qui ne sera malheureusement pas corrigé. La faute à btrfs qui apparement supporte mal (pour le moment ? ) les demandes trop fréquentes de synchronisation sur disque. Un hack pour résoudre le problème est d'utiliser le wrapper eatmydata qui bypass l'utilisation de fsync. Crado, mais après des tests, ça fonctionne.

Un conseil donc. En l'état, évitez d'utiliser btrfs pour une partition racine sur debian et distributions dérivées (à cause de dpkg). Le système se comporte bien mais l'installation de paquets est calamiteuse. Pour information, je tourne actuellement avec un kernel vanilla 3.0.3. Je teste prochainement avec le 3.1-rc2 pour voir si améliorations il y a.