Redondance, partitionnement, chiffrement : comment configurer ses disques durs en vue d'une installation de serveur

Configurer les disques de son futur serveur

On part du principe que vous disposez d'un ordinateur, chez vous ou dans un centre de données, et vous êtes prêt⋅e à annihiler le contenu de ses disques pour en faire un beau serveur tout propre. (Il est tout à fait faisable de garder des données existantes sur les disques, mais c'est hors du cadre de cet article.)

On commencera par expliquer comment accéder aux disques pour les configurer, avant de traiter de partitionnement et de redondance (le fait d'écrire la même choses sur plusieurs disques, au cas où l'un d'entre eux casse). Un autre se focalise sur le chiffrement des disques, dont le but est que leur contenu soit incompréhensible sans la clé (si vous vous faites voler le disque, ou que votre hébergeur est trop curieux).

Préliminaire : accéder aux disques

Pour configurer les disques, il faut y avoir accès, comme s'ils étaient des disques durs externes. Donc, pas depuis le système d'exploitation (ou OS pour operating system) déjà installé sur la machine : lui, il utilise activement les disques. Mais depuis un autre OS. Qui sera Linux, puisqu'il dispose, d'office, de tous les outils pour ce faire, en ligne de commande. Deux possibilités :

À partir de maintenant, on considère que vous avez accès aux disques que vous souhaitez configurer via la ligne de commande en mode administrateur. Pour vous en assurer, vous pouvez lancer la commande fdisk -l (en tant qu'administrateur) ou lsblk :

# fdisk -l
[...]
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
# lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  1.8T  0 disk
sdc    8:32   1  1.8T  0 disk
sda    8:0    0  1.8T  0 disk

Comme vous pouvez le voir, je m'apprête à installer mon serveur sur une belle machine avec 3 disques de 2 To (= 1.8 Tio). Miam !

Préparer son partitionnement

Partitionner un disque, c'est le découper en sous-volumes logiques, appelés partitions.

Un exemple classique de partitionnement, c'est de découper son disque en deux pour disposer et de Linux et de Windows sur son ordinateur de bureau. Chaque système d'exploitation est installé sur sa partition - et c'est au démarrage qu'on décide si on lance Linux ou Windows aujourd'hui.

Nous, on s'apprète à installer un serveur sous Linux. On ne cherche pas à faire vivre plusieurs OS sur un seul disque, mais plutôt à séparer les données d'un OS dans des partitions distinctes. On va donc se payer le luxe d'expliquer d'abord quelles stockées vont dans quels dossiers sous Linux, puis on parlera de redondance, avant de revenir sur les contraintes du partitionnement. On passera ensuite à la pratique.

Comment sont organisées les données sur Linux

Comprenez d'abord qu'on « montera » un dossier du système Linux dans chaque partition de stockage. Listons donc les dossiers à considérer lors du partitionnement :

À part cela, vous aurez sans doute besoin des partitions suivantes :

Vous l'aurez compris, il n'y a pas partitionnement parfait, et c'est à vous de décider de votre schéma de partitionnement.

En résumé :

Redondance des données

Parlons maintenant des stratégies qu'on peut mettre en œuvre, quand on dispose de plusieurs disques, pour diminuer le risque de perte de données grâce à la redondance (c'est à dire : le fait de copier une même information à plusieurs endroits à la fois). Si vous ne disposez que d'un disque sur votre ordinateur, n'êtes pas concerné⋅e. Vous pouvez passer directement au partitionnement.

La redondance (entre autres) est permise par la technologie RAID (pour « Redundant Array of Independent Disks » ou « ensemble redondant de disques indépendants »). Notez que RAID crée des volumes « logiques » à partir de partitions physiques (des bouts de disques, pas les disques entiers). RAID propose plusieurs architectures, en fonction de ses besoins ; en voici quelques unes :

Que de choix ! Ici aussi, c'est à vous de trouver un schéma de redondance adapté à votre matériel et à vos besoins.

Contraintes de partitionnement ou comment les éviter avec LVM

Le partitionnement c'est chiant : on est limité à un certain nombre de partitions par disque, les partitions doivent être contiguës, modifier un schéma de partitionnement une fois l'OS installé est risqué... Et enfin : si on veut chiffrer ses données, on ne peut chiffrer qu'une partition à la fois, et ça demande une clé différente par partition !

Heureusement qu'il y a LVM ! C'est un outil permettant la création de partitions logiques : donnez-lui une grosse partition (pourquoi pas redondée), et LVM vous permettra de gérer autant de sous-partitions « logiques » (virtuelles) en son sein, affranchies des contraintes listées ci-dessus.

C'est surtout pour nous permettre de chiffrer toute notre installation avec une seule clé qu'il nous est précieux, LVM : on crée une partition immense, avec de la redondance, on la chiffre, on met LVM dessus, et on découpe nos partitions systèmes là-dedans, comme on veut.

Même si vous ne souhaitez pas chiffrer vos données, LVM peut être une bonne idée, parce qu'il offre beaucoup plus de flexibilité que le partitionnement « à l'ancienne » pour pas cher.

Partitionnement en pratique

Personnellement, aujourd'hui, j'ai deux configurations de serveur à partitionner :

Partitionnement de 3 disques avec partition /boot et LVM

partitionnement_2_disques_lvm.svg

L'article est en réécriture à partir de ce point ! {.is-warning}

BIOS ou EFI ?

Ces deux acronymes sont deux versions du système d'amorçage. Ils démarrent l'ordinateur et vont chercher l'OS à lancer sur disque. BIOS est plus vieux, donc on préfère utiliser EFI quand c'est supporté. (Pour les détails, faudra aller voir ailleurs.)

Pour savoir si votre système supporte BIOS ou EFI ou les deux, lancez la commande dmidecode | less en tant qu'administrateur :

# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
61 structures occupying 2578 bytes.
Table at 0x....

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Intel Corp.
        # [...]
        Characteristics:
                # [...]
                BIOS boot specification is supported
                UEFI is supported
# [...]

Comme vous pouvez le voir, on lit à la fois BIOS boot specification is supported et UEFI is supported. J'ai donc le choix.

Kibioctets (Kio ou KiB) ou Kilooctets (Ko ou KB) ?

Dans les commandes suivantes, j'utiliserai des KiB (kibioctets) et non des KB (kilooctets). Cela n'a pas grande importance. La notation "kilo, méga..." du système métrique fonctionne en base 10 : « 1 Ko = 1000 (10³) octets ». En informatique, tout tourne en base 2 : « 1 Kio = 1024 (2¹⁰) octets ». En conséquence, on a deux notations qui veulent dire presque la même chose : 1 Mio = 1,048576 Mo.

Ça serait quand même plus simple si tout le monde comptait en base 2 !

Création des partitions sur le Bebop (3 disques)

Et pour tout le disque, nous obtenons :

# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdb       8:16   0  1.8T  0 disk
└─sdb1    8:17   0  1.8T  0 part
  └─md0   9:0    0  1.8T  0 raid1
sdc       8:32   1  1.8T  0 disk
└─sdc1    8:33   1  1.8T  0 part
  └─md0   9:0    0  1.8T  0 raid1
sda       8:0    0  1.8T  0 disk
├─sda4    8:4    0  1.3T  0 part
├─sda2    8:2    0  512M  0 part
├─sda3    8:3    0 97.7G  0 part
└─sda1    8:1    0 1007K  0 part    

Création des partitions sur Swordfish & Red Tail (2 disques)

Et voilà le travail !

# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdb       8:16   0  1.8T  0 disk
├─sdb2    8:18   0  1.3T  0 part
│ └─md0   9:0    0  1.3T  0 raid1
└─sdb1    8:17   0  500G  0 part
sda       8:0    0  1.8T  0 disk
├─sda4    8:4    0 97.7G  0 part
├─sda2    8:2    0  512M  0 part
├─sda5    8:5    0  1.3T  0 part
│ └─md0   9:0    0  1.3T  0 raid1
├─sda3    8:3    0  7.8G  0 part
└─sda1    8:1    0 1007K  0 part

Installation des systèmes de fichier

C'est magnifique, nous avons des partitions. Mais pour l'instant, elles ne servent à rien : il leur manque un système de fichier pour être utilisables par un système d'exploitation.

Si vous comptez chiffrer les disques de votre futur serveur (ce qu'on recommande chaudement si votre serveur est dans un centre de données), il faut configurer le chiffrement avant d'installer un système de fichier. Rendez-vous donc sur le guide du chiffrement à froid, où on traitera aussi de l'installation du système de fichier de A à Z : vous avez donc fini ce guide, bravo !


Si vous êtes encore là, vous n'avez pas l'intention de chiffrer vos disques. Il ne vous reste donc plus qu'à ajouter ce satané système de fichiers à vos partitions, et vous pourrez enfin installer votre système d'exploitation préféré !

Oui mais quel système de fichiers ? ext4 ou ZFS ou autre ?

TODO: ext4 vs. ZFS. Un guide en anglais.

Références