La réduction du disque ne fonctionne pas sur les invités ESXi

11

EHLO tout le monde! Mon premier post sur le réseau StackOverflow :)

Nous exécutons une infrastructure ESXi 5.0 / vCenter pour héberger principalement des systèmes invités Debian 6 / amd64 avec des partitions ext3 et open-vm-toolscompilés à partir des sources par bogue Debian 471784 .

Vous avez un problème qui est soulevé partout sur Internet, mais sans réponse concluante donnée nulle part.

Lorsque j'essaie de réduire un disque à allocation dynamique en mode indépendant et persistant, sans instantanés, parents, clones que ce soit, j'obtiens systématiquement l'erreur suivante:

root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.

Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.

(Soit dit en passant, quels sont les "autres facteurs", et lequel de la tonne de livres blancs et de manuels techniques est le manuel de l'utilisateur? :)

Je sais que je peux remplir les partitions avec des zéros (en fait, j'utilise shred -fuzn0lors de la suppression de gros fichiers) puis arrêter l'invité en question et utiliser diverses méthodes comme le vmkfstoolsclonage ou les disques vMotioning en mode de provisionnement fin, etc., mais tous d'entre eux encourent la pénalité d'indisponibilité pour l'invité à contourner, ou entraînent un déplacement injustifié des données entre les banques de données et / ou les hôtes.


Et la réponse est: pas de rétrécissement sous ESX / ESXi (à partir de la version 5).

La documentation se lit comme suit:

IMPORTANT La réduction des disques n'est pas autorisée dans les circonstances suivantes:

  1. La machine virtuelle est hébergée sur un serveur ESX / ESXi. ESX / ESXi Server peut réduire la taille d'un disque virtuel uniquement lorsqu'une machine virtuelle est exportée. Cependant, l'espace occupé par le disque virtuel sur le serveur ESX / ESXi ne change pas.

  2. La machine virtuelle dispose d'un système d'exploitation invité Mac .

  3. Vous avez préalloué tout l'espace disque au disque virtuel lorsque vous l'avez créé.

  4. La machine virtuelle contient un instantané .

  5. La machine virtuelle est un clone lié ou le parent d'un clone lié.

  6. Le disque virtuel est un disque indépendant en mode non persistant .

  7. Le système de fichiers est un système de fichiers de journalisation , tel qu'un système de fichiers ext4, xfs ou jfs .

Pas étonnant qu'il existe une option de réduction dans VMWare Workstation mais pas dans vSphere Client connecté à une instance ESXi ou vCenter.

NekojiruSou
la source
2
pourriez-vous afficher une valeur de la clé isolation.tools.diskShrink.disable qui se trouve sur le fichier vmx?
cikuraku
1
Ce n'était pas là. L'ajout d'isolement.tools.diskShrink.disable = "false" n'a rien changé.
NekojiruSou

Réponses:

3

http://www.vmware.com/pdf/vmware-tools-cli.pdf Page 13:

La réduction des disques n'est pas autorisée dans les circonstances suivantes:

La machine virtuelle est hébergée sur un serveur ESX / ESXi. ESX / ESXi Server peut réduire la taille d'un disque virtuel uniquement lorsqu'une machine virtuelle est exportée. Cependant, l'espace occupé par le disque virtuel sur le serveur ESX / ESXi ne change pas.

Li Ni
la source
Triste mais vrai ...
NekojiruSou
18

En fait, il existe un moyen de réduire une machine virtuelle sur ESXi, bien que vous deviez arrêter la machine virtuelle pour cela. Voici comment:

  1. Mettez à zéro tout l'espace inutilisé à l'intérieur de la machine virtuelle:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. Faites de même avec d'autres points de montage, des partitions d'échange, etc.

  3. Arrêtez la machine virtuelle.

  4. SSH vers ESXi et exécutez cette commande:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

Cela prendra un certain temps ... vmkfstools "perce des trous" à l'intérieur de votre VMDK, par exemple désalloue tous les blocs qui sont remplis de zéros, réduisant efficacement votre VMDK.

haimg
la source
6
Pour Windows, vous pouvez récupérer une copie de Virtual Server 2005 , en extraire le fichier Precompact.iso , il contient un programme Procompact.exe qui mettra à zéro tout le rythme du disque inutilisé dans Windows.
Chris S
vmkfstools ne fonctionne pas lorsque la machine virtuelle se trouve sur un stockage NFS.
Sven 31415
0

La seule façon de réduire un VMDK dans vSphere ESXi serait d'exporter ou de migrer / Storage vMotion vers une autre banque de données. Je fais beaucoup cela avec des serveurs en direct qui peuvent gérer une migration (pas SQL ou Exchange). Un administrateur de serveur précédent a construit toutes les machines virtuelles avec des disques provisionnés épais. Je migre les machines virtuelles d'une banque de données vers une autre et je change le VMDK en allocation dynamique.

Vous pouvez également faire les vmkfstools si le serveur est hors ligne.

Jarrod LJ Gibson
la source
-1

La réduction des disques est possible sur ESXi.

  1. Recherchez le gros fichier et supprimez-les.

    find / -type f -size +50M

  2. Défragmentation (pas besoin de démonter / remonter quoi que ce soit). Ignorez les erreurs. Certains fichiers comme les liens symboliques et les fichiers de périphérique ne peuvent pas être défragmentés.

    sudo e4defrag /

  3. Remplissez zéro tout l'espace inutilisé afin que VMware sache qu'il est en effet inutilisé:

    dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

  4. Exécutez l'opération de réduction: si 4 échoue, passez à 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Redémarrez le système Linux avec l'option try et éditez la table de partition avec gparted. Réduisez le système de fichiers racine et supprimez et déplacez la partition de swap près de la partition racine.

  6. SSH vers ESXi et exécutez cette commande:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

  7. Nous devons modifier le fichier * .vmdk. Après les lettres RW, définit la taille du disque virtuel VMware (VMDK)

    * 40 Go = 40 * 1024 * 1024 * 1024/512 = 83886080 *

  8. Migrez-le vers un autre magasin de données pour refléter la nouvelle taille.

Kondapaneni
la source