Augmentation espace disk a chaud dans un environnement virtuel

Bonjour à toutes et à tous !

c’est une des première fois que je me permet de venir quémander un peu d’aide à la communauté :

Nous avons créer une VM debian pour un projet datascientist, depuis VMware. Initialement, un seul disque virtuel de 400Go lui a été attribué.

Lorsque je fait un df -h l’output me dit que mon sda1 ne fait que 40Go :

root@imgdata:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev               7.9G     0  7.9G   0% /dev
tmpfs           1.6G  8.9M  1.6G   1% /run
/dev/sda1        47G   45G  429M 100% /
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/0
tmpfs           1.6G  4.0K  1.6G   1% /run/user/1001
tmpfs           1.6G     0  1.6G   0% /run/user/1000
root@imgdata:~#

Quand je pousse l’investigation avec parted pour vérifier que j’ai bel et bien de l’espace libre, la commande print free me donne l’output :

(parted) print free 
…
…  (il manque les données concernant les caractéristiques du disque concerné)
…
…
…
…

Number  Start   End     Size    Type      File system     Flags
        32.3kB  1049kB  1016kB            Free Space
 1      1049kB  51.5GB  51.5GB  primary   ext4            boot
        51.5GB  51.5GB  1048kB            Free Space
 2      51.5GB  53.7GB  2144MB  extended
 5      51.5GB  53.7GB  2144MB  logical   linux-swap(v1)
        53.7GB  429GB   376GB             Free Space

(parted) 

et un lsblk :

root@imgdata:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  400G  0 disk
├─sda1   8:1    0   48G  0 part /
├─sda2   8:2    0    1K  0 part
└─sda5   8:5    0    2G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom
root@imgdata:~# 

Je vois donc mon free space qui correspond à l’allocation originale.

à l’installation il avait été décidé de tout mettre dans la même partition, mais personne n’a vérifié manuellement l’espace alloué à la partition /dev/sda1, ce qui fait qu’aujourd’hui la machine est en prod’, avec un sda1 déjà saturé.

J’ai cloné ma vm pour faire quelques tests depuis ce que je trouvais sur la toile mais jusqu’ici soit ça ne fonctionne pas à une certaine étape, soit je plante complètement le système.

Dans un premier temps j’aimerai être rassuré sur la faisabilité sans prendre trop de risque niveau perte de données.
Je suis sur un debian 10.2 - kernel 4.19.0-6-amd64

Merci pour le temps que vous pourrez me consacrer et d’avance désolé si mon poste présente des pb de formatage, syntax ou ponctuation.

Bien à vous,
Frastus

Bonjour Frastus

Je pense que pour pouvoir agrandir /dev/sda1, tu dois d’abord supprimer la partition de swap (/dev/sda5) et la partition étendue (/dev/sda2).

Quitte à les recréer après le redimensionnement bien calculé de /dev/sda1.

Il faut désactiver le swap du système sur /dev/sda5 avant de supprimer la partition.
Il est bon de vérifier le système de fichiers ext4 sur /dev/sda1 avant de procéder à l’agrandissement.

http://fr.positon.org/redimensionner-une-partition-ext3-ext4

# supprimer la partition puis la recréer de la taille voulue

Il est très important que la partition /dev/sda1 recréée commence exactement au même “Début”
Il n’y a que la taille uniquement qui devrait avoir changé.

Je ne suis pas certain pour la possibilité d’agrandissement à chaud pour l’ext4 mais il me semble que c’est faisable ; c’est la réduction qui ne peut se faire qu’à froid.

D’accord avec @anon61356901, s’il faut agrandir /dev/sda1 il est plus simple de supprimer et recréer la partition de swap (avec les mêmes UUID et LABEL présents dans /etc/fstab et l’initramfs) plutôt que s’embêter à la déplacer à la fin du disque.

Pas nécessaire, et ce n’est pas probant lorsque le système de fichiers est monté.

Si, ça se fait très bien avec resize2fs après avoir agrandi la partition.

En effet, contrairement à Btrfs qui peut aussi être réduit à chaud.

Risqué. Il est plus sûr d’agrandir la partition en conservant sa position de départ, avec parted (commande resizepart) ou gparted.

@Frastus
Si tu avais utilisé le système de fichiers Btrfs au lieu d’ext4 pour la racine, tu aurais pu simplement créer une nouvelle partition et l’ajouter au système de fichiers existant pour augmenter sa taille.

Avis perso : pour une VM de prod, j’installerais systématiquement LVM afin de pouvoir redimensionner plus facilement les volumes que des partitions, notamment après avoir agrandi un disque virtuel. Mais là c’est un peu tard.

Il peut y avoir une alternative à l’agrandissement de la partition racine : créer une nouvelle partition et y copier une partie des données, celle qui aura tendance à grossir dans le temps. Par exemple, si ce sont des données serveur dans /srv, déplacer le contenu de ce répertoire dans la nouvelle partition et la monter sur /srv (à déclarer dans /etc/fstab).

1 J'aime

Bonjour a vous deux un grand merci pour votre retour.

C’est bien ce que j’avais lu, mon swap était trop proche de mon SDA pour se faire.
Je vais essayer tout ça et je reviens vers vous. je vais recloner ma vm car je me sens ultra frileux de jouer avec les disques en terminal.

Sinon, @PascalHambourg une de tes suggestions m’interpelle, sur l’installation de LVM, effectivment ce n’est pas la première mention que je vois de cette techno particulièrement dans un environnement virtuel.
Ducoup, comme on a pas encore trop de VM pour l’instant et que la prod n’a pas trop poussé dessus niveau data, mais que ca risque de se déployer de plus en plus dans les mois qui viennent je pense refaire un template propre, sur ce modèle LVM.

Donc je fais les tentative de suppression swap, ré-agrandissement partition sda1, remonter mon swap et je vous fait un retour.

Et j’ai pas mal de veille sur le LVM.

Merci pour ces retours !
Frastus

Sinon éventuellement, j’ai eu un suggestion d’un de mes admin :

Est-ce que je peux monter l’espace disque encore dispo dans une deuxième partition par exemple sda3 sans toucher au swap ou je serai confronté au même problème ?

Oui, c’est une des possibilités que j’ai évoquées.

Ça dépend comment tu utilises cette nouvelle partition.

A condition d’agrandir la partition étendue d’abord [1]. Franchement je ne vois pas l’intérêt d’une partition logique par rapport à une partition primaire.

Pourquoi donc ?

[1] Pour info, la dernière fois que j’ai essayé de faire ça avec parted il m’a supprimé toutes les partitions logiques. Méfiance et sauvegarde.

Je pensais que une fois la partition étendue créée, on ne pouvait plus créer de partition primaire.

J’ai l’habitude de n’utiliser que des partitions primaires ou bien alors une partition étendue en dernière position (3 primaires + une étendue) - avec le type de partitionnement msdos.

La solution de suppression du swap et de la partition étendue + agrandissement de /dev/sda1 est simple et logique.

Non, c’est indépendant. La partition étendue est une partition primaire (presque) comme les autres. Ce qu’il vaut mieux éviter, c’est de créer plusieurs partitions étendues. Résultat probablement imprévisible.

A chaque fois que c’est possible (pas de multiboot avec Windows en mode BIOS/legacy) je suis passé à GPT, ainsi plus de problèmes de partition étendues et logiques. En bonus on peut créer des étiquettes de partition (PARTLABEL) qui résistent au formatage et sont visibles dans les programmes de partitionnement. Et quand ce n’est pas possible, je privilégie l’utilisation de LVM qui permet de créer plusieurs volumes logiques dans une seule partition avec beaucoup plus de flexibilité que les partitions étendues et logiques.

Le point le plus délicat est à mon avis l’agrandissement de la partition. Pas toujours évident avec les outils en ligne de commande.

Oui, c’est une des possibilités que j’ai évoquées.

Effectivement, au temps pour moi c’était dans le denier paragraphe.

Le point le plus délicat est à mon avis l’agrandissement de la partition. Pas toujours évident avec les outils en ligne de commande.

Je ne vous fait pas dire !

Je sens que je vais de toute manière refaire pas mal de veille pour bien recerner les concepts de système de fichier et de partitionning sous linux, sans quoi je vais réaliser bêtement des actions en ligne de cmd sans en comprendre bien la finalité.
En tout cas, au risque de me répéter, merci pour le temps que vous avez consacré à ce ce threa, vous m’avez rassuré !

C’est dommage :

Erreur: The resize command has been removed in parted 3.0

Il reste :

(parted) help resizepart                                                  
  resizepart NUMBER END                    resize partition NUMBER

	NOMBRE est le numéro de partition utilisé par Linux. Avec une étiquette
        de disque MS-DOS, les partitions primaires sont numérotées de 1 à 4 et
        les partitions logiques à partir de 5.
    END is disk location, such as 4GB or 10%.  Negative value counts from
        the end of the disk.  For example, -1s specifies exactly the last
        sector.
(parted)                                                                  

Content que nous vous ayons rassuré :slight_smile:
Vous allez très bien vous en sortir.

ps : n’oubliez pas au final de

La commande “resize” de parted était censée redimensionner aussi le contenu de la partition, mais elle fonctionnait mal (je peux en témoigner) et a été remplacée par la commande “resizepart” qui ne redimensionne que la partition sans se préoccuper de son contenu.

2 J'aime