Bonjour, cher!
Je vais vous en dire un rapide qui pourrait entraîner une perte complète des données sur la machine virtuelle, mais la sortie a toujours été trouvée avec: parted
Données sources:Système d'
exploitation: Debiab 9 64bit
FS: ext4 sans LVM
Objectif: étendre le FS sur une machine virtuelle de 14 Go à 60 Go
En principe, pour l'administrateur, cette tâche est triviale, mais parfois les étoiles peuvent converger pour que tout ne se passe pas comme nous le souhaiterions. Sous la coupe, je vais essayer de restaurer le cours des événements, ce qui a conduit au fait que le premier administrateur n'a reçu pratiquement aucune machine virtuelle fonctionnelle.
Jour 1:L'administrateur a reçu une tâche complètement simple - vous devez augmenter la taille du FS sur la machine virtuelle. Auparavant, le travail avait déjà été fait pour étendre l'image disque de cette machine virtuelle, et donc le problème restait petit - pour augmenter la taille du FS sur la machine virtuelle.
Structure FS sur VM:/ boot - 56 Mo
/ - tout l'espace restant - ext4
Étant donné que la machine virtuelle est créée à partir d'un modèle, il n'y a pas de LVM, ce qui simplifierait bien sûr toute la procédure.
Et donc l'administrateur le jeudi soir commence à effectuer la tâche. Sa première étape a été de démarrer la machine virtuelle à l'aide d'une image iso - SystemRescue. Après avoir réussi à charger la machine virtuelle à l'aide de l'iso-image, l'administrateur commence à travailler et à l'aide de fdisk supprime la section
/ (/ dev / vda2) , qui est correcte car elle doit être développée. Après avoir supprimé la partition (/ dev / vda2), l'administrateur crée une nouvelle partition - / dev / vda2 et la première erreur se produit - l'administrateur crée d'abord une partition d'extension, puis crée uniquement la partition principale et après avoir comparé le nouveau balisage, quitte fdisk et essaie de monter la partition:

Étant donné que la disposition du disque a changé et que le début et la fin de la partition / dev / vda5 ont changé, une erreur attendue est apparue indiquant qu'aucun superbloc n'a été trouvé ou incorrect. L'erreur est assez grave et si vous approchez mal la solution, vous pouvez perdre des fichiers ou les faire battre. Vous pouvez bien sûr revenir en arrière, mais le problème réside également dans le fait que l'administrateur n'a pas pris de capture d'écran de la disposition du disque précédente avant son travail.
Puisque la partition ne peut pas être montée ... l'administrateur tente de rectifier la situation en supprimant les partitions qu'il a créées et en créant une nouvelle primaire, mais comme cela ne signifie pas la fin du lot avec des données, toutes ses tentatives aboutissent au même résultat:
Superbloc invalide .
Après plusieurs tentatives de restauration de la partition par eux-mêmes, le premier administrateur a demandé de l'aide au deuxième administrateur.
Tout d'abord, le second administrateur quitte la machine virtuelle et copie l'image disque actuelle nommée vm_bad_disk. Ensuite, la machine virtuelle sort de la même version du système d'exploitation - Debian 9 64 bits et se connecte avec le deuxième disque - vm_bad_disk.
Après être entré dans une nouvelle machine virtuelle via ssh - nous examinons la liste des disques dans la machine virtuelle:
root@recovery:~# fdisk -l
Disk /dev/vda: 4.9 GiB, 5242880000 bytes, 10240000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09dea38e
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 499711 497664 243M 83 Linux
/dev/vda2 501758 10237951 9736194 4.7G 5 Extended
/dev/vda5 501760 10237951 9736192 4.7G 83 Linux
Disk /dev/vdb: 58.6 GiB, 62914560000 bytes, 122880000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe8c76303
Device Boot Start End Sectors Size Id Type
/dev/vdb1 * 2048 194559 192512 94M 83 Linux
/dev/vdb2 196606 30717951 30521346 14.6G 5 Extended
/dev/vdb5 198656 30717951 30519296 14.6G 83 Linux
Voici / dev / vdb - c'est notre vm_bad_disk. La première chose que le deuxième administrateur supprime / dev / vdb2 et / dev / vdb5 et essaie de créer / dev / vdb2 avec 194560 démarré et une fin approximative, mais obtient également:
Superbloc invalide .
Pour travailler avec la partition / dev / vdb, un utilitaire séparé est installé pour une utilisation plus pratique avec la partition.
Nous répétons l'action en supprimant / dev / vdb2 déjà séparé et en faisant de l'aide.
L'attention de l'administrateur est attirée sur la commande de sauvetage, qui vous permet de définir le début et la fin de la partition pour y trouver le FS. Il n'y a rien de compliqué dans la syntaxe de commande:
Tapez juste séparé:
> sauvetage
Le système demandera:
Début - il a indiqué 194560
L'administrateur doit maintenant calculer End (fin de la partition). Étant donné que l'administrateur savait initialement que la taille de l'ensemble du disque était de 14 Go et que 1 secteur est de 512 octets ... alors les calculs suivants sont effectués:
14 Go est d'environ 15032385536 octets, nous calculons le nombre de secteurs:
15032385536/512 = 29360128
Cette valeur doit être spécifiée en parted:
Fin 29360128
Appuyez sur Entrée audacieusement et attendez le résultat ... Dans ce cas, je n'ai pas eu à attendre longtemps et je me suis séparé a montré que le FS a été trouvé et si cela valait la peine d'apporter les modifications - nous répondons OUI
Parted apportera les modifications nécessaires et l'administrateur quittera parted.
L'administrateur revient à la ligne de commande du système et fait:
mount / dev / vdb2 / mntLa partition est montée sans aucun problème et montre que sa taille est d'environ 14 Go, ce qui est correct, car le FS n'a pas encore été étendu. L'administrateur vérifie rapidement les fichiers et tout indique qu'il n'y a pas d'artefacts et de fichiers cassés à première vue.
Puisque la partition semble en direct, l'administrateur fait:
umount / dev / vdb2 et démarre:
e2fsck / dev / vdb2 une fois la vérification terminée - exécute la commande pour développer la section:
resize2fs / dev / vdb2
L'opération se passe sans aucun problème et l'administrateur monte à nouveau la partition pour s'assurer que tout est OK:
mount / dev / vdb2 / mntLa partition est montée sans erreur et en utilisant la commande
df -p , elle voit une partition déjà étendue.
L'administrateur vérifie à nouveau les fichiers et répertoires de ce lot et décide que tout va bien avec le FS et les fichiers.
L'administrateur exécute la commande: shutdown -p now et supprime le lecteur mappé de la machine virtuelle avec laquelle les actions ont été effectuées.
Il enregistre l'image de disque de la machine virtuelle d'origine, à partir de laquelle tout a commencé dans un stockage séparé, la remplace par l'image de disque correcte et envoie la machine virtuelle au démarrage.
La VM démarre sans aucun problème et toutes les données sont en place.
Morale:1) Prenez un instantané avant vos actions
2) Prenez une capture d'écran des paramètres souhaités (dans ce cas, le balisage de partition)
3) Avant le travail, sauvegardez les fichiers importants