104.1 Leçon 1
Certification : |
LPIC-1 |
---|---|
Version : |
5.0 |
Thème : |
104 Disques, systèmes de fichiers Linux, arborescence de fichiers standard (FHS) |
Objectif : |
104.1 Créer des partitions et des systèmes de fichiers |
Leçon : |
1 sur 1 |
Introduction
Peu importe le système d’exploitation, un disque dur doit être partitionné avant de pouvoir être utilisé. Une partition est un sous-ensemble logique du disque physique et les informations relatives aux partitions sont stockées dans une table de partitionnement. Cette table comprend des informations sur le premier et le dernier secteur de la partition et son type, ainsi que d’autres détails sur chaque partition.
En règle générale, chaque partition est considérée par le système d’exploitation comme un "disque" à part entière, même si elles résident toutes sur le même support physique. Sur les systèmes Windows, on leur attribue des lettres comme C:
(historiquement le disque principal), D:
et ainsi de suite. Sous Linux, chaque partition est assignée à un fichier de périphérique sous /dev
, comme /dev/sda1
ou /dev/sda2
.
Dans cette leçon, vous allez apprendre à créer, supprimer, restaurer et redimensionner des partitions en utilisant les trois outils les plus courants (fdisk
, gdisk
et parted
), à créer un système de fichiers sur ces partitions et enfin à créer et configurer une partition d’échange (swap partition) ou un fichier d’échange (swap file) pour l’utiliser comme mémoire virtuelle.
Note
|
Pour des raisons historiques, nous appellerons les supports de stockage "disques" tout au long de cette leçon, même si les systèmes de stockage modernes, comme les disques SSD et les mémoires flash, ne contiennent pas de "disques" à proprement parler. |
Comprendre le MBR et le GPT
Il existe principalement deux méthodes pour enregistrer les informations relatives aux partitions sur les disques durs. La première est le MBR (Master Boot Record), et la seconde est le GPT (GUID Partition Table).
- MBR
-
Il s’agit là d’un vestige des débuts de MS-DOS (plus précisément de PC-DOS 2.0 de 1983). Pendant quelques décennies, c’était là le schéma de partitionnement standard sur les PC. La table de partitionnement est stockée sur le premier secteur d’un disque, appelé secteur d’amorçage (boot sector), avec un chargeur d’amorçage comme GRUB sur les systèmes Linux. En revanche, le MBR présente une série de limitations gênantes sur les systèmes modernes, comme l’impossibilité d’adresser des disques d’une taille supérieure à 2 To, et la limite maximale de 4 partitions primaires par disque.
- GUID
-
Un système de partitionnement qui corrige la plupart des restrictions imposées par le MBR. Il n’y a pas de limite pratique pour la taille du disque, et le nombre maximum de partitions n’est restreint que par le système d’exploitation lui-même. On le trouve plus fréquemment sur les machines modernes qui utilisent l’UEFI au lieu de l’ancien BIOS des PC.
Dans le cadre des tâches d’administration système, il est fort possible que vous soyez confronté aux deux schémas. Il est donc important de savoir comment utiliser les outils associés à chacun d’entre eux pour créer, supprimer ou modifier des partitions.
Gérer les partitions MBR avec FDISK
L’outil standard pour gérer les partitions MBR sous Linux est fdisk
. C’est un programme interactif, piloté par un menu. Pour l’utiliser, tapez fdisk
suivi du nom du périphérique associé au disque que vous voulez modifier. Par exemple, la commande
# fdisk /dev/sda
va modifier la table de partitionnement du premier périphérique SATA (sda
) du système. Gardez à l’esprit que vous devez spécifier le périphérique correspondant au disque physique, et non pas l’une de ses partitions (comme /dev/sda1
).
Note
|
Toutes les opérations sur les disques dans cette leçon devront être effectuées en tant qu’utilisateur |
Au lancement, fdisk
affiche un message d’accueil ainsi qu’un avertissement, et il attend vos commandes.
# fdisk /dev/sda Welcome to fdisk (util-linux 2.33.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
L’avertissement est important. Vous pouvez créer, éditer ou supprimer des partitions à volonté, mais rien ne sera écrit sur le disque à moins que vous n’utilisiez la commande write (w
). Vous pouvez donc vous "entraîner" sans risque de perdre des données, tant que vous évitez d’utiliser la touche w
. Pour quitter fdisk
sans sauvegarder les modifications, utilisez la commande q
.
Note
|
Ceci étant dit, ne vous entraînez jamais sur un disque contenant des données importantes, car il y a toujours des risques. Utilisez plutôt un disque externe disponible ou une clé USB. |
Afficher la table de partitionnement en cours
La commande p
est utilisée pour afficher la table de partitionnement en cours. Le résultat ressemble à ceci :
Command (m for help): p Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors Disk model: CT120BX500SSD1 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: 0x97f8fef5 Device Boot Start End Sectors Size Id Type /dev/sda1 4096 226048942 226044847 107.8G 83 Linux /dev/sda2 226048944 234437550 8388607 4G 82 Linux swap / Solaris
Voici la signification de chacune des colonnes :
Device
-
Le périphérique affecté à la partition.
Boot
-
Indique si la partition est amorçable (
bootable
) ou non. Start
-
Le secteur où commence la partition.
End
-
Le secteur où se termine la partition.
Sectors
-
Le nombre total de secteurs dans la partition. Multipliez-le par la taille d’un secteur pour obtenir la taille de la partition en octets.
Size
-
La taille de la partition au format "humainement lisible". Dans l’exemple ci-dessus, les valeurs sont exprimées en gigaoctets.
Id
-
La valeur numérique qui représente le type de la partition.
Type
-
La description du type de partition.
Partitions primaires et étendues
Sur un disque MBR, vous pouvez avoir deux types de partitions, primaire et étendue. Comme nous l’avons dit plus haut, vous ne pouvez avoir que quatre partitions primaires sur le disque, et si vous voulez rendre le disque "amorçable", la première partition doit être une partition primaire.
Une manière de contourner cette limitation consiste à créer une partition étendue qui sert de conteneur pour les partitions logiques. Vous pourriez avoir, par exemple, une partition primaire, une partition étendue occupant le reste de l’espace disque et cinq partitions logiques à l’intérieur de celle-ci.
Pour un système d’exploitation comme Linux, les partitions primaires et étendues sont gérées exactement de la même manière, il n’y a donc pas le moindre "avantage" à utiliser l’une plutôt que l’autre.
Créer une partition
Pour créer une partition, utilisez la commande n
. Par défaut, les partitions seront créées au début de l’espace non alloué sur le disque. Vous devrez indiquer le type de partition (primaire ou étendue), le premier secteur et le dernier secteur.
Pour le premier secteur, vous pouvez généralement accepter la valeur par défaut proposée par fdisk
, à moins que vous n’ayez besoin d’une partition qui commence à un secteur donné. Au lieu de spécifier le dernier secteur, vous pouvez très bien préciser une taille suivie des lettres K
, M
, G
, T
ou P
(Kilo, Méga, Giga, Téra ou Péta). Ainsi, si vous souhaitez créer une partition de 1 Go, vous pouvez spécifier +1G
comme Last sector
, et fdisk
va dimensionner la partition en fonction. Voici un exemple de création d’une partition primaire :
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-3903577, default 2048): 2048 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3903577, default 3903577): +1G
Vérifier l’espace non alloué
Si vous souhaitez connaître la quantité d’espace libre sur le disque, vous pouvez utiliser la commande F
pour afficher l’espace non alloué, comme ceci :
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 2099200 3903577 1804378 881M
Supprimer des partitions
Pour supprimer une partition, utilisez la commande d
. fdisk
vous demandera le numéro de la partition que vous voulez effacer, sauf s’il n’y a qu’une seule partition sur le disque. Dans ce cas, cette partition sera sélectionnée et supprimée immédiatement.
Notez que si vous supprimez une partition étendue, toutes les partitions logiques qu’elle contient seront également supprimées.
Attention aux écarts !
Gardez à l’esprit que lorsque vous créez une nouvelle partition avec fdisk
, la taille maximale sera limitée à la quantité maximale d’espace contigu non alloué sur le disque. Admettons, par exemple, que vous ayez la table de partitionnement suivante :
Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 1050623 1048576 512M 83 Linux /dev/sdd2 1050624 2099199 1048576 512M 83 Linux /dev/sdd3 2099200 3147775 1048576 512M 83 Linux
Vous supprimez alors la partition 2 et vérifiez l’espace libre :
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 1050624 2099199 1048576 512M 3147776 3903577 755802 369M
En additionnant la taille de l’espace non alloué, nous disposons théoriquement de 881 Mo. Or, voyez ce qui se passe lorsque nous essayons de créer une partition de 700 Mo :
Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (2,4, default 2): 2 First sector (1050624-3903577, default 1050624): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-2099199, default 2099199): +700M Value out of range.
Cela est dû au fait que le plus grand espace contigu non alloué sur le disque est le bloc de 512 Mo qui appartenait à la partition 2. Votre nouvelle partition ne peut pas "déborder" vers la partition 3 pour utiliser une partie de l’espace non alloué qui se trouve après.
Changer le type de partition
Il est parfois nécessaire de changer le type de partition, notamment lorsqu’il s’agit de disques qui seront utilisés avec d’autres systèmes d’exploitation et d’autres plateformes. Pour ce faire, utilisez la commande t
suivie du numéro de la partition que vous souhaitez modifier.
Le type de partition doit être spécifié par son code hexadécimal correspondant, et vous pouvez afficher une liste de tous les codes disponibles en utilisant la commande l
.
Ne confondez pas le type de partition avec le système de fichiers utilisé. Même si au début il y avait une corrélation entre les deux, vous ne pouvez plus supposer que c’est le cas aujourd’hui. Une partition Linux, par exemple, peut contenir n’importe quel système de fichiers natif de Linux, comme ext4 ou ReiserFS.
Tip
|
Les partitions Linux sont de type |
Gérer les partitions GUID avec GDISK
L’outil gdisk
est l’équivalent de fdisk
pour les disques avec des partitions GPT. En fait, l’interface est inspirée de fdisk
, avec une invite interactive et les mêmes commandes (ou des commandes très similaires).
Afficher la table de partitionnement en cours
La commande p
est utilisée pour afficher la table de partitionnement en cours. Le résultat ressemble à ceci :
Command (? for help): p Disk /dev/sdb: 3903578 sectors, 1.9 GiB Model: DataTraveler 2.0 Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): AB41B5AA-A217-4D1E-8200-E062C54285BE 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 3903544 Partitions will be aligned on 2048-sector boundaries Total free space is 1282071 sectors (626.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2623488 3147775 256.0 MiB 8300 Linux filesystem
Nous remarquons d’emblée plusieurs choses :
-
Chaque disque possède un identifiant de disque unique (GUID). Il s’agit d’un nombre hexadécimal de 128 bits, attribué de manière aléatoire lors de la création de la table de partitionnement. Étant donné qu’il existe 3,4 × 1038 valeurs possibles pour ce nombre, les chances que deux disques aléatoires disposent du même GUID sont très faibles. Le GUID peut être utilisé pour identifier les systèmes de fichiers à monter au démarrage (et à quel endroit), ce qui évite d’utiliser le chemin d’accès au périphérique (comme
/dev/sdb
). -
Vous voyez la phrase
Partition table holds up to 128 entries
(la table de partitionnement peut contenir jusqu’à 128 entrées) ? C’est exact, vous pouvez avoir jusqu’à 128 partitions sur un disque GPT. Pour cette raison, il n’est pas nécessaire d’avoir des partitions primaires et étendues. -
L’espace libre est affiché sur la dernière ligne, il n’est donc pas nécessaire d’avoir un équivalent de la commande
F
de fdisk.
Créer une partition
La commande pour créer une partition est n
, comme dans fdisk
. La principale différence est qu’en plus du numéro de partition et du premier et dernier secteur (ou de la taille), vous pouvez également spécifier le type de partition pendant la création. Les partitions GPT supportent beaucoup plus de types que les partitions MBR. Vous pouvez consulter la liste de tous les types supportés en utilisant la commande l
.
Supprimer une partition
Pour supprimer une partition, tapez d
et le numéro de la partition. Contrairement à fdisk
, la première partition ne sera pas sélectionnée automatiquement si c’est la seule sur le disque.
Sur les disques GPT, les partitions peuvent être facilement réorganisées, ou "triées", pour éviter les écarts dans la séquence de numérotation. Pour ce faire, il suffit d’utiliser la commande s
. Par exemple, prenons un disque avec la table de partitionnement suivante :
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2099200 2361343 128.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Si vous supprimez la deuxième partition, la table deviendra :
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Si vous utilisez la commande s
, ce sera :
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2361344 2623487 128.0 MiB 8300 Linux filesystem
Notez que la troisième partition est devenue la seconde.
Écart ? Quel écart ?
Contrairement aux disques MBR, lors de la création d’une partition sur un disque GPT, la taille n’est pas limitée par la quantité maximale d’espace contigu non alloué. Vous pouvez utiliser jusqu’au dernier bit d’un secteur libre, quel que soit son emplacement sur le disque.
Les options de récupération
Les disques GPT enregistrent des copies de sauvegarde de l’en-tête GPT et de la table de partitionnement, ce qui facilite la récupération des disques au cas où ces données sont endommagées. gdisk
fournit des fonctionnalités pour faciliter ces tâches de récupération, accessibles avec la commande r
.
Vous pouvez reconstruire un en-tête GPT ou une table de partitionnement endommagés avec b
et c
respectivement, ou utiliser l’en-tête et la table pour reconstruire une sauvegarde avec d
et e
. Vous pouvez également convertir un MBR en GPT avec f
et faire l’inverse avec g
, parmi d’autres opérations. Tapez ?
dans le menu de récupération pour obtenir une liste de toutes les commandes de récupération disponibles ainsi que la description de ce qu’elles font.
Créer des systèmes de fichiers
Le partitionnement du disque n’est que la première étape vers l’utilisation d’un disque. Il faut ensuite formater la partition avec un système de fichiers avant de l’utiliser pour stocker des données.
Un système de fichiers contrôle la manière dont les données sont stockées et accessibles sur le disque. Linux prend en charge plusieurs systèmes de fichiers, certains natifs, comme la famille ext (Extended Filesystem), tandis que d’autres proviennent d’autres systèmes d’exploitation, comme FAT de MS-DOS, NTFS de Windows NT, HFS et HFS+ de Mac OS, etc.
L’outil standard utilisé pour créer un système de fichiers sous Linux est mkfs
, qui existe en plusieurs "variétés" en fonction du système de fichiers qu’il doit gérer.
Créer un système de fichiers ext2/ext3/ext4
Le système de fichiers ext (Extended Filesystem) a été le premier système de fichiers pour Linux. Au fil des années, il a été remplacé par de nouvelles versions appelées ext2, ext3 et ext4. Cette dernière version est actuellement le système de fichiers par défaut pour de nombreuses distributions Linux.
Les outils mkfs.ext2
, mkfs.ext3
et mkfs.ext4
sont utilisés pour créer des systèmes de fichiers ext2, ext3 et ext4. En fait, tous ces "outils" n’existent qu’en tant que liens symboliques vers un autre programme appelé mke2fs
. mke2fs
modifie ses paramètres par défaut en fonction du nom par lequel il est invoqué. Ainsi, ils ont tous le même comportement et les mêmes paramètres de ligne de commande.
La forme d’utilisation la plus simple est :
# mkfs.ext2 TARGET
Où TARGET
est le nom de la partition dans laquelle le système de fichiers doit être créé. Par exemple, pour créer un système de fichiers ext3 dans la partition /dev/sdb1
, la commande serait :
# mkfs.ext3 /dev/sdb1
Au lieu d’utiliser la commande associée au système de fichiers que vous souhaitez créer, vous pouvez passer le paramètre -t
à mke2fs
suivi du nom du système de fichiers. Par exemple, les commandes suivantes sont équivalentes, et vont créer un système de fichiers ext4 sur /dev/sdb1
.
# mkfs.ext4 /dev/sdb1 # mke2fs -t ext4 /dev/sdb1
Paramètres en ligne de commande
mke2fs
supporte toute une panoplie de paramètres et d’options en ligne de commande. En voici quelques-uns parmi les plus importants. Tous s’appliquent également à mkfs.ext2
, mkfs.ext3
et mkfs.ext4
:
-b SIZE
-
Fixe la taille des blocs de données dans le périphérique à
SIZE
(taille), qui peut être de 1024, 2048 ou 4096 octets par bloc. -c
-
Vérifie que le périphérique cible (
TARGET
) ne contient pas de blocs défectueux avant de créer le système de fichiers. Vous pouvez effectuer une vérification minutieuse, mais beaucoup plus lente, en passant ce paramètre deux fois, comme dansmkfs.ext4 -c -c TARGET
. -d DIRECTORY
-
Copie le contenu du répertoire (
DIRECTORY
) spécifié vers la racine du nouveau système de fichiers. Cette option est utile si vous avez besoin de "pré-remplir" le disque avec un ensemble de fichiers prédéfinis. -F
-
Attention, danger ! Cette option va forcer
mke2fs
à créer un système de fichiers, même si les autres options qui lui sont passées ou la cible sont dangereuses ou n’ont aucun sens. Si elle est spécifiée deux fois (comme dans-F -F
), elle peut même être utilisée pour créer un système de fichiers sur un périphérique monté ou en cours d’utilisation, ce qui est une très, très mauvaise idée. -L VOLUME_LABEL
-
Fixe le nom du volume à celui spécifié dans
VOLUME_LABEL
. Cette étiquette doit comporter 16 caractères au maximum. -n
-
C’est une option très pratique qui simule la création du système de fichiers et affiche ce qui se passerait si elle était exécutée sans l’option
n
. Considérez-la comme un mode "test" qui permet de bien vérifier les choses avant d’effectuer des changements sur le disque. -q
-
Mode silencieux.
mke2fs
s’exécutera normalement, mais n’affichera rien dans le terminal. Utile pour lancermke2fs
à partir d’un script. -U ID
-
Cette option définit l’UUID (Universally Unique Identifier) d’une partition à la valeur spécifiée par ID. Les UUID sont des nombres de 128 bits en notation hexadécimale qui servent à identifier de manière unique une partition pour le système d’exploitation. Ce numéro est spécifié sous la forme d’une chaîne de 32 chiffres au format 8-4-4-4-12, c’est-à-dire 8 chiffres, un tiret, 4 chiffres, un tiret, 4 chiffres, un tiret, 4 chiffres, un tiret, 12 chiffres, comme dans
D249E380-7719-45A1-813C-35186883987E
. Au lieu d’un ID, vous pouvez également spécifier des paramètres commeclear
pour supprimer l’UUID du système de fichiers,random
pour utiliser un UUID généré de manière aléatoire, outime
pour générer un UUID basé sur l’heure. -V
-
Le mode verbeux permet d’afficher beaucoup plus d’informations que d’habitude pendant l’opération. Utile pour le débogage.
Créer un système de fichiers XFS
XFS est un système de fichiers très performant développé à l’origine par Silicon Graphics en 1993 pour son système d’exploitation IRIX. En raison de ses performances et de sa fiabilité, il est couramment utilisé pour les serveurs et autres environnements qui nécessitent une bande passante élevée (ou garantie) pour le système de fichiers.
Les outils pour gérer les systèmes de fichiers XFS sont inclus dans le paquet xfsprogs
. Ce paquet devra éventuellement être installé manuellement, étant donné qu’il n’est pas inclus par défaut dans certaines distributions Linux. D’autres, comme Red Hat Enterprise Linux 7, utilisent XFS comme système de fichiers par défaut.
Les systèmes de fichiers XFS sont divisés en deux parties au moins, une section de journalisation (log section) qui enregistre l’ensemble des opérations du système de fichiers (communément appelée journal), et la section de données (data section). La section de journalisation peut être située à l’intérieur de la section de données (comportement par défaut), ou même sur un disque séparé, pour gagner en performance et en fiabilité.
La commande la plus simple pour créer un système de fichiers XFS est mkfs.xfs TARGET
, où TARGET
représente la partition sur laquelle vous souhaitez créer le système de fichiers. Par exemple : mkfs.xfs /dev/sda1
.
Tout comme mke2fs
, mkfs.xfs
accepte un certain nombre d’options en ligne de commande. Voici les options les plus courantes.
-b size=VALUE
-
Définit la taille des blocs sur le système de fichiers, exprimée en octets, à celle spécifiée dans
VALUE
. La valeur par défaut est de 4096 octets (4 KiB), la valeur minimale est de 512 et la valeur maximale est de 65536 (64 KiB). -m crc=VALUE
-
Les paramètres qui commencent par
-m
sont des options de métadonnées. Celui-ci active (siVALUE
est1
) ou désactive (siVALUE
est0
) l’utilisation des contrôles CRC32c pour vérifier l’intégrité de toutes les métadonnées sur le disque. Cette vérification permet une meilleure détection des erreurs et une récupération en cas de panne liée à des problèmes matériels, c’est pourquoi elle est activée par défaut. L’impact de cette vérification sur les performances devrait être minime, il n’y a donc aucune raison de la désactiver en temps normal. -m uuid=VALUE
-
Définit l’UUID de la partition à celui spécifié dans
VALUE
. Rappelez-vous que les UUID sont des nombres de 32 caractères (128 bits) en base hexadécimale, spécifiés en groupes de 8, 4, 4, 4 et 12 chiffres séparés par des tirets, comme1E83E3A3-3AE9-4AAC-BF7E-29DFFECD36C0
. -f
-
Force la création d’un système de fichiers sur le périphérique cible, même si un système de fichiers y est détecté.
-l logdev=DEVICE
-
Cette option transfère la section de journalisation du système de fichiers sur le périphérique (
DEVICE
) spécifié, au lieu de la ranger dans la section de données. -l size=VALUE
-
Cette option va fixer la taille de la section de journalisation à celle spécifiée dans
VALUE
. La taille peut être spécifiée en octets, avec des suffixes commem
oug
.-l size=10m
, par exemple, va limiter la section de journalisation à 10 mégaoctets. -q
-
Mode silencieux. Dans ce cas,
mkfs.xfs
ne va pas afficher les paramètres du système de fichiers en cours de création. -L LABEL
-
Définit l’étiquette du système de fichiers, qui peut comporter douze caractères au maximum.
-N
-
Tout comme l’option
-n
demke2fs
,mkfs.xfs
va afficher tous les paramètres de création du système de fichiers, sans pour autant le créer.
Créer un système de fichiers FAT ou VFAT
Le système de fichiers FAT est apparu avec MS-DOS et a fait l’objet de nombreuses révisions au fil des ans, pour aboutir finalement au format FAT32 publié en 1996 avec Windows 95 OSR2.
VFAT est une extension du format FAT16 qui prend en charge les noms de fichiers longs (jusqu’à 255 caractères). Les deux systèmes de fichiers sont gérés par le même outil, mkfs.fat
. mkfs.vfat
est un alias de cet outil.
Le système de fichiers FAT présente de sérieux inconvénients qui limitent son utilisation sur les disques de grande capacité. FAT16, par exemple, prend en charge des volumes de 4 Go au maximum et une taille de fichiers maximale de 2 Go. FAT32 augmente la taille des volumes jusqu’à 2 Po avec une taille de fichiers maximale de 4 Go. Pour cette raison, les systèmes de fichiers FAT sont aujourd’hui plus couramment utilisés sur les petits disques flash ou les cartes mémoire (d’une taille maximale de 2 Go), ainsi que sur les anciens appareils et les systèmes d’exploitation qui ne prennent pas en charge des systèmes de fichiers plus avancés.
La commande la plus simple pour créer un système de fichiers FAT est mkfs.fat TARGET
, où TARGET
représente la partition sur laquelle vous souhaitez créer le système de fichiers. Par exemple : mkfs.fat /dev/sda1
.
Tout comme d’autres outils, mkfs.fat
prend en charge un certain nombre d’options en ligne de commande. En voici les plus importantes. Une liste complète avec une description de chaque option peut être consultée dans le manuel de cet outil, à l’aide de la commande man mkfs.fat
.
-c
-
Vérifie la présence de blocs défectueux sur le périphérique cible avant de créer le système de fichiers.
-C FILENAME BLOCK_COUNT
-
Crée le fichier spécifié par
FILENAME
avec un système de fichiers FAT à l’intérieur, réalisant ainsi une "image disque" vide qui pourra être écrite par la suite sur un périphérique en utilisant un outil tel quedd
ou montée en tant que périphérique boucle (loopback device). Avec cette option, le nombre de blocs dans le système de fichiers (BLOCK_COUNT
) devra être spécifié après le nom du périphérique. -F SIZE
-
Sélectionne la taille de la FAT (table d’allocation de fichiers ou File Allocation Table), entre 12, 16 ou 32, c’est-à-dire entre FAT12, FAT16 ou FAT32. Si elle n’est pas spécifiée,
mkfs.fat
sélectionnera l’option appropriée en fonction de la taille du système de fichiers. -n NAME
-
Définit l’étiquette ou le nom du volume pour le système de fichiers. Ce nom peut comporter jusqu’à 11 caractères et il n’y a pas de nom par défaut.
-v
-
Mode verbeux. Affiche beaucoup plus d’informations qu’en temps normal, ce qui peut être utile pour le débogage.
Note
|
|
Créer un système de fichiers exFAT
exFAT est un système de fichiers créé par Microsoft en 2006 pour pallier l’une des principales limitations de FAT32 : la taille des fichiers et des disques. Avec exFAT, la taille maximale des fichiers est de 16 exaoctets (contre 4 Go avec FAT32) et la taille maximale des disques est de 128 pétaoctets.
Comme il est bien pris en charge par les trois principaux systèmes d’exploitation (Windows, Linux et macOS), c’est un excellent choix lorsque l’interopérabilité est recherchée, par exemple sur les lecteurs flash, les cartes mémoire et les disques externes de grande capacité. D’ailleurs, c’est le système de fichiers par défaut, tel que défini par la SD Association, pour les cartes mémoire SDXC de plus de 32 Go.
La commande par défaut pour créer des systèmes de fichiers exFAT est mkfs.exfat
, qui constitue un lien vers mkexfatfs
. La commande la plus basique est mkfs.exfat TARGET
, où TARGET
représente la partition sur laquelle vous souhaitez créer le système de fichiers. Par exemple : mkfs.exfat /dev/sdb2
.
Contrairement aux autres outils abordés dans cette leçon, mkfs.exfat
a très peu d’options en ligne de commande. Les voici :
-i VOL_ID
-
Définit l’ID du volume à la valeur spécifiée dans
VOL_ID
. Il s’agit d’un nombre hexadécimal de 32 bits. S’il n’est pas défini, un ID basé sur l’heure actuelle est défini. -n NAME
-
Définit l’étiquette ou le nom du volume pour le système de fichiers. Ce nom peut comporter jusqu’à 15 caractères et il n’y a pas de nom par défaut.
-p SECTOR
-
Spécifie le premier secteur de la première partition du disque. Ce paramètre est facultatif et la valeur par défaut est zéro.
-s SECTORS
-
Définit le nombre de secteurs physiques par grappe d’allocation. Il doit s’agir d’une puissance de deux, comme 1, 2, 4, 8, etc.
Découvrir le système de fichiers Btrfs
Btrfs (officiellement le B-Tree Filesystem, prononcé "Butter FS", "Better FS" ou même "Butterfuss", à vous de choisir) est un système de fichiers développé depuis 2007 pour Linux par la société Oracle et d’autres entreprises, notamment Fujitsu, Red Hat, Intel et SUSE.
Btrfs présente plusieurs caractéristiques qui le rendent particulièrement intéressant sur les systèmes modernes où le stockage massif est courant. Parmi celles-ci, citons la prise en charge de plusieurs périphériques y compris le striping (entrelacement de disques), le mirroring (disques en miroir) et le striping+mirroring (une combinaison des deux approches) comme dans une configuration RAID, la compression transparente, l’optimisation des disques SSD, les sauvegardes incrémentales, les snapshots (instantanés), la défragmentation en ligne, les vérifications hors ligne, la prise en charge des sous-volumes (avec quotas), la déduplication et bien d’autres choses encore.
Étant donné qu’il s’agit d’un système de fichiers copy-on-write (copie à l’écriture), il est très résilient face aux défaillances. De plus, Btrfs est simple à utiliser et bien supporté par la plupart des distributions Linux. Certaines d’entre elles, comme SUSE, l’utilisent même comme système de fichiers par défaut.
Note
|
Dans le cas d’un système de fichiers traditionnel, lorsque vous souhaitez écraser une partie d’un fichier, les nouvelles données sont écrites directement sur les anciennes données qu’elles vont remplacer. Dans un système de fichiers copy-on-write, les nouvelles données sont écrites dans l’espace libre du disque, puis les métadonnées d’origine du fichier sont mises à jour pour pointer vers ces nouvelles données et ce n’est qu’ensuite que les anciennes données sont dégagées, étant donné qu’elles ne sont plus nécessaires. Cette façon de procéder réduit les risques de perte de données en cas de panne, vu que les anciennes données ne sont éliminées que lorsque le système de fichiers est absolument certain qu’elles ne sont plus nécessaires et que les nouvelles données sont bien en place. |
Créer un système de fichiers Btrfs
La commande mkfs.btrfs
est utilisée pour créer un système de fichiers Btrfs. Invoquée sans option, elle crée un système de fichiers Btrfs sur un périphérique donné, comme ceci :
# mkfs.btrfs /dev/sdb1
Tip
|
Si vous ne disposez pas de l’outil |
Utilisez l’option -L
pour définir un label (ou nom) pour votre système de fichiers. Les étiquettes Btrfs peuvent contenir jusqu’à 256 caractères, à l’exception des retours à la ligne :
# mkfs.btrfs /dev/sdb1 -L "New Disk"
Tip
|
Utilisez des apostrophes (comme ci-dessus) si l’étiquette contient des espaces. |
Notez cette particularité de Btrfs : vous pouvez passer plusieurs périphériques à la commande mkfs.btrfs
. Ce faisant, le système de fichiers sera réparti sur tous les périphériques, ce qui ressemble à une configuration RAID ou LVM. Utilisez le paramètre -m
pour spécifier la distribution des métadonnées dans la matrice de disques. Les paramètres supportés sont raid0
, raid1
, raid5
, raid6
, raid10
, single
et dup
.
Par exemple, pour créer un système de fichiers qui englobe /dev/sdb1
et /dev/sdc1
en concaténant les deux partitions en une seule grande partition, utilisez :
# mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Warning
|
Les systèmes de fichiers répartis sur plusieurs partitions, tels que celui décrit ci-dessus, peuvent sembler avantageux à première vue. Or, ce n’est pas une bonne idée du point de vue de la sécurité des données, étant donné qu’une défaillance sur un seul disque de la matrice entraîne une perte de données inévitable. Le risque augmente avec le nombre de disques utilisés, vu qu’il y a plus de points de défaillance possibles. |
Gérer les sous-volumes
Les sous-volumes sont comme des systèmes de fichiers à l’intérieur de systèmes de fichiers. Imaginez-les comme un répertoire qui peut être monté (et traité) comme un système de fichiers à part entière. Les sous-volumes facilitent l’organisation et l’administration du système, étant donné que chacun d’entre eux peut avoir des quotas ou des règles d’instantané distinctes.
Note
|
Les sous-volumes ne sont pas des partitions. Une partition alloue un espace fixe sur un disque. Cela peut entraîner des problèmes par la suite, comme le fait qu’une partition manque d’espace alors qu’une autre en a encore beaucoup. Ce n’est pas le cas avec les sous-volumes, étant donné qu’ils "partagent" l’espace libre de leur système de fichiers racine et qu’ils s’agrandissent en fonction des besoins. |
Admettons que vous ayez un système de fichiers Btrfs monté sur /mnt/disk
et que vous souhaitiez créer un sous-volume à l’intérieur de celui-ci pour y stocker vos sauvegardes. Appelons-le BKP
:
# btrfs subvolume create /mnt/disk/BKP
Ensuite, nous affichons le contenu du système de fichiers /mnt/disk
. Vous verrez que nous disposons d’un nouveau répertoire, qui porte le nom de notre sous-volume.
$ ls -lh /mnt/disk/ total 0 drwxr-xr-x 1 root root 0 jul 13 17:35 BKP drwxrwxr-x 1 carol carol 988 jul 13 17:30 Images
Note
|
Oui, les sous-volumes sont également accessibles comme n’importe quel autre répertoire. |
Nous pouvons vérifier que le sous-volume est actif, avec cette commande :
# btrfs subvolume show /mnt/disk/BKP/ Name: BKP UUID: e90a1afe-69fa-da4f-9764-3384f66fa32e Parent UUID: - Received UUID: - Creation time: 2019-07-13 17:35:40 -0300 Subvolume ID: 260 Generation: 23 Gen at creation: 22 Parent ID: 5 Top level ID: 5 Flags: - Snapshot(s):
Vous pouvez monter le sous-volume sur /mnt/BKP
en passant les paramètres -t btrfs -o subvol=NAME
à la commande mount
:
# mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
Note
|
Le paramètre |
Travailler avec des snapshots
Les instantanés (snapshots) sont comme des sous-volumes, mais ils sont pré-remplis avec le contenu du volume à partir duquel l’instantané a été pris.
Au moment de la création, un snapshot et le volume d’origine ont exactement le même contenu. Mais à partir de là, ils vont évoluer différemment. Les modifications apportées au volume d’origine (comme les fichiers ajoutés, renommés ou supprimés) ne seront pas reflétées dans le snapshot, et vice-versa.
Gardez à l’esprit qu’un instantané ne duplique pas les fichiers et qu’il n’occupe pratiquement pas d’espace disque. Il duplique simplement l’arborescence du système de fichiers, tout en pointant vers les données d’origine.
La commande pour créer un snapshot est la même que celle utilisée pour créer un sous-volume, il suffit d’ajouter le paramètre snapshot
après btrfs subvolume
. La commande ci-dessous va créer un instantané du système de fichiers Btrfs monté sur /mnt/disk
dans /mnt/disk/snap
:
# btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
Maintenant, imaginez que vous avez le contenu suivant dans /mnt/disk
:
$ ls -lh total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Notez le répertoire snap
qui contient l’instantané. Supprimons quelques fichiers et vérifions le contenu du répertoire :
$ rm LG-G8S-ThinQ-* $ ls -lh total 1,7M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Cependant, si vous jetez un œil dans le répertoire snap
, les fichiers que vous venez de supprimer sont toujours là et peuvent être restaurés le cas échéant.
$ ls -lh snap/ total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Vous pouvez également créer des snapshots en lecture seule. Ils fonctionnent tout comme les snapshots en écriture, à la différence que le contenu du snapshot ne pourra pas être modifié, il est "figé" dans le temps. Il suffit d’ajouter le paramètre -r
lors de la création du snapshot :
# btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Quelques remarques sur la compression
Btrfs supporte la compression transparente des fichiers, avec trois algorithmes différents disponibles pour les utilisateurs. Cette opération s’effectue automatiquement pour chaque fichier, à partir du moment où le système de fichiers est monté avec l’option -o compress
. Les algorithmes sont suffisamment intelligents pour détecter les fichiers incompressibles et n’essaieront même pas de les compresser, ce qui permet d’économiser les ressources système. Ainsi, dans un même répertoire, vous pouvez avoir en même temps des fichiers compressés et non compressés. L’algorithme de compression par défaut est ZLIB, mais LZO (plus rapide, taux de compression moins performant) ou ZSTD (plus rapide que ZLIB, compression équivalente) sont disponibles, avec plusieurs niveaux de compression (voir l’objectif correspondant dans les options de montage).
Gérer les partitions avec GNU Parted
GNU Parted est un éditeur de partitions (partition editor, d’où le nom) très efficace qui peut être utilisé pour créer, supprimer, déplacer, redimensionner, restaurer et copier des partitions. Il peut fonctionner avec les disques GPT et MBR et répond pratiquement à tous vos besoins en matière de gestion de disque.
Il existe une série d’interfaces graphiques qui facilitent l’utilisation de parted
comme GParted pour les environnements de bureau basés sur GNOME ou le KDE Partition Manager pour les environnements de bureau KDE. Cependant, vous devriez apprendre à utiliser parted
en ligne de commande, étant donné que dans un environnement serveur, vous ne pourrez jamais compter sur la présence d’un environnement de bureau graphique.
Warning
|
Contrairement à |
La façon la plus simple de commencer à utiliser parted
consiste à taper parted DEVICE
, où DEVICE
représente le périphérique que vous souhaitez gérer (parted /dev/sdb
). Le programme démarre une interface interactive en ligne de commande comme fdisk
et gdisk
avec une invite (parted)
qui vous permet de saisir des commandes.
# parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Warning
|
Faites très attention ! Si vous ne spécifiez pas de périphérique, |
Sélectionner les disques
Pour basculer vers un autre disque que celui spécifié sur la ligne de commande, vous pouvez utiliser la commande select
suivie du nom du périphérique :
(parted) select /dev/sdb Using /dev/sdb
Afficher les informations
La commande print
sert à obtenir plus d’informations sur une partition donnée voire même tous les périphériques bloc (disques) connectés au système.
Pour obtenir des informations sur la partition en cours, il suffit de taper print
:
(parted) print Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2097kB 116GB 116GB primary ext4 2 116GB 120GB 4295MB primary linux-swap(v1)
Vous pouvez obtenir une liste de tous les périphériques connectés à votre système en invoquant print devices
:
(parted) print devices /dev/sdb (1999MB) /dev/sda (120GB) /dev/sdc (320GB) /dev/mapper/cryptswap (4294MB)
Pour obtenir des informations sur tous les périphériques connectés en même temps, vous pouvez utiliser print all
. Si vous souhaitez savoir combien d’espace libre il y a sur chaque périphérique, utilisez print free
:
(parted) print free Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 2097kB 2065kB Free Space 1 2097kB 116GB 116GB primary ext4 116GB 116GB 512B Free Space 2 116GB 120GB 4295MB primary linux-swap(v1) 120GB 120GB 2098kB Free Space
Créer une table de partitionnement sur un disque vide
Pour créer une table de partitionnement sur un disque vide, utilisez la commande mklabel
suivie du type de table de partitions que vous souhaitez utiliser.
Il existe une multitude de types de tables de partitionnement supportées, mais les deux principaux types que vous devrez connaître sont msdos
qui est utilisé ici pour se référer à une table de partitionnement MBR, et gpt
pour se référer à une table de partitionnement GPT. Pour créer une table de partitions MBR, tapez :
(parted) mklabel msdos
Et pour créer une table de partitionnement GPT, la commande est :
(parted) mklabel gpt
Créer une partition
Pour créer une partition, la commande mkpart
sera utilisée selon la syntaxe mkpart PARTTYPE FSTYPE START END
, où :
PARTTYPE
-
Correspond au type de partition qui peut être
primary
(primaire),logical
(logique) ouextended
(étendu) lorsqu’on utilise une table de partitionnement MBR. FSTYPE
-
Spécifie le système de fichiers qui sera utilisé sur cette partition. Notez bien que
parted
ne crée pas le système de fichiers. Il définit simplement un fanion sur la partition pour indiquer au système d’exploitation le type de données qu’il doit attendre sur la partition. START
-
Spécifie le point exact du périphérique où la partition démarre. Vous pouvez utiliser différentes unités pour spécifier ce point.
2s
peut être utilisé pour se référer au deuxième secteur du disque, tandis que1m
se réfère au début du premier mégaoctet du disque. D’autres unités courantes sontB
(octets) et%
(pourcentage du disque). END
-
Spécifie la fin de la partition. Notez que ce n’est pas la taille de la partition, c’est l’endroit du disque où elle se termine. Par exemple, si vous spécifiez
100m
, la partition se terminera 100 Mo après le début du disque. Vous pouvez utiliser les mêmes unités que pour le paramètreSTART
.
Ainsi, la commande :
(parted) mkpart primary ext4 1m 100m
Crée une partition primaire de type ext4
qui commence au premier mégaoctet du disque et se termine après le centième mégaoctet.
Supprimer une partition
Pour supprimer une partition, utilisez la commande rm
suivie du numéro de la partition, que vous pouvez afficher à l’aide de la commande print
. Ainsi, rm 2
supprimera la deuxième partition sur le disque sélectionné.
Restaurer des partitions
parted
est capable de récupérer une partition supprimée. Admettons que vous ayez la structure de partitionnement suivante :
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 primary 3 200MB 300MB 99.6MB ext4 primary
Vous avez supprimé la partition 2 par inadvertance en utilisant la commande rm 2
. Pour la récupérer, vous pouvez utiliser la commande rescue
, avec la syntaxe rescue START END
, où START
est l’emplacement approximatif du début de la partition, et END
l’emplacement approximatif de la fin de la partition.
parted
va analyser le disque à la recherche de partitions et proposer de restaurer celles qu’il a trouvées. Dans l’exemple ci-dessus, la partition 2
a commencé à 99,6 Mo et s’est terminée à 200 Mo. Vous pouvez donc utiliser la commande suivante pour restaurer la partition :
(parted) rescue 90m 210m Information: A ext4 primary partition was found at 99.6MB -> 200MB. Do you want to add it to the partition table? Yes/No/Cancel? y
Cette opération va restaurer la partition et son contenu. Notez que rescue
ne peut récupérer que les partitions sur lesquelles un système de fichiers est installé. Les partitions vides ne sont pas détectées.
Redimensionner des partitions ext2/3/4
parted
peut être utilisé pour redimensionner les partitions afin de les agrandir ou de les rétrécir. Ceci étant dit, il faut faire attention à certains détails :
-
Pendant l’opération de redimensionnement, la partition doit être inutilisée et démontée.
-
Vous aurez besoin de suffisamment d’espace libre après la partition pour l’agrandir jusqu’à la taille souhaitée.
La commande est resizepart
, suivie du numéro de la partition et de l’endroit où elle doit se terminer. Par exemple, si vous avez la table de partitionnement suivante :
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary
Une tentative d’agrandissement de la partition 1
avec resizepart
entraînerait un message d’erreur, étant donné qu’avec la nouvelle taille, la partition 1
empiéterait sur la partition 2
. En revanche, la partition 3
peut tout à fait être redimensionnée vu qu’il y a de l’espace libre après cette dernière, ce qui peut être vérifié à l’aide de la commande print free
:
(parted) print free Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary 300MB 1999MB 1699MB Free Space
Vous pouvez donc utiliser la commande suivante pour redimensionner la partition 3 à 350 Mo :
(parted) resizepart 3 350m (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 350MB 150MB ext4 primary
Rappelez-vous que le nouveau point final est spécifié en comptant à partir du début du disque. Ainsi, puisque la partition 3
finissait à 300 Mo, elle doit maintenant se terminer à 350 Mo.
Or, le redimensionnement de la partition ne constitue qu’une partie du travail. Il vous faudra également redimensionner le système de fichiers qui y est installé. Pour les systèmes de fichiers ext2/3/4, cela se fait avec la commande resize2fs
. Dans l’exemple ci-dessus, la partition 3 affiche toujours l’ancienne taille lorsqu’elle est montée :
$ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 88M 1.6M 80M 2% /media/carol/part3
Pour ajuster la taille, la commande resize2fs DEVICE SIZE
peut être utilisée, où DEVICE
correspond à la partition que vous voulez redimensionner, et SIZE
à la nouvelle taille. Si vous ne précisez pas le paramètre de taille, l’espace disponible de la partition sera utilisé en totalité. Avant de redimensionner, il est préférable de démonter la partition.
Dans l’exemple ci-dessus :
$ sudo resize2fs /dev/sdb3 resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 146212 (1k) blocks. The filesystem on /dev/sdb3 is now 146212 (1k) blocks long. $ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 135M 1.6M 123M 2% /media/carol/part3
Pour réduire la taille d’une partition, l’opération devra être effectuée dans l’ordre inverse. D’abord, vous réduisez le système de fichiers à la nouvelle taille, puis vous redimensionnez la partition elle-même à l’aide de parted
.
Warning
|
Faites attention lorsque vous réduisez des partitions. Si vous vous trompez dans l’ordre, vous allez perdre des données ! |
Dans notre exemple :
# resize2fs /dev/sdb3 88m resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 90112 (1k) blocks. The filesystem on /dev/sdb3 is now 90112 (1k) blocks long. # parted /dev/sdb3 (parted) resizepart 3 300m Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? y (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.7MB ext4 primary
Tip
|
Au lieu de préciser une nouvelle taille, vous pouvez utiliser le paramètre |
Créer des partitions d’échange (swap)
Sous Linux, le système peut délocaliser des pages de mémoire depuis la RAM vers le disque selon les besoins, en les stockant dans un espace séparé, généralement implémenté comme une partition distincte sur un disque, appelée partition d’échange, partition swap ou tout simplement swap. Cette partition doit être d’un type spécifique et configurée avec un outil approprié (mkswap
) avant de pouvoir être utilisée.
Pour créer une partition swap à l’aide de fdisk
ou gdisk
, procédez comme pour une partition normale, comme nous l’avons vu plus haut. La seule différence, c’est que vous devrez changer le type de partition en Linux swap.
-
Dans
fdisk
, utilisez la commandet
. Sélectionnez la partition que vous voulez utiliser et modifiez son type en82
. Écrivez les modifications sur le disque et quittez avecw
. -
Dans
gdisk
, la commande pour changer le type de partition est égalementt
, mais le code est8200
. Écrivez les modifications sur le disque et quittez avecw
.
Si vous utilisez parted
, la partition doit être identifiée en tant que partition swap lors de sa création. Utilisez simplement linux-swap
comme type de système de fichiers. Par exemple, la commande pour créer une partition d’échange de 500 Mo et qui commence à 300 Mo sur le disque est la suivante :
(parted) mkpart primary linux-swap 301m 800m
Une fois que la partition est créée et correctement identifiée, il suffit d’utiliser mkswap
suivi du périphérique représentant la partition que vous voulez utiliser, comme ceci :
# mkswap /dev/sda2
Pour activer la swap sur cette partition, utilisez swapon
suivi du nom du périphérique :
# swapon /dev/sda2
De même, swapoff
suivi du nom du périphérique va désactiver la swap sur ce périphérique.
Linux supporte également l’utilisation de fichiers swap en dehors des partitions. Créez simplement un fichier vide de la taille que vous voulez en utilisant dd
et utilisez ensuite mkswap
et swapon
avec ce fichier comme cible.
Les commandes ci-dessous vont créer un fichier de 1 Go appelé myswap
et rempli de zéros dans le répertoire actuel, puis le configurer et l’activer en tant que fichier d’échange (swap).
Créez le fichier swap :
$ dd if=/dev/zero of=myswap bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.49254 s, 143 MB/s
if=
est le fichier d’entrée, la source des données qui seront écrites dans le fichier. Dans ce cas, il s’agit du périphérique /dev/zero
qui fournit autant de caractères NULL
que nécessaire. of=
est le fichier de sortie, le fichier qui sera créé. bs=
correspond à la taille des blocs de données, spécifiée ici en mégaoctets, et count=
correspond à la quantité de blocs à écrire sur la sortie. 1024 blocs de 1 Mo chacun correspondent à 1 Go.
# mkswap myswap Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=49c53bc4-c4b1-4a8b-a613-8f42cb275b2b # swapon myswap
Avec les commandes ci-dessus, ce fichier d’échange ne sera utilisé que durant la session système en cours. Si la machine est redémarrée, le fichier sera toujours disponible, mais il ne sera pas chargé automatiquement. Vous pouvez automatiser cette opération en ajoutant le nouveau fichier d’échange à /etc/fstab
, ce que nous allons voir dans une leçon ultérieure.
Tip
|
|
Exercices guidés
-
Quel schéma de partitionnement doit-on utiliser pour partitionner un disque dur de 3 To en trois partitions de 1 Go ? Pourquoi ?
-
Avec
gdisk
, comment pouvons-nous savoir combien d’espace est disponible sur le disque ? -
Quelle serait la commande pour créer un système de fichiers ext3, en vérifiant les blocs défectueux avant, avec le label
MyDisk
et un UUID aléatoire, sur le périphérique/dev/sdc1
? -
En utilisant
parted
, quelle est la commande pour créer une partition ext4 de 300 Mo et qui commence à 500 Mo sur le disque ? -
Imaginez que vous avez 2 partitions, l’une sur
/dev/sda1
et l’autre sur/dev/sdb1
, toutes les deux d’une taille de 20 Go. Comment pouvez-vous les utiliser sur un seul système de fichiers Btrfs de manière à ce que le contenu d’une partition soit automatiquement dupliqué sur l’autre comme dans une configuration RAID1 ? Quelle sera alors la taille du système de fichiers ?
Exercices d’approfondissement
-
Prenez un disque de 2 Go avec une table de partition MBR et la configuration suivante :
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 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: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Pouvez-vous créer une partition de 600 Mo sur ce disque ? Pourquoi ?
-
Sur un disque
/dev/sdc
, nous avons une première partition de 1 Go qui contient un système de fichiers ext4 avec 241 Mo de fichiers. En utilisantparted
, comment pouvez-vous la réduire pour qu’elle ait juste assez d’espace pour les fichiers ? -
Prenons l’exemple d’un disque
/dev/sdb
. Vous voulez créer une partition de 1 Go au début de ce disque. Donc, en utilisantparted
, vous créez la partition avecmkpart primary linux-swap 0 1024M
. Ensuite, vous activez la swap sur cette partition avecswapon /dev/sdb1
, mais vous obtenez le message d’erreur suivant :swapon: /dev/sdb1: read swap header failed
Que s’est-il passé ?
-
Au cours de cette leçon, vous avez testé quelques commandes dans
parted
, et vous avez supprimé par erreur la troisième partition de votre disque dur. Vous savez qu’elle venait après une partition EFI de 250 Mo et une partition swap de 4 Go, et qu’elle avait une taille de 10 Go. Quelle commandeparted
pouvez-vous utiliser pour la récupérer ? -
Imaginez que vous avez une partition inutilisée de 4 Go sur
/dev/sda3
. En utilisantfdisk
, quelle serait la séquence d’opérations pour la transformer en une partition d’échange active ?
Résumé
Dans cette leçon, vous avez appris à :
-
Créer une table de partitionnement MBR sur un disque avec
fdisk
et utiliser cet outil pour créer et supprimer des partitions. -
Créer une table de partitionnement GPT sur un disque avec
gdisk
et utiliser cet outil pour créer et supprimer des partitions. -
Créer des partitions ext2, ext3, ext4, XFS, VFAT et exFAT.
-
Utiliser
parted
pour créer, supprimer et récupérer des partitions sur les disques MBR et GPT. -
Redimensionner des partitions ext2, ext3, ext4 et Btrfs.
-
Créer, configurer et activer des partitions et des fichiers swap.
Les commandes suivantes ont été abordées dans cette leçon :
-
fdisk
-
gdisk
-
mkfs.ext2
,mkfs.ext3
,mkfs.ext4
,mkfs.xfs
,mkfs.vfat
etmkfs.exfat
-
parted
-
btrfs
-
mkswap
-
swapon
etswapoff
Réponses aux exercices guidés
-
Quel schéma de partitionnement doit-on utiliser pour partitionner un disque dur de 3 To en trois partitions de 1 Go ? Pourquoi ?
GPT, étant donné que le schéma MBR supporte au maximum les disques de 2 To.
-
Avec
gdisk
, comment pouvons-nous savoir combien d’espace est disponible sur le disque ?Utilisez
p
(print). L’espace libre total apparaîtra sur la dernière ligne d’infos avant la table de partitionnement elle-même. -
Quelle serait la commande pour créer un système de fichiers ext3, en vérifiant les blocs défectueux avant, avec le label
MyDisk
et un UUID aléatoire, sur le périphérique/dev/sdc1
?La commande serait
mkfs.ext3 -c -L MyDisk -U random /dev/sdc1
. Alternativement,mke2fs -t ext3
peut également être utilisé à la place demkfs.ext3
. -
En utilisant
parted
, quelle est la commande pour créer une partition ext4 de 300 Mo et qui commence à 500 Mo sur le disque ?Utilisez
mkpart primary ext4 500m 800m
. Rappelez-vous que vous devrez créer le système de fichiers en utilisantmkfs.ext4
, étant donné queparted
ne le fait pas. -
Imaginez que vous avez 2 partitions, l’une sur
/dev/sda1
et l’autre sur/dev/sdb1
, toutes les deux d’une taille de 20 Go. Comment pouvez-vous les utiliser sur un seul système de fichiers Btrfs de manière à ce que le contenu d’une partition soit automatiquement dupliqué sur l’autre comme dans une configuration RAID1 ? Quelle sera alors la taille du système de fichiers ?Utilisez
mkfs.btrfs /dev/sda1 /dev/sdb1 -m raid1
. Le système de fichiers résultant aura une taille de 20 Go, étant donné qu’une partition ne fait que dupliquer l’autre.
Réponses aux exercices d’approfondissement
-
Prenez un disque de 2 Go avec une table de partition MBR et la configuration suivante :
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 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: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Pouvez-vous créer une partition de 600 Mo sur ce disque ? Pourquoi ?
Vous ne pouvez pas, étant donné qu’il n’y a pas assez d’espace contigu. Le premier indice que quelque chose ne va pas est la liste des périphériques : vous avez
/dev/sdb1
et/dev/sdb3
, mais pas de/dev/sdb2
. Il manque donc quelque chose.Ensuite, il faut regarder où se termine une partition et où commence l’autre. La partition 1 se termine au secteur
1050623
, et la partition 2 commence à2099200
. Cela fait un "écart" de 1048577 secteurs. A 512 octets par secteur, cela fait 536.871.424 octets. Si vous divisez ce chiffre par 1024, vous obtenez 524,288 kilo-octets. Divisez à nouveau par 1024 et vous obtenez… 512 MO. C’est la taille de l’écart.Si le disque a une capacité de 2 Go, nous disposons au maximum de 512 Mo supplémentaires après la partition 3. Même si nous avons au total environ 1 Go non alloué, le plus grand bloc contigu est de 512 Mo. Il n’y a donc pas assez de place pour une partition de 600 Mo.
-
Sur un disque
/dev/sdc
, nous avons une première partition de 1 Go qui contient un système de fichiers ext4 avec 241 Mo de fichiers. En utilisantparted
, comment pouvez-vous la réduire pour qu’elle ait juste assez d’espace pour les fichiers ?Il s’agit d’une opération en plusieurs étapes. Dans un premier temps, vous devez réduire le système de fichiers en utilisant
resize2fs
. Au lieu de spécifier directement la nouvelle taille, vous pouvez utiliser le paramètre-M
pour qu’elle soit "juste assez grande". Voici ce que cela donne :resize2fs -M /dev/sdc1
.Ensuite, vous redimensionnez la partition elle-même avec
parted
en utilisantresizepart
. Vu qu’il s’agit de la première partition, nous pouvons partir du principe qu’elle commence à zéro et qu’elle se termine à 241 Mo. La commande est doncresizepart 1 241M
. -
Prenons l’exemple d’un disque
/dev/sdb
. Vous voulez créer une partition de 1 Go au début de ce disque. Donc, en utilisantparted
, vous créez la partition avecmkpart primary linux-swap 0 1024M
. Ensuite, vous activez la swap sur cette partition avecswapon /dev/sdb1
, mais vous obtenez le message d’erreur suivant :swapon: /dev/sdb1: read swap header failed
Que s’est-il passé ?
Vous avez créé une partition du type correct (
linux-swap
), mais rappelez-vous quemkpart
ne crée pas de système de fichiers. Vous avez oublié de configurer la partition comme espace d’échange avecmkswap
avant de l’utiliser. -
Au cours de cette leçon, vous avez testé quelques commandes dans
parted
, et vous avez supprimé par erreur la troisième partition de votre disque dur. Vous savez qu’elle venait après une partition EFI de 250 Mo et une partition swap de 4 Go, et qu’elle avait une taille de 10 Go. Quelle commandeparted
pouvez-vous utiliser pour la récupérer ?Pas de panique, vous avez toutes les informations nécessaires pour récupérer la partition. Utilisez simplement
rescue
et faites le calcul. Vous aviez 250 Mo + 4.096 Mo (4*1024) avant, donc le point de départ devrait se situer autour de 4346 Mo. Plus 10.240 Mo (10*1024) en taille, cela devrait finir à 14.586 Mo. Donc,rescue 4346m 14586m
devrait faire l’affaire. Il se peut que vous soyez obligé de donner un peu de "marge" àrescue
, en commençant un peu plus tôt et en terminant un peu plus tard, en fonction de la géométrie de votre disque. -
Imaginez que vous avez une partition inutilisée de 4 Go sur
/dev/sda3
. En utilisantfdisk
, quelle serait la séquence d’opérations pour la transformer en une partition d’échange active ?Dans un premier temps, modifiez le type de partition en
Linux Swap
(82), écrivez les modifications sur le disque et quittez. Ensuite, utilisezmkswap
pour configurer la partition comme une zone d’échange. Puis, utilisezswapon
pour l’activer.