Fdisk

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Partitionnement de disque (table MBR)
Commande fdisk
Contexte Disques en table MBR (dos) — au-delà de 4 partitions primaires, 2 To ou BIOS UEFI, voir gdisk/parted (GPT)
Voir aussi Aligner des partitions, Blockdev

fdisk est l'outil historique de partitionnement des disques sous Linux, limité à la table MBR (dos) : 4 partitions primaires (ou 3 primaires + 1 étendue contenant des partitions logiques), 15 partitions au total et 2 To par partition. La table GPT lève ces limites (128 partitions, jusqu'à 8 ZiB par partition en secteurs de 512 o, 64 ZiB en secteurs de 4 Ko) mais nécessite un BIOS UEFI et un outil compatible — gdisk (mêmes commandes interactives que fdisk) ou parted, plus moderne et scriptable.

Lister les disques et partitions

fdisk -l                 # table de partitions de tous les disques détectés
fdisk -lu /dev/sda       # idem, tailles affichées en secteurs plutôt qu'en cylindres

fdisk -s /dev/sda7       # taille d'une partition, en blocs de 1 Ko

Équivalent en lecture seule avec parted, pratique pour vérifier une table de partitions sans risque de modification accidentelle :

parted -s /dev/sda print

Créer une partition

Session interactive typique pour créer une partition de type LVM sur un disque vierge :

fdisk /dev/sda
# n              nouvelle partition
# p              primaire
#                (numéro, premier et dernier cylindre : valeurs par défaut = tout le disque)
# t              changer le type de partition
# 8e             Linux LVM
# w              écrire la table et quitter

Le noyau ne relit pas toujours la nouvelle table de lui-même :

partprobe        # recharge la table de partitions sans reboot
# si partprobe échoue (partition déjà en cours d'utilisation), un reboot reste nécessaire

Passer ensuite à LVM pour intégrer la partition à un volume group (pvcreate, vgextend...).

Mode expert : positionner précisément le premier secteur

Le mode expert (x) permet de fixer manuellement le secteur de départ d'une partition, utile notamment pour l'aligner sur une frontière physique du support (voir Aligner des partitions) :

fdisk /dev/sda
# x              entrer en mode expert
# b              déplacer le début de données d'une partition
# 1              numéro de la partition
# 2048           nouveau secteur de départ
# w              écrire la table de partitions

Agrandir une partition existante sans perte de données

Après l'agrandissement d'un disque virtuel ou d'un LUN SAN, la partition elle-même reste à son ancienne taille tant qu'on ne l'a pas recréée. La méthode sans perte de données consiste à supprimer la partition puis à la recréer en gardant exactement le même secteur de départ, en laissant la fin s'étendre sur le nouvel espace disponible :

fdisk /dev/sda
# d              supprimer une partition
# 2              numéro de la partition à agrandir
# n              nouvelle partition
# p              primaire
# 2              même numéro que la partition supprimée
# 2056192        même secteur de départ que la partition supprimée (impératif)
#                <Entrée>  taille maximale disponible, proposée par défaut
# t              changer le type de partition
# 8e             Linux LVM
# w              écrire la table et quitter

reboot

⚠️ Le secteur de départ doit être rigoureusement identique à celui de la partition supprimée, sous peine de perdre les données existantes — noter sa valeur avec fdisk -lu avant toute suppression.

Une fois la table de partitions mise à jour, étendre le PV LVM sur l'espace nouvellement disponible :

pvresize /dev/sda2

Voir aussi

  • Aligner des partitions — vérifier ou corriger l'alignement d'une partition sur le support physique sous-jacent
  • Blockdev — forcer le noyau à relire la taille et la table de partitions d'un périphérique bloc
  • fdisk ne gère que les tables MBR (dos), avec des commandes interactives (n/p/t/w...) ; pour une table GPT (disques > 2 To, plus de 4 partitions primaires, BIOS UEFI), utiliser gdisk (mêmes commandes que fdisk) ou parted (scriptable et non interactif avec l'option -s)