Le redimensionnement d'un disque sur Linux est parfois nécessaire pour une machine virtuelle dont a sous estimé la taille lors de sa création. Contrairement à une machine physique avec un disque physique, avec une machine virtuelle on peut facile augmenter la taille du disque virtuelle. Une fois la taille du disque virtuelle augmentée, il faut étendre le système de fichier sur l'espace nouvellement disponible.
Commençons par vérifier l'espace utilisés sur le système.
root@monServeur:~# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 2,9G 0 2,9G 0% /dev tmpfs 593M 680K 592M 1% /run /dev/sda1 26G 19G 6,1G 75% / tmpfs 2,9G 1,1M 2,9G 1% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 593M 0 593M 0% /run/user/1001 tmpfs 593M 0 593M 0% /run/user/1102
On voit que 75% de l'espace sur le disque est utilisé sur le système.
J'ai augmenté la taille du disque virtuel à 65Go sur mon logiciel de virtualisation (ESXi). Afin de vérifier les disques et les partitions avec leur taille allouée:
root@monServeur:~# fdisk -l Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 54439933 54437886 26G 83 Linux /dev/sda2 54439934 62912511 8472578 4G 5 Étendue /dev/sda5 54439936 62912511 8472576 4G 82 partition d'échange Linux / Solaris
On voit donc qu'on a qu'un seul disque /dev/sda qui a en tout 64Go mais que le système utilise 30Go (26Go principale et 4Go étendu qui est occupé entièrement par la partiton d'échange, le swap). Il reste donc 26Go d'espace non alloué donc disponible.
C'est donc sur le disque système /dev/sda qu'on va étendre la partition.
root@monServeur:~# fdisk /dev/sda Bienvenue dans fdisk (util-linux 2.38.1). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Le disque est actuellement utilisé — le repartitionner est probablement une mauvaise idée. Il est recommandé de démonter tous les systèmes de fichiers et désactiver (avec swapoff) toutes les partitions d'échange de ce disque.
pour connaitre les paramètres possibles de la commande fdisk:
Commande (m pour l'aide) : m Aide : DOS (secteur d'amorçage) a modifier un indicateur d'amorçage b éditer l'étiquette BSD imbriquée du disque c modifier l'indicateur de compatibilité DOS Générique d supprimer une partition F afficher l’espace libre non partitionné l afficher les types de partitions connues n ajouter une nouvelle partition p afficher la table de partitions t modifier le type d'une partition v vérifier la table de partitions i Afficher des renseignements sur la partition Autre m afficher ce menu u modifier les unités d'affichage et de saisie x fonctions avancées (réservées aux spécialistes) Script I chargement de l’agencement à partir du fichier de script sfdisk O sauvegarde de l’agencement vers le fichier de script sfdisk Sauvegarder et quitter w écrire la table sur le disque et quitter q quitter sans enregistrer les modifications Créer une nouvelle étiquette g créer une nouvelle table vide de partitions GPT G créer une nouvelle table vide de partitions SGI (IRIX) o create a new empty MBR (DOS) partition table s créer une nouvelle table vide de partitions Sun
On affiche la table des parttions du disque /dev/sda
Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 54439933 54437886 26G 83 Linux /dev/sda2 54439934 62912511 8472578 4G 5 Étendue /dev/sda5 54439936 62912511 8472576 4G 82 partition d'échange Linux / Solaris
Maintenant qu'on connait la table on peut quitter fdisk
Commande (m pour l'aide) : q
D'après la table de partition, la partition étendue (la swap) se trouve après la partition qu'on veut étendre. L'espace disponible est derrière.
Pour vérifier les informations sur la partition occupée par la swap
root@monServeur:~# swapon --show NAME TYPE SIZE USED PRIO /dev/sda5 partition 4G 0B -2 root@monServeur:~# free -h total utilisé libre partagé tamp/cache disponible Mem: 5,8Gi 980Mi 4,7Gi 14Mi 361Mi 4,8Gi Échange: 4,0Gi 0B 4,0Gi
On désactive la partition swap
root@monServeur:~# swapoff -a
On controle que la swap n'utilise plus l'espace de la partition (la ligne Echange)
root@monServeur:~# free -h total utilisé libre partagé tamp/cache disponible Mem: 5,8Gi 713Mi 5,0Gi 14Mi 363Mi 5,1Gi Échange: 0B 0B 0B
La swap est activée à chaque redémarrage via fstab. Il faut donc la désactiver. Mais d'abord une sauvegarde du fichier!
root@monServeur:~# cp /etc/fstab fstab_bkp.bkp root@monServeur:~# vi /etc/fstab
Une fois édité fstab, commentez la ligne concernant la swap (avec un # en début de ligne).
On rédémarre la machine puis on controle que la swap n'a pas été réactivé.
root@monServeur:~# free -h total utilisé libre partagé tamp/cache disponible Mem: 5,8Gi 979Mi 4,7Gi 14Mi 373Mi 4,8Gi Échange: 0B 0B 0B root@monServeur:~# swapon --show
Cette dernière commande ne doit rien retourner!
On utilise de nouveau fdisk sur /dev/sda pour manipuler la table de partition
root@monServeur:~# fdisk /dev/sda Bienvenue dans fdisk (util-linux 2.38.1). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Le disque est actuellement utilisé — le repartitionner est probablement une mauvaise idée. Il est recommandé de démonter tous les systèmes de fichiers et désactiver (avec swapoff) toutes les partitions d'échange de ce disque. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 54439933 54437886 26G 83 Linux /dev/sda2 54439934 62912511 8472578 4G 5 Étendue /dev/sda5 54439936 62912511 8472576 4G 82 partition d'échange Linux / Solaris
On supprime la swap /dev/sda5
Commande (m pour l'aide) : d Numéro de partition (1,2,5, 5 par défaut) : 5 La partition 5 a été supprimée. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 54439933 54437886 26G 83 Linux /dev/sda2 54439934 62912511 8472578 4G 5 Étendue
On supprime la partition étendue /dev/sda2 qui contenait la swap
Commande (m pour l'aide) : d Numéro de partition (1,2, 2 par défaut) : 2 La partition 2 a été supprimée. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 54439933 54437886 26G 83 Linux
On supprime la partition principale restante! PAS DE RISQUE tant qu'on a pas enregistré et rebooté la machine.
Commande (m pour l'aide) : d Partition 1 sélectionnée La partition 1 a été supprimée.
Maintenant on redimensionne les partitions !
On crée la partition principale avec sa nouvelle taille mais EN GARDANT disponible la meme taille disponible d'origine pour la future swap. Ici sur 64Go j'affecte 60Go pour le système car la swap d'origine avait 4Go.
Commande (m pour l'aide) : n Type de partition p primaire (0 primaire, 0 étendue, 4 libre) e étendue (conteneur pour partitions logiques) Sélectionnez (p par défaut) : p Numéro de partition (1-4, 1 par défaut) : 1 Premier secteur (2048-134217727, 2048 par défaut) : Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (2048-134217727, 134217727 par défaut) : +60G Une nouvelle partition 1 de type « Linux » et de taille 60 GiB a été créée. La partition #1 contient une signature ext4.
ATTENTION on ne supprime pas la signature ext4 car on ne va pas formater la nouvelle partition ! Sinon on perd les données.
Voulez-vous supprimer la signature ? [O]ui/[N]on : N Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 2048 125831167 125829120 60G 83 Linux
Maintenant on recrée une partition étendue pour héberger la nouvelle swap.
Commande (m pour l'aide) : n Type de partition p primaire (1 primaire, 0 étendue, 3 libre) e étendue (conteneur pour partitions logiques) Sélectionnez (p par défaut) : e Numéro de partition (2-4, 2 par défaut) : Premier secteur (125831168-134217727, 125831168 par défaut) : Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (125831168-134217727, 134217727 par défaut) : Une nouvelle partition 2 de type « Extended » et de taille 4 GiB a été créée. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 2048 125831167 125829120 60G 83 Linux /dev/sda2 125831168 134217727 8386560 4G 5 Étendue
On crée la swap.
Commande (m pour l'aide) : n Tout l’espace des partitions primaires est utilisé. Ajout de la partition logique 5 Premier secteur (125833216-134217727, 125833216 par défaut) : Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (125833216-134217727, 134217727 par défaut) : Une nouvelle partition 5 de type « Linux » et de taille 4 GiB a été créée. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 2048 125831167 125829120 60G 83 Linux /dev/sda2 125831168 134217727 8386560 4G 5 Étendue /dev/sda5 125833216 134217727 8384512 4G 83 Linux
On change le type de partition dont le type swap est 82.
Commande (m pour l'aide) : t Numéro de partition (1,2,5, 5 par défaut) : 5 Code Hexa ou synonyme (taper L pour afficher tous les codes) :82 Type de partition « Linux » modifié en « Linux swap / Solaris ». Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 2048 125831167 125829120 60G 83 Linux /dev/sda2 125831168 134217727 8386560 4G 5 Étendue /dev/sda5 125833216 134217727 8384512 4G 82 partition d'échange Linux / Solaris
Il ne reste plus qu'a rendre bootable partition principale en la rendant active (marquée par *)
Commande (m pour l'aide) : a Numéro de partition (1,2,5, 5 par défaut) : 1 L’indicateur d’amorçage de la partition 1 est maintenant activé. Commande (m pour l'aide) : p Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 125831167 125829120 60G 83 Linux /dev/sda2 125831168 134217727 8386560 4G 5 Étendue /dev/sda5 125833216 134217727 8384512 4G 82 partition d'échange Linux / Solaris
Sauvegardez la modification puis quittez fdisk
Commande (m pour l'aide) : w Commande (m pour l'aide) : q
NE PAS REDEMARRER maintenant !
On peut vérifier que rien a changé sur le système en cours
root@monServeur:~# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 2,9G 0 2,9G 0% /dev tmpfs 593M 644K 592M 1% /run /dev/sda1 26G 19G 6,0G 76% / tmpfs 2,9G 1,1M 2,9G 1% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 593M 0 593M 0% /run/user/1102
Pour que le système prenne en compte nos modifications de la table de partition
root@monServeur:~# resize2fs /dev/sda1 resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/sda1 is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 8 The filesystem on /dev/sda1 is now 15728640 (4k) blocks long.
Maintenant on recontrole l'extension de la partition système.
root@monServeur:~# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 2,9G 0 2,9G 0% /dev tmpfs 593M 644K 592M 1% /run /dev/sda1 59G 19G 39G 33% / tmpfs 2,9G 1,1M 2,9G 1% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 593M 0 593M 0% /run/user/1102
/dev/sda1 a bien été étendu !
On vérifie de nouveau la table de partition
root@monServeur:~# fdisk -l Disque /dev/sda : 64 GiB, 68719476736 octets, 134217728 secteurs Modèle de disque : Virtual disk Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x59e733a0 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 125831167 125829120 60G 83 Linux /dev/sda2 125831168 134217727 8386560 4G 5 Étendue /dev/sda5 125833216 134217727 8384512 4G 82 partition d'échange Linux / Solaris
Il faut recréer la swap sur la partition dédié /dev/sda5
root@monServeur:~# mkswap /dev/sda5 Configure l'espace d'échange (swap) en version 1, taille = 4 GiB (4292866048 octets) pas d'étiquette, UUID=cad156ac-b2c4-435a-bf08-07eda9f4e02a
prenez note du UUID de la partition qui est l'identifiant unique de la partition.
Maintenant que la swap est recréé on peut la réactiver.
root@monServeur:~# swapon /dev/sda5
Réactivez la dans le fstab.
root@monServeur:~# vi /etc/fstab
Décommenter la ligne concernant la swap ET changez l'UUID
# swap was on /dev/sda5 during installation UUID=cad156ac-b2c4-435a-bf08-07eda9f4e02a none swap sw 0 0
Et voilà, rédémarrez pour terminer.