Objectif de cet atelier pratique :
- prise en main de l’organisation d’un disque dur sur un système Linux
Le partitionnement automatique
Lors de l’installation initiale de Rocky Linux, nous avons opté pour le partitionnement automatique. Le but de l’opération était de disposer d’un système Linux fonctionnel pour nous entraîner, sans nous soucier des menus détails de l’organisation du système sous le capot.
Dans la configuration par défaut, l’installateur organise le disque en utilisant le gestionnaire de volumes logiques LVM (Logical Volume Manager). Il s’agit là d’une couche d’abstraction entre le système de fichiers et les partitions, qui permet une approche plus souple dans l’organisation du disque.
Nous aurons l’occasion d’aborder cette manière de faire les choses en temps et en heure. Pour l’instant, LVM constitue tout au plus une couche de complexité inutile dont nous allons nous débarrasser, afin de mieux comprendre les bases de l’organisation d’un disque dur sous Linux.
Tout au long de cet atelier pratique, nous allons procéder à une série de réinstallations successives d’un système minimal Rocky Linux 8, en optant pour le partitionnement manuel, avec des schémas de partitionnement allant du cas de figure le plus rudimentaire à des scénarios un peu plus élaborés.
Les tables de partitionnement MBR et GPT
Les informations de partitionnement sont actuellement gérées par deux procédures distinctes :
- MBR (Master Boot Record)
- GPT (GUID Partition Tables)
Les concepts de partitionnement basés sur les tables de partitions MBR remontent à l’époque MS-DOS, ce qui explique tout un ensemble de limitations et de règles plus ou moins farfelues. Ce concept reste pourtant valable pour à peu près tous les disques durs utilisés dans des PC Windows et/ou Linux jusqu’en 2012. Dans ce cas de figure, la table de partitions est stockée dans le MBR, c’est-à-dire le premier secteur du disque dur.
GPT est un standard créé il y a quelque temps déjà pour éviter les nombreuses limitations liées au MBR. Les ordinateurs de la marque Apple utilisent GPT depuis 2005. Les machines Windows y ont migré depuis la présentation de Windows 8 à l’automne 2012. L’UEFI, le remplaçant du BIOS, exige l’utilisation d’une table de partitionnement GPT.
En théorie, le partitionnement GPT est censé avoir remplacé le modèle MBR depuis belle lurette. En pratique, ce dernier reste largement répandu et nous retrouvons ce paradigme classique où une technologie obsolète a la vie dure et refuse de céder la place au progrès.
Identifier le type de partitionnement sur mon système
Lors de l’installation initiale de Rocky Linux, c’est l’installateur qui a sélectionné automatiquement le type de partitionnement qu’il fallait utiliser sous le capot.
- Dans la majorité des cas, nous retrouverons un partitionnement MBR, notamment avec les BIOS traditionnels, les BIOS modernes en mode legacy et les installations dans VirtualBox avec la configuration par défaut.
- Le partitionnement GPT sera utilisé sur des systèmes où l’UEFI a remplacé le BIOS.
Pour savoir quel est le type de partitionnement utilisé sur votre machine, invoquez la commande suivante :
$ sudo fdisk -l /dev/sda 2> /dev/null | grep type
Disk label type: dos
Ici, j’ai utilisé fdisk
avec l’option -l
pour afficher la table de partitions de mon disque sda
, en faisant fi des éventuels messages d’erreur et en filtrant l’affichage pour obtenir la ligne qui me renseigne sur le type d’étiquette du disque. L’étiquette dos
correspond à une table de partitionnement MBR.
Sur une machine UEFI, la même commande m’affiche un type d’étiquette gpt
:
$ sudo fdisk -l /dev/sda 2> /dev/null | grep type
Disk label type: gpt
Pour éviter la confusion, nous allons commencer par traiter le partitionnement MBR, étant donné que c’est le cas de figure que nous allons rencontrer le plus souvent sous Rocky Linux 8. Une fois que nous serons à l’aise avec cette manière traditionnelle de faire les choses, nous attaquerons les tables de partitions GPT et les outils pour les gérer.
Le schéma de partitionnement le plus simple
Pour commencer, nous allons choisir le schéma de partitionnement le plus simple pour notre installation. Un système Linux a besoin d’au moins deux partitions :
- une partition d’échange ou
swap
- une partition principale
La partition d’échange
La partition swap
est une sorte de mémoire virtuelle de votre machine, une extension dans le cas où vous arriveriez aux limites de la mémoire vive. Lorsque ce cas de figure se présente, c’est-à-dire si la RAM arrive à saturation, son contenu est délocalisé sur cette zone du disque pour éviter de bloquer le système. La taille de la partition swap
sera égale à celle de la mémoire vive disponible.
Les systèmes de fichiers pour la partition principale
Une fois que nous aurons créé notre swap
, la partition principale occupera simplement tout l’espace restant du disque. L’installateur de Rocky Linux propose une sélection de systèmes de fichiers au choix pour la formater :
ext2
(second extended file system) est le système de fichiers historique de GNU/Linux.ext3
est un autre système de fichiers GNU/Linux, une évolution d’ext2
. Ce qui le caractérise principalement, c’est l’utilisation d’un fichier journal. On arrive ainsi à éviter la longue phase de récupération lors d’un arrêt brutal de la machine.ext4
est le successeur d’ext3
. C’est le système de fichiers que nous utiliserons pour formater notre partition principale.- En dehors de cela, il existe une multitude de systèmes de fichiers comme XFS, JFS, ReiserFS ou Btrfs, qui ont chacun des avantages et des inconvénients. L’installateur de Rocky Linux 8 utilise XFS par défaut pour formater le disque dur si l’on opte pour le partitionnement automatique.
Retour à la case départ
Démarrez une installation fraîche de Rocky Linux 8. Si vous disposez d’une machine virtuelle sous VirtualBox, vous avez le choix :
- Créez une nouvelle machine virtuelle.
- Écrasez le système invité existant.
Dans tous les cas, renseignez la langue du système, le fuseau horaire et la disposition du clavier comme nous avons pu le faire auparavant. Désactivez le service Kdump, activez l’interface réseau et renseignez le nom d’hôte. Optez pour une installation minimale et configurez le fuseau horaire. Définissez un mot de passe pour root
et ajoutez un utilisateur normal. Ensuite, cliquez sur Installation Destination pour accéder à l’interface de partitionnement de l’installateur.
- Cliquez sur Personnalisé, puis sur Fait.
- Si vous écrasez un système Linux installé, cliquez sur la petite flèche > à gauche du nom du système pour afficher les partitions existantes.
- Sélectionnez n’importe quelle partition, puis cliquez sur le petit bouton – en bas à gauche de l’écran pour la supprimer.
- Confirmez la suppression de toutes les données sur le disque.
Créer la partition d’échange
- Nous n’utilisons pas LVM. Sélectionnez le schéma de partitionnement Partition standard dans le menu déroulant.
- Cliquez sur le bouton + en bas à gauche de l’écran pour ajouter un point de montage pour la partition d’échange.
- Sélectionnez le point de montage
swap
et définissez sa taille. Elle sera égale à la quantité de RAM disponible, par exemple1 Gio
. - Définissez l’étiquette
swap
pour la partition (facultatif) et cliquez sur Mise à jour des paramètres.
La combinaison de touches Ctrl+Alt+F2 vous permet d’ouvrir une console virtuelle depuis l’installateur. Invoquez alors la commande free -m
pour afficher la quantité de RAM disponible dans votre machine. Revenez à la fenêtre de l’installateur avec Ctrl+Alt+F6. Si vous installez une machine virtuelle dans VirtualBox, utilisez les raccourcis clavier respectifs CtrlDroite+F2 et CtrlDroite+F6.
Créer la partition principale
- Cliquez sur le bouton + en bas à gauche de l’écran pour ajouter un point de montage pour la partition principale.
- Sélectionnez le point de montage
/
sans renseigner la capacité souhaitée, afin d’utiliser la totalité de l’espace disponible. - Sélectionnez le système de fichiers
ext4
dans le menu déroulant, définissez l’étiquetteroot
pour la partition (facultatif) et cliquez sur Mise à jour des paramètres. - Cliquez sur le bouton Fait en haut à gauche pour passer à l’écran suivant.
- L’installateur vous affiche un récapitulatif des opérations. Confirmez en acceptant les modifications, ce qui vous ramène à l’écran principal.
- Démarrez l’installation du système et allez boire un café en attendant l’installation du système minimal.
État des lieux
Au terme du redémarrage initial, connectez-vous en tant qu’utilisateur normal et invoquez la commande mount
:
$ mount | grep sda /dev/sda1 on / type ext4 (rw,relatime,seclabel)
Dans le précédent atelier pratique, nous avons vu que la commande mount
invoquée sans argument affiche l’ensemble des systèmes de fichiers montés. Les principes qui s’appliquent pour les disques externes restent valables pour les disques internes. Concrètement, je vois que la première partition de mon disque dur (/dev/sda1
) correspond à ma partition principale (/
), que le système de fichiers utilisé est l’ext4
et que le tout est accessible en lecture et en écriture (rw
).
Dans les systèmes Linux, c’est le fichier /etc/fstab
(file systems table) qui me renseigne sur l’organisation des systèmes de fichiers. Jetons un œil dans ce fichier :
$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Sep 13 13:19:47 2022
...
UUID=600fcc9a-2eca-4a42-886e-ce604dbe5f37 / ext4 defaults 1 1
UUID=2148c818-81a4-495b-9d52-aad2779d9429 none swap defaults 0 0
La page de manuel en ligne fstab(5)
nous renseigne sur la syntaxe de ce fichier. Chaque ligne contient une série de six champs, séparés par des espaces ou des tabulations, qui décrivent respectivement :
- le périphérique bloc à monter
- le point de montage
- le type de système de fichiers
- les options de montage
- deux indications pour la sauvegarde et la vérification de l’intégrité du système
Les éléments potentiellement déroutants dans notre fichier /etc/fstab
, ce sont les périphériques désignés par les UUID, c’est-à-dire les premiers champs qui commencent par UUID=quelquechose
.
Comprendre les UUID
L’UUID (Universally Unique Identifier) est un identifiant universel unique. Il s’agit là d’une chaîne de caractères théoriquement unique au monde qui identifie sans ambiguïté chaque élément de notre système, en l’occurrence chaque partition de notre disque dur. Ce n’est pas de la magie noire et, pour savoir quelle partition correspond à quel UUID, il suffit de jeter un œil dans le répertoire /dev/disk/by-uuid
:
$ ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx. ... 2148c818-81a4-495b-9d52-aad2779d9429 -> ../../sda2 lrwxrwxrwx. ... 600fcc9a-2eca-4a42-886e-ce604dbe5f37 -> ../../sda1
Le répertoire contient deux liens symboliques commençant par 2148c818
et 600fcc9a
sur mon système et qui pointent respectivement vers /dev/sda2
et /dev/sda1
.
Pour mieux comprendre les UUID, tentez une petite expérience pratique. Éditez le fichier /etc/fstab
et remplacez chaque UUID par le périphérique qu’il est censé représenter, en vous méfiant des fautes de frappe potentiellement fatales. Vous devrez obtenir quelque chose comme ceci :
/dev/sda1 / ext4 defaults 1 1 /dev/sda2 none swap defaults 0 0
Redémarrez le système. Vous constatez qu’il est toujours fonctionnel.
Actuellement, nous n’utilisons qu’un seul disque dur. Admettons que nous souhaitions en ajouter un après l’installation du système (et c’est d’ailleurs ce que nous allons faire tout à l’heure). Dans certains cas, il est théoriquement possible que le noyau décide de renommer les disques durs. Le nouveau serait nommé sda
et l’ancien disque sda
deviendrait sdb
. Il en résulterait que notre système ne démarrerait plus. Le recours aux UUID permet donc d’identifier les disques et les partitions de façon persistante.
Pourquoi les partitions ont-elles été inversées ?
Vous aurez peut-être remarqué que l’ordre des partitions sda1
et sda2
n’est pas celui que nous avions défini lors du partitionnement manuel. Cela est dû au fait que le programme d’installation a rectifié le tir en reléguant la partition d’échange vers la fin du disque.
Nous n’allons pas trop rentrer dans les détails mécaniques de géométrie de disque. Retenez juste le fait que sur un disque mécanique, il est plus logique de ranger la partition d’échange à la fin du disque et de réserver le début au système à proprement parler, étant donné que ces secteurs – physiquement situés au centre – sont un peu plus rapides d’accès pour les têtes de lecture.
Un schéma de partitionnement un peu plus élaboré
Après cette première prise en main du partitionnement manuel de l’installateur, je vous propose un deuxième exercice pour vous mettre à l’aise avec la procédure. Voici un schéma de partitionnement courant, que j’utilise sur mon ordinateur portable :
- une partition
/boot
de 500 Mo, formatée enext4
- une partition
swap
dont la taille équivaut à la RAM disponible - une partition principale occupant l’espace restant, formatée en
ext4
Préparation du disque
- Dans le menu principal de l’installateur, cliquez sur Installation Destination.
- Vérifiez si le disque est bien sélectionné.
- Cochez Personnalisé et cliquez sur Fait.
- Cliquez sur la flèche > à gauche du nom du système pour afficher les partitions existantes.
- Supprimez toutes les partitions.
- Dans le menu déroulant, sélectionnez Partition standard au lieu de LVM.
Créer la partition /boot
- Cliquez sur le bouton + pour créer un nouveau point de montage.
- Créez le point de montage
/boot
avec une capacité de500 Mio
. - Sélectionnez le système de fichiers
ext4
. - Définissez l’étiquette
boot
(facultatif). - Confirmez en cliquant sur Mise à jour des paramètres.
Créer la partition d’échange
- Cliquez sur le bouton + pour créer un autre point de montage.
- Créez le point de montage
swap
en spécifiant sa capacité en Gio, par exemple1 Gio
. - Définissez l’étiquette
swap
(facultatif). - Confirmez en cliquant sur Mise à jour des paramètres.
Créer la partition principale
- Cliquez sur le bouton + pour créer un dernier point de montage.
- Créez le point de montage
/
sans spécifier la capacité souhaitée. La partition occupera alors tout l’espace restant du disque. - Sélectionnez le système de fichiers
ext4
. - Définissez l’étiquette
root
(facultatif). - Confirmez en cliquant sur Mise à jour des paramètres, puis sur Fait.
Notez en passant que, là aussi, la partition d’échange est reléguée à la fin du disque par l’installateur.
État des lieux
Une fois l’installation terminée, voyons comment se présente le système sous le capot. Invoquez la commande mount
en filtrant les résultats pour les partitions du disque dur :
$ mount | grep sda /dev/sda2 on / type ext4 (rw,relatime,seclabel) /dev/sda1 on /boot type ext4 (rw,relatime,seclabel)
Notre fichier /etc/fstab
comporte une ligne de plus pour la partition /boot
:
$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Sep 14 07:30:42 2022
...
UUID=cd377de1-c5bf-4989-bcaa-6a522d5a893f / ext4 defaults 1 1
UUID=27d3007a-626f-4984-97f6-0e9a96534c75 /boot ext4 defaults 1 2
UUID=32473887-b412-4896-8238-8c2d881516bb none swap defaults 0 0
Jetons un œil dans /dev/disk/by-uuid
pour retrouver les correspondances entre les partitions et les UUID :
$ ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx. ... 27d3007a-626f-4984-97f6-0e9a96534c75 -> ../../sda1 lrwxrwxrwx. ... 32473887-b412-4896-8238-8c2d881516bb -> ../../sda3 lrwxrwxrwx. ... cd377de1-c5bf-4989-bcaa-6a522d5a893f -> ../../sda2
Comprendre les étiquettes
Lors de l’installation du système, nous avons défini des étiquettes boot
, root
et swap
pour les partitions respectives. Cette opération n’était pas strictement nécessaire, mais nous pouvons voir ici à quoi elle sert. Le rôle des étiquettes est similaire à celui des UUID. En effet, regardons dans /dev/disk/by-label
:
$ ls -l /dev/disk/by-label/ total 0 lrwxrwxrwx. 1 root root 10 14 sept. 09:39 boot -> ../../sda1 lrwxrwxrwx. 1 root root 10 14 sept. 09:39 root -> ../../sda2 lrwxrwxrwx. 1 root root 10 14 sept. 09:39 swap -> ../../sda3
Les étiquettes sont une autre manière d’obtenir un nommage persistant pour les partitions du système. Là aussi, je peux tenter l’expérience en éditant /etc/fstab
et en remplaçant les UUID par les étiquettes correspondantes. Voici à quoi cela ressemble sur mon système :
LABEL=root / ext4 defaults 1 1 LABEL=boot /boot ext4 defaults 1 2 LABEL=swap none swap defaults 0 0
Afficher l’espace occupé et l’espace disponible
La commande df
(disk free) nous renseigne sur l’espace occupé et l’espace disponible au sein des systèmes de fichiers. L’option -h
(--human-readable
) affiche les résultats dans un format plus lisible :
$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sda2 58G 1.8G 53G 4% / /dev/sda1 477M 117M 331M 27% /boot ...
Une partition pour /home
Faisons maintenant un petit exercice pratique pour nous familiariser davantage avec les concepts de partitionnement et de systèmes de fichiers. Cette fois-ci, effectuez une installation minimale de Rocky Linux en respectant le schéma de partitionnement suivant :
- une partition
/boot
de 500 Mo étiquetéeboot
et formatée enext4
- une partition
swap
d’une taille égale à la RAM disponible, étiquetéeswap
- une partition principale de 5 Go étiquetée
root
et formatée enext4
- une partition
/home
étiquetéehome
, occupant l’espace restant et formatée enext4
Vous devrez obtenir quelque chose comme ceci :
$ df -h | grep sda /dev/sda3 4,9G 1,7G 3,0G 37% / /dev/sda2 53G 53M 50G 1% /home /dev/sda1 477M 117M 331M 27% /boot
Partant de là, éditez /etc/fstab
et remplacez les UUID par les étiquettes correspondantes.
Ajouter un disque à une installation existante
Les différents scénarios de partitionnement et de formatage que nous avons vus jusqu’ici ont tous pu être mis en pratique avec l’interface graphique de l’installateur de Rocky Linux. Nous abordons maintenant un cas de figure où nous ne disposons plus de cet outil plus ou moins convivial, que les administrateurs durs à cuire appellent un « clicodrome ».
Notre point de départ, ce sera le schéma de partitionnement que nous avons vu précédemment, à savoir :
- une partition
/boot
de 500 Mo, étiquetéeboot
et formatée enext4
- une partition
swap
étiquetéeswap
et dont la taille équivaut à la RAM disponible - une partition principale occupant l’espace restant, étiquetée
root
et formatée enext4
Concrètement, notre disque dur sda
est organisé en trois partitions sda1
, sda2
et sda3
:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 58,5G 0 part / └─sda3 8:3 0 1G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
Insérer et connecter le deuxième disque dur
Si vous disposez d’une installation physique de Rocky Linux sur un serveur ou un PC faisant office de serveur, insérez le deuxième disque et connectez-le. Allumez la machine et vérifiez si les deux disques apparaissent bien dans le BIOS.
Ajouter un disque dans une machine virtuelle
Vous pouvez très bien ajouter un deuxième disque à un système invité installé dans VirtualBox.
- Éteignez le système invité et cliquez sur Configuration.
- Ouvrez l’onglet Stockage et repérez le Contrôleur SATA.
- Cliquez-droit sur le Contrôleur SATA et sélectionnez Disque dur.
- Dans la fenêtre subséquente, cliquez sur Créer.
- Confirmez le type de fichier de disque dur VDI par défaut.
- Confirmez la taille dynamiquement allouée du fichier.
- Nommez le disque
Disque2.vdi
et définissez sa taille, par exemple60,00 Gio
. - Cliquez sur Créer.
- Sélectionnez le disque
Disque2.vdi
et cliquez sur Choisir. - Confirmez par OK.
Vérifier la prise en charge du deuxième disque
Une fois que le nouveau disque dur est installé dans la machine – physique ou virtuelle – il faut démarrer le système. Voyons tout d’abord s’il s’affiche en tant que nouveau périphérique bloc :
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 58,5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 60G 0 disk
sr0 11:0 1 1024M 0 rom
L’affichage de lsblk
me montre bien la présence d’un deuxième disque sdb
non partitionné en dessous du disque sda
et de ses trois partitions sda1
, sda2
et sda3
.
Partitionner le deuxième disque
Nous utiliserons fdisk
pour créer une partition de type Linux
sur le disque sdb
:
$ sudo fdisk /dev/sdb
Appuyez sur N pour créer une nouvelle partition et confirmez successivement par Entrée toutes les valeurs proposées par défaut :
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): [Entrée] Using default response p. Partition number (1-4, default 1): [Entrée] First sector (2048-125829119, default 2048): [Entrée] Last sector, +sectors or +size{K,M,G,T,P} (2048-125829119, default 125829119): [Entrée] Created a new partition 1 of type 'Linux' and of size 60 GiB.
J’affiche la table des partitions en appuyant sur la touche P (print) :
Command (m for help): p Disk /dev/sdb: 60 GiB, 64424509440 bytes, 125829120 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x7a859cb0 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 125829119 125827072 60G 83 Linux
Ici, je viens de créer une partition de type Linux
(83
). J’appuie sur W (write) pour écrire la nouvelle table de partitions sur le disque :
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Je dispose bien d’une nouvelle partition /dev/sdb1
:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 58.5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 60G 0 part
sr0 11:0 1 1024M 0 rom
Formater le deuxième disque
Maintenant que mon nouveau disque est partitionné, je peux le formater. Nous avons vu un peu plus haut que, sous Rocky Linux, je dispose de toute une série de systèmes de fichiers au choix comme ext2
, ext3
, ext4
ou xfs
. Dans cet exemple, j’opte pour ext4
:
$ sudo mkfs -t ext4 /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 15728384 4k blocks and 3932160 inodes
...
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
Une fois que j’ai formaté la partition, je peux éventuellement l’étiqueter :
$ sudo e2label /dev/sdb1 data
L’étiquetage n’est pas obligatoire, mais il permet d’organiser les choses un peu plus proprement :
$ ls -l /dev/disk/by-label/ total 0 lrwxrwxrwx. 1 root root 10 Sep 14 11:00 boot -> ../../sda1 lrwxrwxrwx. 1 root root 10 Sep 14 11:12 data -> ../../sdb1 lrwxrwxrwx. 1 root root 10 Sep 14 11:00 root -> ../../sda2 lrwxrwxrwx. 1 root root 10 Sep 14 11:00 swap -> ../../sda3
Ensuite, je crée le point de montage /data
qui me permettra d’accéder aux données de mon nouveau disque :
$ sudo mkdir -v /data mkdir: created directory ‘/data’
Dans un premier temps, je monte le disque manuellement :
$ sudo mount -v -t ext4 /dev/sdb1 /data mount: /dev/sdb1 mounted on /data.
Lors de la première tentative de montage du disque, vous serez probablement confronté au message d’erreur suivant : mount : /data does not contain SELinux labels
. SELinux est un mécanisme de sécurité que nous aborderons (beaucoup) plus loin. Pour l’instant, vous pouvez résoudre le problème en invoquant la commande suivante : sudo restorecon -R /data
. J’aurais pu invoquer la commande de montage plus simplement :
$ sudo mount /dev/sdb1 /data
Et puisque nous avons vu que les UUID et les étiquettes identifient les partitions sans ambiguïté, nous aurions très bien pu nous y prendre comme ceci :
$ sudo mount LABEL=data /data
Dans un cas comme dans l’autre, vérifions si le disque est bien monté :
$ mount | grep sdb1 /dev/sdb1 on /data type ext4 (rw,relatime,seclabel)
Nous pouvons d’ores et déjà écrire des données sur le deuxième disque. N’oubliez pas que nous n’avons pas encore défini de permissions particulières pour cette arborescence. Pour l’instant, /data
appartient à l’utilisateur root
et au groupe root
:
$ cd /data $ sudo mkdir repertoiretest $ sudo touch repertoiretest/fichiertest
Vous serez peut-être vaguement surpris de trouver un répertoire lost+found
à la racine du disque. C’est tout à fait normal. Linux utilise ce répertoire lors des tests d’intégrité des systèmes de fichiers.
$ ls -l total 20 drwx------. 2 root root 16384 Sep 14 11:10 lost+found drwxr-xr-x. 2 root root 4096 Sep 14 11:29 repertoiretest
Tout fonctionne comme prévu et nous pouvons démonter le disque à la main :
$ cd $ sudo umount /data
Il ne reste plus qu’à éditer /etc/fstab
en fournissant les informations de ce nouveau système de fichiers :
/dev/sdb1 /data ext4 defaults 0 2
Si l’on veut faire les choses plus proprement, on peut identifier le disque par son UUID :
UUID=a3a3032f-68d7-4911-a5cc-a94fb8e068a7 /data ext4 defaults 0 2
Alternativement, on pourra utiliser l’étiquette du disque :
LABEL=data /data ext4 defaults 0 2
Croisez les doigts et redémarrez. Vérifiez si le disque a bien été monté automatiquement au démarrage du système :
$ mount | grep sdb1 /dev/sdb1 on /data type ext4 (rw,relatime,seclabel)
Le deuxième disque est désormais inclus dans mon système. Dorénavant, je dispose de près de 60 Go d’espace supplémentaire dans l’arborescence /data
:
$ df -h | grep sd
/dev/sda2 58G 1,8G 53G 4% /
/dev/sda1 477M 117M 331M 27% /boot
/dev/sdb1 59G 53M 56G 1% /data
Splendeur et misère des tables de partitions MBR
Il y aurait encore beaucoup de choses à dire sur les tables de partitions MBR. Au lieu de cela, je préfère vous fournir une synthèse rapide des possibilités et surtout des limitations.
Les disques munis d’un MBR distinguent trois types de partitions :
- primaire
- étendue
- logique
Un disque peut être muni d’un maximum de quatre partitions primaires, ce qui constitue une limitation considérable. C’est pourquoi on a la possibilité de définir une partition étendue à la place d’une des primaires. À l’intérieur de cette partition étendue, on pourra ensuite créer une série de partitions logiques.
Certains outils de partitionnement – par exemple, le programme d’installation de Rocky Linux – ne distinguent pas les différents types de partitions en surface et gèrent la répartition des types de partitionnement automatiquement sous le capot.
Une partition étendue ne constitue qu’une sorte de conteneur pour les partitions logiques. Le stockage des données à proprement parler s’effectue sur les partitions primaires et/ou logiques.
Attention, ne confondez pas le « type de partitions » avec celui que l’on utilise dans un autre contexte pour indiquer le système d’exploitation censé occuper la partition ou le rôle joué par la partition : Windows, Linux, Linux swap, Linux RAID, BSD, etc.
Avec un MBR, Linux peut gérer un maximum de quinze partitions, dont un maximum de onze logiques. En conséquence, la meilleure solution consiste à créer les trois primaires dans un premier temps, puis la partition étendue qui occupera tout le reste du disque et que l’on remplira de partitions logiques selon le besoin.
La taille maximale d’une telle partition est de deux téraoctets. Il existe une poignée d’astuces pour utiliser le partitionnement MBR avec des disques allant jusqu’à quatre téraoctets, mais il vaut mieux éviter de sauter à travers des cerceaux en feu et passer directement au partitionnement GPT.
Partitionnement manuel d’un système UEFI
Précédemment, nous avons défini un schéma de partitionnement relativement simple constitué de trois partitions : /boot
, swap
et la partition principale /
. Est-ce que nous pouvons partitionner un système UEFI de la même manière ? Oui, il suffit d’ajouter une partition EFI au début du disque.
VirtualBox peut émuler un système UEFI. Dans la configuration de la machine virtuelle, ouvrez l’onglet Système, repérez les Fonctions avancées et cochez Activer EFI :
- Commencez par créer une partition
/boot/efi
et définissez une capacité de200 Mio
. - Définissez éventuellement l’étiquette
EFI
pour cette partition. - Créez les autres partitions comme de coutume.
Comment savoir à coup sûr si vous disposez d’un système UEFI ?
- L’installateur de Rocky Linux n’a pas le même aspect au lancement en mode UEFI.
- Une fois que vous avez sélectionné le partitionnement manuel et que vous définissez le premier point de montage, vérifiez la présence d’une entrée
/boot/efi
dans le menu déroulant Point de montage. Si elle ne s’affiche pas, c’est que vous êtes en présence d’un BIOS traditionnel.
Une fois que le système est installé, voilà comment cela se présente :
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 200M 0 part /boot/efi ├─sda2 8:2 0 500M 0 part /boot ├─sda3 8:3 0 58,3G 0 part / └─sda4 8:4 0 1G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
L’installateur a choisi automatiquement une table de partitions GPT pour le partitionnement :
$ sudo fdisk -l /dev/sda 2> /dev/null | grep type
Disklabel type: gpt
Ajouter un disque avec une table de partitions GPT
Si je veux ajouter un deuxième disque à cette installation, il va falloir que j’utilise une table de partitions GPT. Notez en passant que rien ne m’empêche d’utiliser le partitionnement GPT sur une installation traditionnelle.
Il existe plusieurs solutions pour le partitionnement GPT d’un disque. Pour ma part, j’ai une préférence marquée pour l’outil gdisk
, qui fonctionne à peu de choses près comme fdisk
, sauf qu’il écrit des tables de partitions GPT.
L’outil de partitionnement gdisk
ne fait pas partie d’une installation minimale de Rocky Linux. Vous pouvez l’installer grâce à la commande sudo dnf install -y gdisk
.
Avant de faire quoi que ce soit, je vais nettoyer la table de partitions de mon disque /dev/sdb
grâce à la commande sgdisk
fournie par le paquet gdisk
:
$ sudo sgdisk --zap-all /dev/sdb
Lancez gdisk
en fournissant le disque sdb
en argument :
$ sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help):
La création d’une nouvelle partition se fait comme avec fdisk
. Appuyez sur N et confirmez successivement toutes les valeurs proposées par défaut :
Command (? for help): n Partition number (1-128, default 1): [Entrée] First sector (34-125829086, default = 2048) or {+-}size{KMGTP}: [Entrée] Last sector (2048-125829086, default = 125829086) or {+-}size{KMGTP}: [Entrée] Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): [Entrée] Changed type of partition to 'Linux filesystem'
Affichez la table des partitions en appuyant sur la touche P (print) :
Command (? for help): p Disk /dev/sdb: 125829120 sectors, 60.0 GiB Model: VBOX HARDDISK Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): FAD7B63D-1247-4C8D-A700-9DC882485335 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 125829086 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 125829086 60.0 GiB 8300 Linux filesystem
Nous venons de créer une partition de type Linux
(8300
). Appuyons sur W (write) pour l’écrire sur le disque :
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully.
Notre deuxième disque dispose bel et bien d’une table de partitions GPT :
$ sudo fdisk -l /dev/sdb 2> /dev/null | grep type
Disklabel type: gpt
Vous aurez probablement noté que la partition disposait d’un identifiant 8300
, par opposition à l’identifiant 83
pour le partitionnement MBR.
À partir de là, nous pouvons formater, étiqueter et monter notre disque GPT exactement comme nous l’avons fait pour le disque MBR :
$ sudo mkfs -t ext4 /dev/sdb1
$ sudo e2label /dev/sdb1 data
$ sudo mount /dev/sdb1 /data
...
Les GUID Partition Tables (GPT)
Avec les tables GPT, chacune des partitions est identifiée grâce à un Global Unique Identifier (GUID). Une table GPT offre théoriquement de la place pour 128 partitions, mais Linux n’en gère que les 15 premières. Toutes les partitions sont égales, c’est-à-dire que l’on ne fait plus la distinction entre les partitions primaires, étendues et logiques. Chaque partition peut avoir une taille théorique de 273 octets, autrement dit près d’un milliard de téraoctets. Cela devrait suffire pour quelque temps.
La table de partitions se situe dans les premiers 32× 512 = 17408 octets du disque dur. Une copie de ces informations se situe dans les 17 derniers kilo-octets du disque.
Pour des raisons de sécurité, la table de partitions GPT commence par des informations de partitionnement MBR pour suggérer aux outils compatibles MBR que l’ensemble du disque est déjà utilisé par une seule partition.
En principe, le partitionnement GPT peut être utilisé sur tous (!) les disques durs. Tous les systèmes d’exploitation modernes savent gérer ce type de partitionnement :
- les distributions Linux actuelles
- macOS
- toutes les versions 64-bits de Windows depuis XP
Lire la suite : Gérer les archives compressées
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire