Déplacez VMware ESXi VM vers une nouvelle banque de données - préservez l'allocation dynamique

27

Je recherche une bonne solution à un problème d'environnement VMware ESXi où aucun vCenter n'est disponible.

Quelle est la meilleure façon de déplacer une machine virtuelle d'une banque de données à une autre sur un seul hôte ESXi, tout en conservant le provisionnement fin VMDK?

Il s'agit d'un serveur autonome qui a été étendu avec une autre matrice de disques / magasin de données. Je voudrais déplacer les données contenues dans l'ancien tableau vers le nouveau.

Modifier: la taille du magasin de données de destination est en fait plus petite que la source. Je n'ai pas assez de place pour copier le fichier épais.

ewwhite
la source
Pensez-vous vraiment qu'il est sage de déplacer une machine virtuelle vers un magasin de données trop petit pour y tenir? Qu'arrive-t-il à un processus non autorisé dans la mesure où la VM décide d'utiliser tout l'espace de stockage?
Zoredache
En général, non ... mais c'est un cas particulier. La VM ne grandira pas.
ewwhite
Si la machine virtuelle ne se développe pas, il n'y a aucune raison de la conserver allouée.
Jim B
Quelle version d'ESXi?
Jed Daniels
C'est ESXi 5.
ewwhite

Réponses:

21

Vous pouvez également utiliser Fichier -> Exporter -> Exporter le modèle OVF

puis importez-le. La dernière fois que je l'ai essayé, je pense que cela conserve le format vmdk. Pas si sûr maintenant que cela fait longtemps.

johnshen64
la source
3
En supposant que la version 4.1 ou plus récente, vous serez invité à utiliser mince ou épais lors de son importation.
Jed Daniels
2
Tu l'as eu! L'exportation OVF vers un fichier clairsemé de compresse a été rapide et indolore. On m'a donné une option pour une disposition fine ou épaisse lors de l'importation, et l'importation a été rapide; 5 minutes pour une machine virtuelle de 72 Go (8 Go utilisée).
ewwhite
3
FWIW, vous pouvez également le faire à partir d'une ligne de commande en utilisant ovftool.
Jed Daniels
28

Je viens de trouver un moyen de le faire moi-même. Nous espérons avoir un guide facile à suivre sur la façon de déplacer votre machine virtuelle vers une nouvelle banque de données tout en préservant l'allocation dynamique pendant le transfert (ce qui réduit également les temps de transfert):

Guide étape par étape à l'aide de vmkfstools dans la CLI

  1. Éteignez la VM
  2. (Facultatif) Consolidez les instantanés si nécessaire.
  3. Supprimer la machine virtuelle de l'inventaire vCenter
    • Cliquez avec le bouton droit sur la machine virtuelle et cliquez sur "Supprimer de l'inventaire" entrez la description de l'image ici
  4. Activer SSH sur la machine ESXi
    • Dans le client vSphere, allez dans: Configuration -> Profil de sécurité -> Propriétés (à côté de Services) -> SSH (dans la liste) -> Options -> Démarrer
  5. Connectez-vous via SSH en tant que root
  6. Préparer un répertoire sur le magasin de données de destination
    • mkdir "/vmfs/volumes/destination_datastore/Some VM"
  7. Clonez les fichiers .vmdk à l'aide de l'allocation dynamique
    • vmkfstools -i "/vmfs/volumes/source_datastore/Some VM/Some VM.vmdk" -d thin "/vmfs/volumes/destination_datastore/Some VM/Some VM.vmdk"
  8. Copiez tous les fichiers restants (en évitant d'écraser les fichiers .vmdk)
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep -v ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  9. Si vous n'avez pas consolidé les instantanés à l'étape 2, il peut y avoir des fichiers delta instantanés .vmdk, nous devons également les copier (cela peut prendre un certain temps):
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789] | grep ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  10. Une fois le clonage et la copie de tous les fichiers nécessaires terminés, ajoutez la machine virtuelle de la nouvelle banque de données à l'inventaire
    • Dans le client vSphere, accédez à: Configuration-> Stockage-> Navigateur de données , cliquez avec le bouton droit sur la banque de données de destination vers laquelle vous avez déplacé votre machine virtuelle et cliquez sur "Parcourir la banque de données". entrez la description de l'image ici
  11. Accédez à votre machine virtuelle et cliquez avec le bouton droit sur le fichier .vmx , puis cliquez sur "Ajouter à l'inventaire" entrez la description de l'image ici
  12. Démarrez la machine virtuelle pour voir si cela fonctionne, lorsqu'on vous demande si vous l'avez copiée ou déplacée, répondez simplement que vous l'avez copiée. (Je ne sais pas ce que cela signifie, mais je pense que cela a à voir avec au moins l'adresse MAC du vNIC en cours de modification.) entrez la description de l'image ici
  13. Si la machine virtuelle démarre correctement, vous pouvez supprimer la machine virtuelle de l'ancien magasin de données.
    • rm -rf "/vmfs/volumes/source_datastore/Some VM"

Remarque: testé uniquement avec ESXi 5

Illustrations copiées sans vergogne à partir de ce blog .

ohaal
la source
1
Cela devrait fonctionner, mais même fournir des informations sur la façon de déplacer une machine virtuelle avec des instantanés est stupide. Dites aux gens de supprimer tous les instantanés avant de tenter un mouvement comme celui-ci.
pauska
2
Le post de @ ohaal ci-dessus, dans esxi 5.5 u1, a dû changer le -print0 en -print et cela a fonctionné comme un charme! PS. Je voterais mais pas de représentant.
icereval
2
@ohaal a vérifié son fonctionnement sur ESXi 6.7. Merci!
Ed of the Mountain
Y a-t-il une raison de copier d'autres fichiers en dehors du .vmdk et du .vmx? Si ce n'est pas le cas, vous pouvez transformer la findligne en un simple cp.
Agustín Lado
8

Découvrez cette réponse . La même logique s'applique à votre situation, à savoir cette citation:

Il s'appelle "Converter" mais il devrait vraiment s'appeler "All-Purpose OS Data Mover". Mais ça ne roule pas aussi bien.

La seule différence est que les hôtes source et de destination seront les mêmes, mais les banques de données seront différentes. Cela signifie que les fichiers iront de l'hôte ESXi à la machine Converter, puis reviendront à l'hôte. Ce serait bien si Converter était "intelligent" et savait que c'était le même hôte. Malheureusement, cela coûte de l'argent.

CAVEAT: la conversion de la machine virtuelle générera une nouvelle adresse MAC pour tous les adaptateurs réseau. La plupart des systèmes d'exploitation invités interprètent cela comme un nouveau périphérique.

Joel E Salas
la source
1
Un excellent point sur les adresses MAC.
JamesBarnett
3

En fait, créez simplement le dossier à la destination cible, puis copiez les fichiers dans le dossier à partir de la source et il restera mince. Si vous copiez le dossier, il sera converti de fin en épais.

Vidar
la source
2
Ceci est une erreur. vérifié à l'aide de du -h .Thin est devenu épais lorsqu'il a été copié dans un dossier déjà créé sur la même banque de données. cp C* ../newdir
Rowan Hawkins
0

Je copierais le fichier puis le reconvertirais en mince via vmkfstools.

Jim B
la source
La taille du magasin de données de destination est en fait plus petite que la source. Je n'ai pas assez de place pour copier le fichier épais.
ewwhite
Dans ce cas, la copie et la reconversion ne fonctionneront pas, mais vous pouvez également utiliser vmkfstools pour le cloner directement dans la destination. Cela réduira également le temps nécessaire pour le transférer, car il ne transfère pas les Go supplémentaires de zéros. Ma réponse contient des détails sur la façon de le faire.
ohaal