Blog de benji1000

Désactiver le SoftRaid sur un serveur Kimsufi

Le 29 juillet 2020 dans Sysadmin

J'ai récemment changé de serveur, et ai opté pour un serveur Kimsufi dont l'espace disque disponible était vendu comme "SoftRaid 2x2To". Le SoftRaid, ou RAID logiciel, est un mécanisme permettant de dupliquer les données sur plusieurs disques.

L'avantage est que les risques de perte de données sont atténués, puisque si l'un des disques venait à avoir un problème, les données restent présentes sur le deuxième disque. Et il est très improbable que deux disques lâchent au même moment ! L'inconvénient est que l'on paye espace disque dont on n'utilise que la moitié pour stocker des données (2 To sur les 4 To disponibles sur la machine), l'autre moitié étant utilisée pour dupliquer les données.

Dans mon cas, je n'étais pas intéressé par la protection offerte par ce mécanisme de duplication de données. J'ai donc fait le choix de désactiver le SoftRaid sur mon serveur Kimsufi afin de bénéficier des 4 To de stockage présents dans la machine. J'avais trouvé un article qui explique le début de la démarche, mais il est incomplet et ne va pas jusqu'au bout. Je vous explique dans cet article l'intégralité de la manipulation. Bien entendu, il faut garder en tête que l'on perd un mécanisme de protection des données au bénéfice d'un plus grand espace disque disponible.

Cette opération va bien évidemment restructurer tout votre disque, il est donc impossible d'effectuer ces manipulations sur un serveur en cours d'utilisation au risque de perdre vos données. Je vous recommande donc de commander un nouveau serveur, d'effectuer la manipulation, puis de transférer les données de votre ancien serveur vers le nouveau.

Installer le serveur

La première chose à faire est donc de commander un nouveau serveur bénéficiant du SoftRaid. J'ai choisi d'y installer Ubuntu Server 18.04 LTS, mais vous pouvez opter pour un autre OS basé sur UNIX si vous préférez, au risque de devoir adapter certaines commandes. À la phase d'installation, cocher la case "Installation personnalisée" :

Sur le nouvel écran, cocher la case "Oui" (effectuer l'installation uniquement sur le premier disque), puis réorganisez les partitions :

J'ai choisi d'accorder 51200 MB soit 50 Go à ma partition racine, mais vous êtes bien entendu libres de dimensionner cette partition comme bon vous semble. On note que l'espace disponible affiché est de 2 000 000 MB soit 2 To, puisque seulement 2 To sont utilisables en SoftRaid. On laisse alors l'installation d'Ubuntu se poursuivre.

Partitionner le disque sda

Une fois le serveur installé, on peut se connecter en SSH à l'aide du compte root (penser à modifier ce mot de passe avant toute chose avec la commande passwd). Avec la commande fdisk -l, on peut vérifier que les partitions sont telles qu'on les a configurées :

Il nous faut créer une 4e partition sur le premier disque d'une taille de 4 To moins la taille des 3 premières partitions. Pour cela, on saisit la commande fdisk /dev/sda pour rentrer dans l'utilitaire de partitionnement du disque. Dans l'ordre, on saisit ensuite les commandes :

  • n (créer une nouvelle partition),
  • e (de type extended),

La 3e saisie demande d'indiquer le premier secteur de la nouvelle partition que l'on crée. Si vous regardez sur la capture ci-dessus, on peut voir que ma partition sda3 s'étend jusqu'au secteur 106952703. Ma partition sda4 doit donc commencer un secteur plus loin, c'est à dire 106952704. Ce nombre est à adapter selon la configuration de vos trois premières partitions.

La 4e saisie demande d'indiquer le dernier secteur de la nouvelle partition. Pour cela, pas trop besoin de se casser la tête, on indique le dernier secteur du disque, qui est d'ailleurs donné (3907029167 dans mon cas).

On termine en saisissant w dans la dernière saisie, afin d'écrire (write) les modifications sur le disque.

La capture suivante récapitule les opérations jusqu'à présent :

On peut voir que le disque contient la nouvelle partition sda4 :

Créer des volumes physiques et un groupe de volumes

Pour l'instant, sda4 est vue comme une partition. On demande à l'OS de la voir comme un volume physique :

pvcreate /dev/sda4

Confirmer la suppression de la signature dos qui pourrait éventuellement s'y trouver en tapant y.

On crée un volume physique sur le deuxième disque-dur présent sur la machine (encore non partitionné) :

pvcreate /dev/sdb

Enfin, on crée un groupe de volumes qui réunit la partition sda4 et le disque sdb avec la commande :

vgcreate mystorage /dev/sda4 /dev/sdb

Vous pouvez modifier le nom de ce groupe de volume, que j'ai nommé mystorage, avec ce que vous souhaitez. Je vous conseille toutefois de garder un nom court sans caractère spécial histoire de minimiser les risques de problèmes ultérieurs.

La capture suivante récapitule les opérations :

On peut utiliser la commandelvmdiskscan -l pour lister les volumes que le système voit en tant que volumes physiques. Le système en voit deux : la 4e partition du premier disque, ainsi que l'intégralité du deuxième disque. Cela donne chez moi un total d'environ 3,5 To. Selon l'espace que vous avez alloué au trois premières partition de votre premier disque, ce volume peut être différent.

La commande vgdisplay affiche quant à elle la liste des groupes de volumes. Il n'y en a qu'un, qui est celui qu'on a créé en aggrégant les deux volumes physiques mentionnés précédemment.

L'article dont je vous parlais au début s'arrête ici. On est bien avancés ! Pas de panique, la suite de mon tuto continue.

Création d'un volume logique

À ce stade, la machine voit un groupe de volumes composé de deux volumes physiques, ou en tout cas vus comme physiques. Mais nous ne sommes toujours pas en mesure d'y stocker des données. Il va d'abord falloir créer un volume logique.

Pour cela, on utilise la commande suivante :

lvcreate -l 100%FREE -n mylv mystorage

Celle-ci va créer un volume logique à partir du groupe de volumes nommé chez moi mystorage (adaptez au nom que vous lui avez donné), que je nomme mylv (là encore, vous pouvez l'appeler autrement si vous le souhaitez), et qui utilisera tout l'espace disque disponible sur le groupe de volumes.

On formate ce volume logique en ext4, qui est le système de fichiers utilisé par les systèmes UNIX modernes :

mkfs -t ext4 /dev/mystorage/mylv

La capture qui montre les opérations :

Montage manuel du volume logique

Pour monter une partition sur les systèmes UNIX, il faut dans un premier temps créer un point de montage, c'est à dire un dossier dans lequel les données de la partition seront accessibles ; je choisis pour cela le dossier /data.

mkdir /data
mount /dev/mystorage/mylv /data

On constate ensuite l'état de l'espace libre avec df -h. Comme d'habitude, la capture qui va bien :

Montage automatique du volume logique au démarrage

C'est bien d'avoir fait tout ça, mais devoir monter notre volume logique à chaque démarrage n'est pas super pratique. On va donc configurer ce volume logique dans le fichier fstab (file systems table), qui contient la liste des volumes et partitions montés au démarrage.

On commence dans un premier temps par faire une copie de sécurité du fichier en cas de mauvaise manip.

cp /etc/fstab /etc/fstab.old

On ajoute ensuite à la fin de ce fichier la ligne qui indique où monter le volume logique :

/dev/mystorage/mylv  /data   ext4    defaults                0       0

Et maintenant, on redémarre... et si tout s'est bien passé, le serveur devrait de nouveau être accessible, avec un espace de plus de 3 To dans /data ! Pensez alors supprimer l'ancienne copie du fstab :

rm /etc/fstab.old

Bonus #1 : désactiver cryptsetup

À l'usage, j'ai constaté l'erreur suivante en mettant à jour les paquets de mon serveur :

cryptsetup: WARNING: failed to detect canonical device of /dev/sda2
cryptsetup: WARNING: could not determine root device from /etc/fstab

Il s'avère en fait que cryptsetup n'arrive plus à retrouver ses petits suite aux modifications effectuées sur les partitions. Cet outil permet de chiffrer des partitions, mais n'est pas du tout nécessaire au bon fonctionnement du serveur, j'ai donc choisi de le désinstaller. Si vous faites de même, sachez que vous ne pourrez plus chiffrer les partitions de votre serveur. Il est sans doute possible de faire cohabiter nos modifications avec cryptsetup... mais je n'ai pas cherché à savoir comment faire.

Vérifiez quand même que vous ne l'utilisez pas avec la commande suivante, qui ne doit rien retourner s'il n'est pas utilisé :

cat /etc/fstab | grep crypt

On peut ensuite procéder à sa suppression, puis à la mise à jour de grub, le composant qui gère le démarrage du système :

sudo apt-get remove cryptsetup
sudo update-grub

On installe enfin le paquet grub-pc-bin sur le premier disque :

apt-get install grub-pc-bin
grub-install /dev/sda
reboot

Bonus #2 : transférer les fichiers de l'ancien serveur

Si vous êtes comme moi dans une démarche de transfert de vos données d'un ancien serveur vers un nouveau, plus spacieux, la commande suivante peut vous être utile afin de récupérer vos données :

rsync -avh --progress -e 'ssh -p PORT_SSH_OLD_SYSTEM' USER_OLD_SYSTEM@IP_OLD_SYSTEM:/PATH/OLD/SYSTEM/ /PATH/NEW/SYSTEM