Installer Ubuntu 18.04 sur HDD + SSD utilisant bcache

J’ai un cache SSD SanDisk de 32 Go que je n’utilise plus et j’ai décidé de le recycler en cache SSD pour donner un coup de bouste à un de mes vieux ordis, un HP DC7900 doté d’un Intel Core 2 Duo à 3GHz et 6Go RAM qui fête ses 10 ans depuis la fabrication. Recycler est un des principaux principes de la permaculture et de l’écologie en général. C’est pourquoi dans cette machine se retrouvent aussi d’autres composants qui n’étaient plus « au niveau de performances » du standard du jour comme des disques durs SATA, une carte graphique Sapphire Radeon HD 6670 avec 1Gb RRD5, une carte WiFi et un graveur de DVD. Et pour couronner le tout le système d’exploitation installé est lui aussi du monde du libre, un Linux, la dernière version de Ubuntu 18.04 LTS sortie cette année. Malgré son âge vénérable, cette machine continue à nous rendre service au quotidien et c’est en quelque sorte l’ordinateur principal de la maison et celui utilisé par ma femme. Je pense que l’on pourra continuer encore 5 ans avant qu’elle devient complètement obsolète. Quoi que… 🙂

Si vous souhaitez en faire de même, mais vous n’avez pas un disque SSD sous la main, les sites de vente d’occasion comme eBay.fr ou Leboncoin.fr regorgent des SSD de petite capacité entre 16Go et 120Go qui sont largement suffisants pour ce type d’utilisation. Sans compter que les prix sont vraiment très bon marché pour ces SSD que plus personne n’achète des nos jours à cause de leur faible capacité.

Comment fonctionne un cache SSD?

Il y a en général trois modes de fonctionnement:

  • writethrough : c’est le mode le plus sécurisé. Toutes les opérations d’écriture sont faites de manière concomitante sur le disque dur et sur le SSD, donc plus lentes car c’est à la vitesse du disque le plus lent. Les lectures sont faites depuis le cache SSD, donc très rapides à l’exception des lectures séquentielles, comme regarder un film par exemple, qui sont faites directement depuis le disque dur dont les performances sont jugées convenables pour ce type d’opération et en plus cela prolonge la vie du SSD.
  • writeback : c’est le mode le plus rapide mais le moins sécurisé. On travaille directement sur le SSD, donc les écritures et les lectures sont faites directement depuis le SSD et ensuite écrites sur le disque dur en tache de fond en mode asynchrone. De ce fait les arrêts du système peuvent prendre parfois plus de temps, car il faut finir d’écrire sur le disque dur tout le nouveau contenu du SSD. Par ailleurs, des incompatibilités avec les configurations RAID ont été constatées.
  • writearound : est une variante de writethrough où les écritures ne sont pas caches sur le SSD mais écrites directement sur le disque dur. Le seul moyen de cacher les données est de les lire et en plus elles ne sont pas persistantes entre redémarrages. Il peut être utilisé pour les systèmes qui font beaucoup de lectures comme les sites web par exemple.

Comment configurer un cache SSD ?

Un petit tour rapide sur le net vous montre que les solutions pour Linux n’en manquent pas! Il y a deux principales : flashcache développé par Facebook et bcache qui fait maintenant partie intégrante du noyau depuis quelques années. Alors lequel choisir? Pour faire simple, si vous avez un système déjà installé et vous ne souhaitez pas y toucher, alors il est recommandé flashcache car il ne nécessite pas le reformatage des partitions comme c’est le cas du bcache. Par contre les données ne sont pas persistantes dans le cache après redémarrage dans la configuration par défaut, c’est à dire writethrough. A contrario le cache est persistent avec bcache dans le mode wrtitethrough, par contre il a besoin des partitions vides pour le configurer ce qui le rend fort intéressant pour une nouvelle installation, comme le cas de cet article. De plus, comme il est inclus dans le noyau son niveau de maturité le rend utilisable en production, donc aucune crainte pour ses données. flashcache quant à lui n’est plus maintenu activement et il faut le compiler depuis les sources Git. Même s’il est encore stable à ce jour rien n’est garanti pour l’avenir. Pour ceux qui veulent tenter l’aventure avec flashcache je vous conseille cet article (en anglais): https://delightlylinux.wordpress.com/2016/05/09/speed-up-your-hard-drive-with-flashcache/

Sommaire des opérations

Selon les retours des gens qui ont déjà installé bcache il est recommandé d’utiliser une partition de démarrage /boot séparée afin de pouvoir effectuer des mises à niveau vers une autre version majeure de la distribution. Cette bonne pratique je la recommande d’ailleurs pour tous les types d’installation de Linux.

Voici les étapes principales:

  1. Démarrer l’installation Ubuntu 18.04
  2. Créer la partition /boot et les périphériques backing (le disque dur) et caching (le SSD)
  3. Créer le périphérique bcache
  4. Installer Ubuntu sur /dev/bcache0
  5. Rester dans le mode live pour faire un chroot sur la nouvelle installation
  6. Installer les bcache-tools et regenerer initramfs
  7. Redémarrer dans le système fraîchement installé

Démarrer l’installation de Ubuntu 18.04

Avant tout il faut se procurer une image d’installation de Ubuntu 18.04 LTS. Pour ce faire il vous faut un ordinateur fonctionnel avec un accès à Internet. Les conseils suivants s’appliquent pour tous les types de système d’exploitation que vous pouvez rencontrer : Linux, Mac OS X ou Windows. Pour télécharger l’image ISO d’installation d’Ubuntu 18.04 LTS rendez-vous sur cette adresse : https://www.ubuntu.com/download/desktop. Si vous optez pour le téléchargement BitTorrent (conseillé) je vous recommande l’utilitaire qBittorrent. Une fois le téléchargement terminé il s’impose de vérifier sont téléchargement grâce aux signatures SHA256 et pour ceci je vous conseille d’utiliser QuickHash-GUI. Ensuite pour écrire cette image sur une carte SD ou clé USB il n’y a rien de plus simple que https://etcher.io dont le guide d’utilisation auto explicatif parle de lui même. Une fois le média d’installation d’Ubuntu 18.04 LTS crée, démarrez votre ordinateur dessous et dans l’installeur, après avoir choisi la langue, optez pour essayer Ubuntu sans l’installer car nous allons avoir besoin d’effectuer des opérations avant de démarrer l’installation. Quand la version Live d’Ubuntu 18.04 LTS se lance, ne démarrez pas l’installation et passez à l’étape suivante du guide.

Paramétrer le disque dur

Ubuntu 18.04 dispose dans sa configuration par défaut de l’utilitaire de disque gparted. C’est bien lui que nous allons utiliser pour partitionner les disques. Donc lancez-le et supprimez toutes les partitions existantes ou, encore plus simple, créez une nouvelle table de partition qui effacera automatiquement toutes les partitions existantes. Une fois les disques vides on passe au partitionnement. Dans mon cas mon disque dur, le disque lent ou le backing device en langage bcache, est connecté sur le premier port SATA sur /dev/sda et le cache SSD, ou le caching device en langage bcache, est connecté sur le troisième port SATA donc /dev/sdc. Par conséquent je vais créer ma partition de démarrage /boot de 1024 Mo (qui suffit largement pour héberger plusieurs les versions du noyau et les outils de dépannage au démarrage) sur /dev/sda1 et formatez là avec Ext4. Juste après créez une partition pour le swap. Depuis Ubuntu 18.04 l’installeur ne crée plus de partition de swap séparée mais un fichier swap sur la partition racine. Comme nous n’allons pas effectuer une installation standard il est plus simple et plus rapide de créer une partition swap séparée. Peu importe la quantité de RAM dont je dispose je ne fais plus de partitions de swap de plus de 4Go, sauf cas spécifique genre configuration de type serveur au autre, car en utilisation desktop cela est une perte d’espace inutile. Si un système se met à swapper mieux lui acheter plus de RAM. Donc ma partition de swap de 4Go se trouve sur /dev/sda2.

ATTENTION: si vous avez un système UEFI il faut créer la première partition du disque comme partition de démarrage EFI de type Fat32 que vous allez monter dans /boot/EFI. Une taille de 512 Mo suffit pour un seul système d’exploitation. Sans cette partition votre système UEFI ne pourra pas démarrer.

Maintenant on passe aux choses sérieuses: créer les partitions pour bcache. Il faut savoir que bcache peut travailler avec des disques entières ou avec des partitions. Le seul prérequis est qu’ils ne doivent pas être formatés avant l’utilisation. Donc il faut créer deux partitions vides, une pour le root / du système et l’autre pour le cache.

Après le partitionnement des disques mon nouveau schéma de partitionnement ressemble à cela:

/dev/sda1 – 1024 Mo Ext4 /boot
/dev/sda2 – 4096 Mo swap
/dev/sda3 – backing device sans système de fichiers, toute la capacité restante pour le /
/dev/sdc1 – caching device sans système de fichiers, toute la capacité du SSD

Astuce: si vous souhaitez créer plusieurs partitions, comme /home par exemple, vous pouvez aussi partitionner le SSD afin que chaque partition du disque dur ait sa partition de cache. Bcache peut aussi travailler avec des partitions chiffrées, les données écrites dans le cache seront à leur tour chiffrées.

Créer le périphérique bcache

Avant tout il faut se connecter à internet car nous avons besoin d’installer dans la version Live d’Ubuntu 18.04 les outils bcache. Ensuite lancez un terminal et tapez la commande:

sudo apt-get update
sudo apt-get install bcache-tools

Maintenant on va effacer les partitions backing et caching afin de pouvoir les utiliser avec bcache avec les commandes suivantes:

sudo wipefs -a /dev/sda3
sudo wifefs -a /dev/sdc1

Là nous allons procéder à la création du périphérique bcache entre /dev/sda3 et /dev/sdc1 avec les commandes:

sudo make-bcache -B /dev/sda3 -C /dev/sdc1
sudo mkfs.ext4 /dev/bcache0

La commande make-bcache va utiliser la partition /dev/sda3 du disque dur comme backing device (le paramètre -B) et la partition /dev/sdc1 du SSD comme caching device (le paramètre -C). Cette commande applique les paramètres par défaut, ça veut dire le mode writethrough et utilise la taille par défaut de 4k pour les secteurs. Ensuite on formate le nouveau périphérique Bcache crée /dev/bcache0 avec le système de fichiers Ext4.

Installer Ubuntu 18.04 LTS

Sans redémarrer l’ordinateur, maintenant on peut reprendre l’installation d’Ubuntu 18.04 LTS en relançant l’installeur. Continuez jusqu’à l’écran où il vous demande quel type d’installation (entre « Installer Ubuntu à coté de Windows Boot Manager » , « Effacer le disque et installer Ubuntu » …) et choisissez « Autre chose » pour procéder au partitionnement manuel. Dans l’écran du partitionnement configurez comme suit:

/dev/bcache0   Ext4  /
/dev/sda1      Ext4  /boot
/dev/sda2       swap

N’oubliez pas la partition /boot/EFI si vous avez un système UEFI. Continuez ensuite avec l’installation jusqu’à la fin et NE REDÉMARREZ PAS votre ordinateur car initramfs ne contient pas bcache. Si vous avez redémarré par accident, redémarrez tout simplement à nouveau le mode Live, installez bcache-tools et continuez avec l’étape ci-après.

Installer bcache sur la nouvelle installation

C’est ici où les choses se compliquent un peu, car il faut installer bcache-tools sur le nouveau système installé et régénérer le initramfs pour que la nouvelle installation puisse démarrer correctement. Pour ce faire, dans un terminal nous allons changer de root / dans la nouvelle installation grâce à la commande chroot, afin de pouvoir créer un environnement Ubuntu Linux à l’aide des commandes suivantes:

sudo mount /dev/bcache0 /mnt
sudo mount /dev/sda1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

Comme nous avons besoin d’un accès à Internet il faut récupérer la configuration DNS depuis l’instance Live avec cette commande:

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

On va se positionner dans le nouveau « root » :

sudo chroot /mnt

Maintenant que l’on est effectivement dans la nouvelle installation d’Ubuntu il faut installer bcache-tools et régénérer initramfs avec les commandes:

sudo apt-get update
sudo apt-get install bcache-tools

Vous allez constater que initramfs sera régénéré automatiquement à la fin de l’installation de bcache-tools.

Une fois l’installation terminée il faut sortir du chroot, démonter proprement tous les systèmes de fichiers et redémarrer afin de pouvoir profiter de la nouvelle installation :

exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot

Le gain de performance n’est pas immédiat, il faut utiliser son nouveau système au quotidien et le redémarrer plusieurs fois. Plus le cache sera alimenté, plus le système sera accéléré.

Accélérer encore plus!

J’ai laissé le meilleur pour la fin. Il est possible d’accélérer encore plus une installation d’Ubuntu grâce au preload. Pour faire ceci rien de plus simple :

sudo apt-get install preload

Et redémarrez l’ordinateur. Cet outil travaillera en tâche de fond et va pré-charger les applications que vous utilisez le plus souvent. Mieux encore, vous pouvez utiliser cette commande pour accélérer encore plus toutes les installations d’Ubuntu 😉

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.