Skip to main content

Étendre une partition sur Debian (MBR) sans perte de données

Ce guide explique comment étendre une partition / (root) sous Debian lorsque le disque virtuel a été agrandi dans l’hyperviseur, mais que la partition principale est bloquée par une partition étendue contenant le swap (sda2 + sda5).

Fonctionne pour :

  • VMware, Proxmox, Hyper‑V, VirtualBox
  • Debian 10 → Debian 13+
  • Disques MBR (label dos)

🛑 Avant de commencer

Vérifier que le disque virtuel a déjà été agrandi dans l’hyperviseur :

lsblk

Vous devez voir par ex. :

sda    50G    └─sda1 23G


1️⃣ Désactiver le swap existant

swapoff -a

2️⃣ Modifier la table de partitions avec fdisk

Lancer fdisk :

fdisk /dev/sda

Dans fdisk, effectuer exactement les actions suivantes :

1. Supprimer l’ancienne swap (sda5)
d
5
2. Supprimer la partition étendue (sda2)
d
2
3. Supprimer la partition root (sda1)

⚠️ Sans danger tant que le secteur de début est conservé.

d
1
4. Recréer /dev/sda1 sur tout le disque
n
p
1
2048 ← le même secteur de début qu’avant
<Entrée> ← fin par défaut = fin du disque
5. Remettre le drapeau boot
a
1
6. Sauvegarder et quitter
w

Un redémarrage peut être nécessaire :

reboot

3️⃣ Étendre le système de fichiers ext4

Une fois la machine revenue :

resize2fs /dev/sda1

Le système de fichiers s’adapte alors à la nouvelle taille (50 Go dans cet exemple).

Vérifier :

df -h

4️⃣ Créer un swap via un fichier (recommandé)

Un swapfile est plus simple et plus flexible qu’une partition swap.

Création du fichier swap :

fallocate -l 1G /swapfilechmod 600 /swapfilemkswap /swapfileswapon /swapfile
Rendre le swap permanent

Ajouter dans /etc/fstab :

/swapfile none swap sw 0 0

5️⃣ Vérifications finales

lsblkdf -hfree -h

Vous devriez voir :

  • /dev/sda1 = ~50 Go monté sur /
  • /swapfile actif

🟢 Résultat final

Votre système Debian utilise maintenant toute la taille du disque agrandi, sans perte de données, avec un swap propre et moderne via fichier.


✨ Bonus : résolution du problème “commandes sbin introuvables”

Si des commandes comme fdisk, parted, ip, reboot… n’étaient plus accessibles :

Ajouter ceci dans /root/.bashrc :

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Puis :

source /root/.bashrc