PartitionnementObjectif 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 exemple 1 Gio.
  • Définissez l’étiquette swap pour la partition (facultatif) et cliquez sur Mise à jour des paramètres.

InfoLa 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’étiquette root 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.

Partitionnement Linux

É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.

ImportantActuellement, 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.

InfoNous 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 en ext4
  • 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é de 500 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 exemple 1 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.

Partitionnement

InfoNotez 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ée boot et formatée en ext4
  • une partition swap d’une taille égale à la RAM disponible, étiquetée swap
  • une partition principale de 5 Go étiquetée root et formatée en ext4
  • une partition /home étiquetée home, occupant l’espace restant et formatée en ext4

Partitionnement

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ée boot et formatée en ext4
  • une partition swap étiquetée swap et dont la taille équivaut à la RAM disponible
  • une partition principale occupant l’espace restant, étiquetée root et formatée en ext4

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.

HP Proliant Microserver

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 exemple 60,00 Gio.
  • Cliquez sur Créer.
  • Sélectionnez le disque Disque2.vdi et cliquez sur Choisir.
  • Confirmez par OK.

Partitionnement

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.

ImportantLors 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.

ImportantAttention, 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 :

VirtualBox EFI

  • Commencez par créer une partition /boot/efi et définissez une capacité de 200 Mio.
  • Définissez éventuellement l’étiquette EFI pour cette partition.
  • Créez les autres partitions comme de coutume.

Partitionnement

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

InfoVous 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

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée.