Bonjour à tous. Cela peut sembler à quelqu'un une histoire instructive de la façon dont vous ne devriez pas le faire et pourquoi certains travaux techniques importants à une heure du matin (dans un système dans lequel vous ne comprenez pas grand-chose) peuvent entraîner un effondrement et des temps d'arrêt énormes pendant deux jours.

Une courte note est l'histoire d'un administrateur système amateur qui commence tout juste à plonger dans le monde de la virtualisation. L'histoire de la façon dont les instantanés n'ont pas aidé, mais ont interféré et ont fait un retour en arrière du système pendant un mois, puis avec un temps d'arrêt en 2 jours, j'en ai retiré tous les fichiers et j'ai renvoyé le système.
Contexte
Après deux années passées sur des systèmes nix , et en particulier sur le serveur ubuntu (16.04 LTS), j'ai décidé d'essayer la virtualisation. Un ami a conseillé ESXi comme une solution gratuite pour les petits serveurs (mon cas: 1 processeur + seulement 8 Go de RAM). Le processus de déplacement a été compliqué par le fait que vous deviez d'abord soulever la station de travail vmware avec le convertisseur vmware sur l'ordinateur Windows, y transférer le système fini, puis le soulever sur le serveur esxi et après le convertisseur familier transférer le système vers esxi. C'est un voyage si long et douloureux. La principale erreur lors du transfert, que j'ai faite et qui apparaît toujours sur moi, est que j'ai utilisé un disque mince. Autrement dit, étant sur un serveur Ubuntu propre avec un disque formaté en exfat-4, j'avais quelque part 223,8 Go d'espace sur SSD. Passer à esxi et formater le disque dans un format incompréhensible pour rien, je n'ai perdu que 300 Mo, mais c'est à cause d'eux que je ne pouvais pas faire un disque épais, dont j'avais (plus tard, il s'est avéré) tellement besoin.
Commencer
J'avais l'habitude de casser du bois de chauffage avec un serveur Ubuntu (quand je l'ai juste «étudié»), de reculer et de réinstaller le système une fois par mois ou deux. Maintenant, je casse du bois de chauffage avec ESXi. Je pense qu'il n'est pas nécessaire de décrire le problème des disques minces (en bref, après avoir élargi leur espace, ils ne le «rétrécissent» pas dans le sens opposé. Ils peuvent également dépasser la quantité physique de mémoire sur le disque). Tout d'abord, j'ai utilisé swap sur le même lecteur ssd sans le configurer correctement dans ESXi. Il y mangeait de la mémoire, y écrivait des fichiers temporaires et, en attendant, maigrissait.
Deuxièmement, pour une raison quelconque, j'ai fait des instantanés. À ce moment-là, j'ai été guidé par le fait que "eh bien, c'est pratique, rapide et tout ça". Je ne soupçonne toujours pas quel genre de merde et quelle bombe lente ils ont planté pour moi. Troisièmement, je n'ai pas suivi la quantité de mémoire qui diminue rapidement sur le disque.

Cravate
La première cloche a été l'arrêt de la voiture principale le 17 juillet. Une notification est arrivée par la poste de la chute de l'hôte. Entrant dans esxi pour le ramasser (enfin, tout à coup quelque chose pourrait arriver), la fille virtuelle m'a donné une bonne nouvelle (il n'y a malheureusement pas de capture d'écran). Une nouvelle version gratuite d'une fenêtre contextuelle ressemblait à «Désolé, l'espace disque est épuisé. Votre machine virtuelle est arrêtée. Nettoyez l'endroit et vous pouvez continuer à utiliser la machine virtuelle. Répétez Annuler. À cette époque, le problème a été résolu en supprimant la deuxième machine virtuelle, ce qui prenait environ 16 Go. Mais c'était une solution temporaire, car chaque jour, 5 Go disparaissaient toujours quelque part, bien que le système n'ait pas augmenté ces fichiers.
En conséquence, le 19 juillet au soir, un jeudi frais, j'ai d'abord écrit sur le grille-pain à propos de ce problème. Il n'y avait pas de réponse. Je pense que cela est dû à la balise esxi impopulaire. Après google échoué, après - la suppression des instantanés. À ce moment, 5 gigaoctets ont disparu, l'espace libre est devenu plus grand, mais pas au point d'oublier ce problème.

Après, avec un petit cerveau, j'ai commencé à étudier la hiérarchie des instantanés. Le dernier, 000003, occupait à l'époque 12 Go d'espace. Dans les paramètres de la machine virtuelle, il était répertorié comme le fichier de disque actif à partir duquel la machine avait démarré. Sans y réfléchir à deux fois, j'ai supprimé le fichier disque du disque dur 1 avec le disque instantané actif et inséré le disque parent de la machine virtuelle entière à sa place.

Le système a démarré (acclamations), et avec lui les fichiers du 30 juin. Date de dernière modification de tous les fichiers sur le disque parent. Je soupçonne que c'est ce jour-là que j'ai créé le premier instantané. Logiquement, il n'y avait plus d'endroits. Dans l'espace libre, il reste environ 5 Go et les fichiers ont disparu.
Les premières réflexions sont logiques: ce que j'ai fait, tous les fichiers se sont évaporés jusqu'au 19 juillet. Ensuite, j'ai vu que les fichiers d'instantanés n'étaient pas supprimés. Cependant, lorsque j'ai essayé de les charger en tant que disque principal, ESXi a juré sur le disque parent modifié, qui ne devrait pas être «Le disque virtuel parent a été modifié depuis la création de l'enfant» Mon erreur éternelle au cours des deux prochains jours.
Googler
Le temps approchait à deux heures du matin, et j'ai abandonné toutes les vaines tentatives pour obtenir au moins quelques informations de ces malheureux fichiers * -0000? -. Vmdk.
Vendredi matin, a commencé avec un google actif, très actif comme «comment obtenir des fichiers de vmdk». Des articles, un lecteur Linux (programme Windows) et tout ce qui a été rencontré très souvent. J'ai transféré ces 223 gigaoctets du serveur à l'ordinateur portable Windows sur le canal 100Mbit, ce qui était très douloureux. J'ai essayé de monter un disque ssd de format vmware sur un système linux, j'ai roulé des outils vmware dessus, elle a juré une incompatibilité de versions (la dernière prise en charge était 5, mais j'en avais 6,5). Les tentatives d'ouverture par les fenêtres et Java ont également été vaines.
Et même après avoir pu accéder (en utilisant le programme de lecture Linux sur Windows) au fichier * -flat.vmdk, je n'ai reçu les fichiers que jusqu'au 30 juin. Toutes les autres tentatives de montage de fichiers d'instantanés n'ont rien donné, le programme a maudit un disque invalide et a refusé de continuer à fonctionner.
Sortie trouvée
Vendredi est fini, j'étais épuisé, et aussi bouleversé que les fichiers ne puissent pas être retournés. Mais samedi a commencé avec succès. Sur les erreurs google (pourquoi je ne l'ai pas fait tout de suite est inconnue) "Le disque virtuel parent a été modifié depuis la création de l'enfant" sur la première ligne de Google a donné un lien vers la page vmware. Un tas de personnages effrayants, des lignes rouges et tout ce qui a immédiatement été effrayé. J'ai ouvert le lien et l'ai laissé dans l'espoir de trouver quelque chose de plus compréhensible.
Et il a été retrouvé. https://communities.vmware.com/thread/323730 Le forum VmWare en russe et un problème similaire m'ont rencontré sur Internet. Ce n'est probablement pas le même cas que le mien, mais après avoir défilé et lu les commentaires, j'ai essayé de le faire.
Dans un éditeur de texte, en me connectant à esxi via sftp, j'ai ouvert le fichier avec les paramètres du disque parent. .vmdk (pas -flat.vmdk) J'ai reconnu le CID du disque, puis j'ai grimpé dans * -00001.vmdk, en faisant comme décrit par la personne avec le surnom apavlyuchenko dans le forum.
Dans le premier instantané, les champs CID et parentCID doivent indiquer le CID du disque parent. Et puis dans le fichier .vmx dans les champs
scsi0: 1.present = "false"
scsi0: 1.fileName = " .vmdk"
scsi0: 1.deviceType = "scsi-hardDisk"
changez le paramètre FALSE en TRUE et .vmdk en -00001.vmdk.
Et en effet, après cela, la voiture a démarré et n'a pas juré sur l'erreur. Et voilà! Les fichiers sont apparus avant de créer un deuxième instantané!
Sur le forum, un ami a décrit un moyen de récupérer des fichiers à partir d'un seul instantané. Mais mon cas est difficile (apparemment, à cause de ma maladie, qui s'appelle "piquez tout avec vos mains sur une machine qui fonctionne"). Et je n'ai pas eu un instantané, mais trois. Ce qui est logique, il fallait continuer à changer les fichiers.
Donc, mes actions.
Ouvrez le disque parent. Découvrez son CID. Ensuite, copiez le CID du disque parent sur la ligne parentCID du disque -00001.vmdk (premier instantané). Là, nous regardons le CID de cet instantané et le copions dans la ligne parentCID du lecteur -00002.vmdk (deuxième instantané). Là, nous regardons le CID de cet instantané et le copions dans la ligne parentCID du lecteur -00003.vmdk (troisième instantané), eh bien, après cela, nous montons dans .vmx et spécifions le nom du fichier d'instantané dans la ligne fileName (dans mon cas * -0003.vmdk)
Le résultat est le suivant.
* .vmdk
CID = 387edddf
parentCID = ffffffff
* -00001.vmdk
CID = 0284jf712 (j'ai pris tous les CID en gras)
parentCID = 387edddf
* -00002.vmdk
CID = 732fhhtud
parentCID = 0284jf712
* -00003.vmdk
CID = 3747jfj4ff
parentCID = 732fhhtud
.vmx
scsi0: 1.present = "true"
scsi0: 1.fileName = " -00003.vmdk"
scsi0: 1.deviceType = "scsi-hardDisk"
J'allume la VM, je vois que les données sont restaurées. Cela semble lâcher prise. Je copie tout sur un autre serveur, arrête la machine (il crie déjà sur les dysfonctionnements du disque et certains autres problèmes critiques), renvoie les paramètres * .vmx et copie les fichiers sur la machine en marche. Hourra.
Conclusion
Cette histoire m'a appris plusieurs vérités d'or qui ne pouvaient pas être comprises auparavant.
Tout d'abord, sauvegardez tout et toujours et pas sur le disque à l'intérieur de la machine virtuelle, comme je l'ai fait auparavant. Il est nécessaire d'avoir un, voire deux lecteurs de sauvegarde, afin qu'il n'y ait pas un tel temps d'arrêt de deux jours. (les fichiers ont-ils disparu? Nous reculons, copions les fichiers de la sauvegarde et le simple - pas 48 heures, mais 2 heures de la force) Deuxièmement, ne faites rien sur ma tête lourde à une heure du matin (si je me couchais, je viendrais avec une tête propre vendredi) à une autre sortie, mais n'a pas cassé de bois de chauffage dans la deuxième heure de la nuit) Troisièmement, n'apportez pas de modifications importantes aux machines de travail. Déconnectez-vous de la deuxième machine virtuelle, faites-en un instantané, puis faites du lecteur parent le principal et voyez ce qui se passe après cela - c'est ainsi que cela a été fait. Et quatrièmement, effectuez encore plus de sauvegardes. Pas seulement VM, mais esxi lui-même dans son ensemble.
Ressources PS qui m'ont finalement aidé:
Le même forum avec apavlyuchenko incroyable (nous ne sommes pas familiers, si cela)
Page sur la base de connaissances de vmvara avec une description de mon problème et des moyens de le résoudre
L'image que j'ai utilisée
si quelqu'un est intéressé, dans les commentaires je peux laisser ces ressources dont les articles ne m'ont pas aidé
Pss
Malheureusement, le problème de la disparition du lieu est toujours d'actualité. Si vous avez des idées ou souhaitez m'aider à y faire face, veuillez commenter. On peut en parler là-bas. Ou si vous connaissez une autre façon de récupérer des fichiers à partir de disques d'instantanés et que vous souhaitez également les partager, je serai intéressé de le lire. Je vous remercie