1 votes

Comment étendre automatiquement la partition /home pour utiliser l'espace libre à la fin du disque ?

J'ai créé une image d'or d'Ubuntu 20.04 sur un disque virtuel de 25 Mo, avec les partitions comme suit :

Modèle : Périphérique de bloc virtio (virtblk)
Disque /dev/vda : 26,8 Go
Taille du secteur (logique/physique) : 512 o / 512 o
Table de partitions : msdos
Drapeaux du disque :

Numéro    Début    Fin      Taille    Type      Système de fichiers      Drapeaux
 1        1049ko   512Mo    511Mo    primaire  linux-swap(v1)         boot
 2        513Mo    26,8Go   26,3Go   étendue
 5        513Mo    1012Mo   499Mo    logique   ext4
 6        1013Mo   16,0Go   15,0Go   logique   ext4
 7        16,0Go   26,8Go   10,8Go   logique   ext4

/dev/vda6 est /root et /dev/vda7 est /home.

Ce disque est exporté en tant qu'image pour que des machines virtuelles puissent être créées à partir de celui-ci. J'essaie de créer un script qui s'exécutera au premier démarrage d'une machine virtuelle nouvellement créée pour étendre la partition home à l'aide de l'espace libre disponible à la fin du disque, mais je n'obtiens pas les résultats escomptés.

J'ai suivi cette suggestion et créé les fichiers suivants sur le disque de l'image d'or avant l'exportation :

/etc/rc.local :

#!/bin/sh -e

type /etc/init.d/extend-home-part.sh && /etc/init.d/extend-home-part.sh

exit 0

/etc/init.d/extend-home-part.sh :

#!/bin/sh

sudo growpart /dev/vda 7 && sudo resize2fs /dev/vda7
sudo mv /etc/init.d/extend-home-part.sh /etc/init.d/extended-home-part.sh

exit 0

Après avoir créé une machine virtuelle avec un disque virtuel plus grand, je peux voir que le script a été exécuté car le script a été renommé, mais la partition /home n'a pas changé. parted print free donne cette sortie :

(parted) print free
Modèle : Périphérique de bloc virtio (virtblk)
Disque : /dev/vda : 172Go
Taille du secteur (logique/physique) : 512o/512O
Table de partitions : msdos
Drapeaux du disque :

Numéro    Début    Fin      Taille    Type      Système de fichiers      Drapeaux
          32,3ko   1049ko   1016ko            Espace libre
 1        1049ko   512Mo    511Mo    primaire  linux-swap(v1)         boot
          512Mo    513Mo    1048ko            Espace libre
 2        513Mo    26,8Go   26,3Go   étendue
 5        513Mo    1012Mo   499Mo    logique   ext4
          1012Mo   1013Mo   70ko              Espace libre
 6        1013Mo   16,0Go   15,0Go   logique   ext4
          16,0Go   16,0Go   639ko             Espace libre
 7        16,0Go   26,8Go   10,8Go   logique   ext4
          26,8Go   172Go    145Go             Espace libre

Lorsque j'essaie d'exécuter les commandes manuellement sur la nouvelle machine virtuelle, j'obtiens cette sortie :

$ sudo growpart /dev/vda 7
CHANGÉ : partition=7 début=31275008 ancien : taille=21151744 fin=52426752 nouveau : taille=304269279 fin=335544287

$ sudo resize2fs /dev/vda7
resize2fs 1.45.5 (07-janv.-2020)
Le système de fichiers est déjà long de 2643968 blocs (4ko). Rien à faire !

L'espace libre à la fin reste inutilisé, et la sortie de parted print free ne change pas. Je ne comprends pas pourquoi la partition /home ne s'étend pas, même après l'exécution manuelle des commandes.

Qu'est-ce que je fais de mal ici ? Existe-t-il une meilleure façon d'exécuter cette tâche ?

Note : Je sais qu'il est possible d'utiliser l'utilitaire Disques dans Ubuntu pour redimensionner la partition /home, mais nous ne voulons pas que les utilisateurs de machines virtuelles aient à le faire à chaque fois qu'ils créent une nouvelle VM Ubuntu. Automatiser ce processus est une nécessité.

2voto

ubfan1 Points 14936

La table de partition MSDOS est limitée à quatre partitions primaires. Plus de partitions nécessitent qu'une partition principale soit une partition étendue, qui peut contenir de nombreuses partitions logiques. Vous ne pouvez pas étendre une partition logique au-delà de la partition étendue. Utilisez la partition GPT ou étendre d'abord la partition 2. L'extension sur la droite peut être possible avec une partition montée, vérifiez les pages de manuel de l'outil - gparted peut le faire, je ne sais pas pour growpart.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X