
Bonjour, Habr!
De temps en temps, j'entends des ingénieurs pratiquants quelque chose d'étrange: VMDK, VHD et VHDX sont des formats de disques virtuels complÚtement différents, presque fermés, et la conversion de l'un à l'autre est un processus long et douloureux. Aujourd'hui, je vais démontrer que ce n'est pas le cas, je vais comprendre comment ces formats sont liés les uns aux autres et comment effectuer une conversion rapide lors de la migration d'Hyper-V vers VMware et vice versa.
Un peu de théorie. Du point de vue des propriétés, les disques virtuels sont divisés en deux types:
- mince (disque dynamique) et
- épais (disque fixe). Tout le reste - différence, épais paresseux mis à zéro paresseux - seulement des variations sur le sujet.
Je ne m'attarderai pas là -dessus en détail. Je peux seulement dire que nous parlerons plus loin des disques épais.
Formats de disque
RAW - image "brute" de n'importe quel lecteur. Il s'agit d'un conteneur standard qui ne contient aucun en-tĂȘte ni pied de page spĂ©cifique et reprĂ©sente l'image disque «telle quelle». Si nous ouvrons une telle image avec un Ă©diteur HEX, nous verrons immĂ©diatement les en-tĂȘtes du GPT / MBR et / ou du systĂšme de fichiers. La mĂȘme image exacte est obtenue via la commande dd sous Linux. RAW Ă cet Ă©gard est absolument honnĂȘte avec nous.
Le début du fichier RAW.
Fin du fichier RAW.VMDC. VMware ESXi est un RAW ordinaire, oĂč la gĂ©omĂ©trie du disque est dĂ©crite dans un fichier descripteur de texte normal (descripteur). C'est son nom que nous voyons dans la console vSphere lorsque nous connectons un disque virtuel Ă une machine virtuelle ou parcourons le contenu d'un rĂ©pertoire sur la banque de donnĂ©es. VMware ESXi ne fait rien avec l'image. Absolument. Le disque repose sur lui-mĂȘme et se dilate selon les besoins. Dans la meilleure tradition VMware, le format des descripteurs est trĂšs simple:
# Disk DescriptorFile version=1 encoding="UTF-8" CID=fffffffe parentCID=ffffffff isNativeSnapshot="no" createType="vmfs" # Extent description RW 15122560 VMFS "disk-example-flat.vmdk" # The Disk Data Base #DDB ddb.adapterType = "lsilogic" ddb.geometry.cylinders = "941" ddb.geometry.heads = "255" ddb.geometry.sectors = "63" ddb.longContentID = "4f5dc83d0a5270bee54e2d85fffffffe" ddb.uuid = "60 00 C2 93 b4 38 ed dd-a3 85 88 48 68 40 2f c0" ddb.virtualHWVersion = "13"
Et ce n'est pas seulement simple, mais aussi fonctionnel: il suffit de prendre des notes dans le fichier descripteur pour Ă©tendre le disque virtuel Ă toutes les valeurs prises en charge. Cela vous permet de remplir des disques avec des zĂ©ros ou de les marquer comme minces, sans avoir Ă conserver les informations de gĂ©omĂ©trie dans les en-tĂȘtes de disque.
Voici quelques valeurs standard pour toutes les sections du descripteur:
Une description de toutes les valeurs peut ĂȘtre trouvĂ©e dans la spĂ©cification de format:
VMware Virtual Disk Format 1.1Vhd. VHD Ă©pais est le mĂȘme RAW, mais avec un pied de page de 512 octets, qui dĂ©crit la gĂ©omĂ©trie du disque. La machine virtuelle Microsoft Hyper-V n'a pas de fichier descripteur distinct. La description de la gĂ©omĂ©trie du disque prend 4 octets. En fait, d'ici la limitation de la taille du disque de 2 To.
Pied de page. Les 512 derniers octets du disque.La chose la plus intéressante est que si vous créez un fichier descripteur et glissez un disque VHD avec un pied de page dans l'ESXi, l'hyperviseur VMware ignorera ce pied de page et acceptera le VHD comme natif.
Lorsque Storage vMotion convertit un disque en disque lĂ©ger, il coupe simplement ce pied de page et Ă la sortie, nous obtenons le mĂȘme RAW sans zĂ©ros Ă la fin. Et lors de la conversion en un disque Ă©pais - honnĂȘte RAW. C'est ce que je vais dĂ©montrer un peu plus tard.
VHDX. Toutes les informations sur la gĂ©omĂ©trie du disque sont stockĂ©es dans les 4096 premiers kilo-octets du disque virtuel - dans la zone d'en-tĂȘte.
Le schĂ©ma gĂ©nĂ©ral du disque Ă©pais VHDX.Ă quoi ressemble ce domaine? Il contient deux copies des en-tĂȘtes avec leurs journaux, le BAT et la zone de mĂ©tadonnĂ©es sont communs.
La structure logique de l'en-tĂȘte de disque.Dans une unitĂ© de temps, une seule copie de l'en-tĂȘte est active. Cela fournit un certain niveau de tolĂ©rance aux pannes d'en-tĂȘte en cas d'interruptions imprĂ©vues des opĂ©rations de lecture / Ă©criture. AprĂšs chaque opĂ©ration d'E / S, la copie est rĂ©pliquĂ©e et un basculement y est effectuĂ©.
Disposition de la zone d'en-tĂȘte.Pour convertir VHDX en RAW, il suffit de couper les premiers 4096 Ko.
DĂ©marrer les donnĂ©es Ă 5 Mo.Un lecteur attentif, bien sĂ»r, dira: ok, Zhenya, mais convertissez-vous RAW en VHDX faiblement? Ă quoi je rĂ©pondrai: cela dĂ©pend du systĂšme de fichiers et de la quantitĂ© de donnĂ©es qu'il permet d'Ă©crire au dĂ©but du fichier. Manuellement sur le systĂšme de fichiers NTFS, cela peut ĂȘtre fait en dĂ©calant le dĂ©but du fichier de 4 Mo dans la MFT et en ajoutant l'en-tĂȘte Ă cet endroit.
L'utilitaire
vhdxtool.exe fonctionne sur le mĂȘme principe
. Cependant, avec cette conversion, nous n'obtiendrons pas une belle image sous la forme d'un en-tĂȘte de 4 Mo et RAW. Le disque sera visible et fonctionnera mĂȘme correctement en tant que VHDX, mais il y aura Ă©galement beaucoup de «dĂ©chets» de zĂ©ros qui sont apparus en raison de manipulations avec dĂ©calages. Le lecteur ne sera pas optimisĂ©. Il est recommandĂ© de migrer les machines virtuelles avec un tel disque vers un autre volume ou d'optimiser via les applets de commande Convert-VHD ou Optimize-VHD. Si cela n'est pas fait, le disque prendra plus d'espace qu'il ne devrait et peut fonctionner plus lentement.
Cependant, dans les scénarios de migration de VMware vers Hyper-V, cet utilitaire est indispensable, car il permet une conversion sur place sans avoir besoin d'un octet pour lire le disque source et créer une copie à proximité. Toute rugosité sera lissée lors de la premiÚre migration Live Storage.
Conclusion: les disques Ă©pais des formats VMDK, VHD, VHDX ne sont en rĂ©alitĂ© pas trĂšs diffĂ©rents les uns des autres. Ils sont basĂ©s sur RAW avec divers additifs. En utilisant le mĂȘme Ă©diteur HEX ou les mĂȘmes fonctions du systĂšme d'exploitation pour travailler avec le systĂšme de fichiers, nous pouvons transformer 10 To VMDK ou VHDX en disque d'hyperviseur cible en quelques secondes.
Voyons comment VMware Exsi gĂšre les disques durs virtuels.
- à titre d'exemple, j'ai créé une image Windows Server à l'aide de Convert-WindowsImage avec une injection de pilotes et de paramÚtres VMware:
- Version du systĂšme d'exploitation: Windows Server 2019 Standard,
- Type de disque: fixe,
- Disposition du disque: GPT,
- Taille du disque: 30 Go.

Faites attention aux paramÚtres FileSize (taille réelle du fichier) et Size (taille du disque en termes de VM). La différence entre les valeurs est exactement 512 octets - la taille du pied de page VHD. - Renommez le lecteur en Win2019-test2-flat.vmdk pour le charger dans la banque de données ESXi.

- Ensuite, je crée une machine virtuelle vide dans VMware ESXi avec un disque épais (mis à zéro) afin que le descripteur VMDK soit créé automatiquement et n'ait pas à calculer manuellement les cylindres.

- Nous nous connectons à l'hÎte via WinSCP et remplaçons le fichier existant:

Tout est juste: le pied de page est en place. - Allumez la machine virtuelle et vérifiez que le systÚme d'exploitation démarre sans aucun problÚme. Il ne reste plus qu'à installer VMware Tools, ce qui sera simple, puisque Convert-WindowsImage nous permet d'installer des pilotes de périphériques.

- Déplacez le disque vers une autre banque de données via Storage vMotion et convertissez-le en disque léger.

- Vérifiez la taille - le disque est devenu mince.

- Si nous reconvertissons sur un disque Ă©pais ou migrons la machine virtuelle vers le stockage de fichiers, nous obtenons le RAW le plus pur sans en-tĂȘtes.

Le pied de page claqua.
Le mĂȘme focus fonctionne pour les RAW créés via dd. Et mĂȘme dans la direction opposĂ©e. De cette façon, vous voyez que VMware ESXi accepte les pieds de page tiers ou les disques RAW.
Si vous ne voulez pas d'astuces, vous pouvez utiliser les outils ci-dessous.
Pour rĂ©sumer. Les diffĂ©rents formats de disques virtuels Ă©pais ne sont pas si diffĂ©rents. Au cĆur de tous les RAW avec diffĂ©rents "additifs".
La conversion de formats de disques virtuels n'est pas effrayante et, comme je l'ai montré, vous pouvez parfois vous en passer.
Le principal bĂ©nĂ©fice de tout cela est la rĂ©duction du temps de migration de Hyper-V vers VMware et vice versa et des temps d'arrĂȘt des VM pendant la migration. Dans DataLine, nous pratiquons cela avec un temps d'arrĂȘt de machine virtuelle pendant moins de 30 minutes. L'enregistrement reprĂ©sente 40 secondes de temps d'arrĂȘt de la machine virtuelle pendant la migration entre les hyperviseurs.
N'oubliez pas que lors de la migration entre différents hyperviseurs, une conversion n'est pas suffisante. Au minimum, vous devez d'abord installer les composants d'intégration de l'hyperviseur cible, supprimer ou désactiver le lancement des composants de l'hyperviseur source, supprimer les périphériques virtuels de l'hyperviseur source, etc. Mais c'est une histoire complÚtement différente, dont je peux aussi vous parler.
Liens utiles: