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é.