web-dev-qa-db-fra.com

Comment changer la taille fixe VDI avec la commande modifyhd dans Windows?

J'essaie de comprendre comment changer la taille d'un fichier VDI. Je suis nouveau dans VirtualBox et j'ai beaucoup à apprendre. Mais je pense avoir maîtrisé les bases. J'ai déjà installé Windows 7 en tant que premier invité. L'hôte est également Windows 7. Je ne savais pas exactement combien d'espace disque allouer. Je me suis donc tourné vers une taille VDI de 40 Go et une taille fixe pour des performances accrues. Mais j'ai changé d'avis maintenant et je veux ajouter 10 Go supplémentaires. J'ai cliqué sur le programme et lu le contenu du menu Aide, mais cela n'aide en rien. Il explique les contrôleurs de disques, SAS, SATA, SCSI, yada, yada, mais pas ce que je cherche.

Je cherchai le world wide web pour trouver des réponses, le forum VirtualBox dit que vous êtes censé utiliser Gparted si vous voulez que la méthode la plus simple (certains mod a affiché un collant). Certains utilisateurs discutent de l’utilisation de la commande dd. Mais c'est tout ce qui concerne Linux. En outre, il y a beaucoup de questions ici à SU qui traitent avec l'augmentation et la diminution de la taille des fichiers VDI, mais ils sont tous sur l'utilisation de Linux comme hôte et Windows en tant qu'invité.

J'ai trouvé Nice blog post sur la façon de le faire avec la commande modifyhd de VBoxManage. Ce gars le fait aussi sur Linux en tant que système d'exploitation hôte. Il voulait même la même taille (50 Go) pour son fichier VDI, comme je l'ai fait pour moi, quelle coïncidence. Alors j'ai pensé que j'essaierais quand même, soit le faire, soit le casser. Qu'est-ce qui peut éventuellement aller mal? ... hein? Eh bien, c'est la mauvaise surprise que j'ai eue.

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!

C:\Program Files\Oracle\VirtualBox>

a

Dis quoi maintenant?! ... ne peut pas redimensionner des disques durs virtuels au format VDI? Vous ne dites pas? Ne supportant pas votre propre format? Maintenant, comment à ce sujet ...

N'y a-t-il vraiment pas de moyen simple de changer la taille d'un fichier VDI, de préférence en quelques clics dans VirtualBox? Quelque chose en cours?

68
Samir

Résumé:

  • VBoxManage.exe modifyhd --resize peut augmenter (mais pas diminuer) la taille logique de l'image de disque (la taille vue par le système d'exploitation invité).
  • VBoxManage.exe modifyhd inputfile.vdi --compact peut réduire la taille de l'image du disque physique (la taille du fichier image sur le disque tel que vu par le système d'exploitation hôte). Cela ne change toutefois pas la taille du disque logique. Notez que cela ne fonctionne que si l'espace libre a d'abord été mis à zéro dans l'OS invité.
  • modifyhd ne fonctionne qu'avec la variante de format dynamique ("image allouée dynamiquement").
  • modifyhd ne fonctionne qu'avec les formats d'image VDI et VHD.
  • Si vous utilisez des instantanés, vous devrez cloner le dernier VDI instantané du sous-dossier "Snapshots".

Pour plus de détails, voir section 8.23. VBoxManage modifyhd dans le manuel.


La raison pour laquelle la réduction de la taille du disque logique d’un VDI n’a pas encore été implémentée est pour éviter la corruption des données qui pourrait en résulter, entraînant la création de machines virtuelles non démarrables. Par conséquent, lorsque l'option --resize est utilisée, la nouvelle taille du disque doit être supérieure à la taille actuelle. Il n'est pas autorisé à être inférieur ou égal à la taille actuelle. En d'autres termes, un disque de 40 Go ne peut être redimensionné qu'à 41 Go ou plus, il ne peut pas être redimensionné à 40 Go (c'est tout bête) ou à 39 Go ou moins.

Les anciennes versions de VirtualBox créaient des fichiers VDI sous un format "fixe". Le nouveau paramètre par défaut consiste maintenant à créer des variantes de format "dynamiques" lors de la création de nouveaux fichiers VDI (image de disque virtuel). (J'imagine que c'est le cas depuis l'introduction de la variante de format dynamique, quelle que soit la version introduite dans.)

Le message d'erreur "L'opération pour ce format n'est pas encore implémentée" signifie donc que votre fichier VDI utilise la variante de format "fixe". Pour résoudre ce problème, vous devrez cloner votre fichier VDI à l'aide de la commande clonehd. Pour afficher la variante de format de votre fichier VDI actuellement, vous pouvez utiliser la commande showhdinfo.

Exemple de travail

Affiche les informations VDI sur le disque actuel.

Commande d'entrée: vboxmanage.exe showhdinfo path\inputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID:           132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity:       40960 MBytes
Size on disk:   40962 MBytes
In use by VMs:  sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)

C:\Program Files\Oracle\VirtualBox>

Voir où il est dit "défaut fixé"? C'est pourquoi il génère l'erreur ci-dessus lorsque vous essayez de le redimensionner.

Clone l'ancien fichier VDI dans un nouveau fichier VDI.

Commande d'entrée: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c

C:\Program Files\Oracle\VirtualBox>

Voilà! L'ancien fichier a maintenant été cloné dans un nouveau fichier. Étant donné que le paramètre par défaut dans les nouvelles versions de VirtualBox consiste à utiliser une variante de format "dynamique", il n'est pas nécessaire de définir cela explicitement. Toutefois, si vous travaillez avec une version plus ancienne de VirtualBox, vous pouvez définir l'option sur "dynamique" (si disponible) pour assurer une meilleure compatibilité et/ou une meilleure flexibilité avec les versions futures de VirtualBox.

Affiche les informations VDI sur le disque cloné.

Commande d'entrée: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       40960 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Voyez comment on dit maintenant "défaut dynamique"? Comme c'est gentil!

(Remarque: la taille physique est de 7806 Mo ici, c'est parce que j'avais utilisé l'option --compact sur le fichier VDI d'origine pour tenter d'imposer la conversion en variante de format dynamique. Juste quelque chose que j'ai lu sur la VirtualBox forum, il aurait soi-disant fonctionné avec les anciennes versions, alors j’ai pensé que je pourrais aussi bien essayer, cela ne fonctionnait pas.)}

Redimensionnement du disque cloné.

Commande d'entrée: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:\Program Files\Oracle\VirtualBox>

Succès! Pas de format bullshitting pas plus. Rappelez-vous simplement de redimensionner le nouveau disque cloné et non celui d'origine. Gardez à l'esprit que la taille est exprimée en Mo. Je crois que vous pouvez utiliser par exemple 51200 ainsi que 50G (ou éventuellement "GB"). Il y a aussi l'option --resizebyte qui peut être utilisée pour exprimer la taille en octets.

Affiche les informations VDI sur le disque clone redimensionné.

Commande d'entrée: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       51200 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

C'est tout! À partir de là, vous devez ajouter ce lecteur cloné en tant que nouveau VDI pour la machine virtuelle. Vous faites cela dans VirtualBox. Je n'entrerai pas dans ça. Si vous avez été capable de lire et de comprendre ceci jusqu’à présent, vous n’avez probablement pas besoin de vous guider davantage. Vous pouvez soit supprimer l'ancien fichier "fixe", soit le conserver en tant que sauvegarde. Assurez-vous de tester le nouveau fichier VDI avant de supprimer le fichier source d'origine.

Remarque! Vous ne verrez pas immédiatement la nouvelle taille du disque cloné. Vous devez démarrer la VM avec elle, puis utiliser votre outil de gestion de partition pour développer votre partition afin de remplir le disque virtuel (ou de créer plus de partitions). Pour Windows, exécutez simplement diskmgmt.msc et vous pourrez y étendre la partition.

Captures d'écran

 a  b  c  d  e  f  g

Référence

119
Samir

Voici un processus assez simple qui m'a permis de redimensionner un disque de taille fixe VirtualBox (version 4.3.16) en un disque dynamique de 60 Go sur un Mac (OS X 10.9.4) avec Linux (Ubuntu 14.04) exécuté en tant que système d'exploitation invité:

Dans Terminal sur le Mac, insérez le CD dans le répertoire contenant le fichier VDI et entrez ce qui suit:

VBoxManage showhdinfo mydisk.vdi  
VBoxManage clonehd mydisk.vdi mydiskClone.vdi  
VBoxManage modifyhd mydiskClone.vdi --resize 61440  
VBoxManage showhdinfo mydiskClone.vdi

Dans la section Stockage de l'application VirtualBox, ajoutez le fichier mydiskClone.vdi en tant que deuxième disque dur, puis démarrez normalement VM.

Dans le shell de l'OS invité, tapez:

Sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

Redémarrez l'invité. Quand il reviendra, allez à nouveau dans le shell et tapez:

Sudo resize2fs /dev/sdb1

Arrêtez le système d'exploitation invité.

Dans la section de stockage de l'application VirtualBox, définissez à nouveau mydiskClone.vdi sur le disque de démarrage. Ensuite, démarrez le système d'exploitation invité et vérifiez la nouvelle taille de disque à l'aide des propriétés "Ordinateur" du navigateur de fichiers.

10
Grant Braught

Le clonage est en fait une meilleure solution et il existe un moyen plus simple de le faire.

Dans le menu Fichier, sélectionnez Gestionnaire de média virtuel, puis cliquez sur Copier. La source sera votre disque dur vdi de taille fixe d'origine et votre destination sera une nouveauté de votre choix (inclut l'option d'un nouveau).

5
Taky Djarou

OK, alors je l'ai fait sans clonage .

J'avais un fichier VDI de 100 Go (format fixe) avec Ubuntu. Fonctionne bien. Je voulais libérer de l'espace dans l'hôte en réduisant la VM.

Pas:

  1. Nettoyer

Supprimé les fichiers indésirables. 45 Go gratuitement. Je n'ai besoin que de 30 Go pour être libéré.

  1. Réparer le système d'exploitation invité

Je n'ai qu'une seule partition, je ne peux donc rien faire à l'intérieur de l'invité Ubuntu. Ubuntu Live monté dans la VM et démarré à partir de celle-ci.

Utilisez gparted pour réduire la partition à 70 Go. Création d'une nouvelle partition dans l'espace inutilisé dans ext4.

  1. Essuyez l'espace libre

L'espace libre dans la nouvelle partition (30 Go).

Suivez ce guide: Rétrécissez le disque dur virtuel sur Ubuntu en tant que système d'exploitation invité et hôte à l'aide de zerofree

Ma nouvelle partition était /dev/sda3.

$ Sudo apt-get install zerofree
$ Sudo init 1

...

# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
  1. Compacter le VDI

    VBoxManage modifyhd "ubuntu.vdi" compact

Cela a pris du temps, mais ça a fonctionné!

4
ATOzTOA

Voici comment j'ai redimensionné/agrandi/développé une image VDI fixe (mon processus pour les réduire est dans une autre réponse):

  1. Utilisez VirtualBox pour créer un nouveau disque de la taille souhaitée (la tailleDOITdoit être au moins identique à celle de l’original). Pour ce faire, ouvrez les paramètres VirtualBox de la machine virtuelle invitée, accédez à Stockage, cliquez sur le contrôleur de disque dur (ex. "SATA"), puis cliquez sur le "+" pour ajouter un disque dur. Configurez ensuite le nouveau disque comme vous le souhaitez.
  2. Téléchargez l'ISO live gparted et configurez l'invité VM pour démarrer à partir de celui-ci (à nouveau, Paramètres de stockage).
  3. Sauvegardez le stockage actuel de votre VM invité.
  4. Démarrez l’invité VM (doit s’amorcer dans un environnement live gparted). Depuis l’environnement créé:
    1. Utilisez l'application gparted pour vérifier que votre disque existant est "/ dev/sda" et que votre nouveau disque (plus grand) est "/ dev/sdb" (liste déroulante en haut à droite).
    2. Fermez l'application gparted.
    3. Ouvrez un terminal avec les privilèges root (clic droit sur le bureau -> Terminaux -> terminal avec privilèges root).
    4. Tapez la commande suivante: dd if=/dev/sda of=/dev/sdb status=progress bs=128M et attendez qu'elle se termine. Cela copiera le disque d'origine dans le nouveau disque, octet par octet, y compris le MBR, etc. (Remarque: cette opération peut prendre un certain temps en fonction de la taille du disque d'origine, de la vitesse du disque sur l'hôte, etc.). (Remarque: si votre invité VM a> 1 Go RAM alloué, vous pouvez modifier le paramètre 'bs' pour qu'il soit "bs = 256M", ce qui pourrait accélérer la copie un peu. ).
    5. Rouvrez l'application gparted
    6. Sélectionnez le nouveau lecteur (plus grand) (devrait être/dev/sdb) dans le menu déroulant situé en haut à droite.
    7. Développez la ou les partitions comme vous le souhaitez. Pour développer une partition qui n'est pas à la fin, vous devrez peut-être déplacer les partitions qui se trouvent après celle que vous souhaitez développer. En fonction des spécificités de votre schéma de partitionnement, vous devrez peut-être effectuer cette opération en plusieurs étapes, par exemple, agrandir la dernière partition à la fin, puis la réduire en déplaçant tout vers la fin. Dans mon cas, ma partition finale était le swap linux; je l'ai donc simplement supprimée, agrandie ma partition principale comme souhaité, puis j'ai recréé la partition swap à la fin (en prenant soin de répliquer son schéma de partitionnement d'origine).
    8. Appliquer les modifications.
    9. À ce stade, vous devriez avoir un nouveau disque de taille fixe avec tout le contenu d'origine et plus d'espace que l'original. Vous pouvez monter le nouveau disque dans gparted live env et le vérifier.
    10. Arrêtez l'invité VM (gparted live) et supprimez l'ISO du lecteur VM.
  5. Accédez aux Paramètres de la VBox de la machine virtuelle invitée, accédez à Stockage et supprimez le disque d'origine de la liste (cliquez avec le bouton droit de la souris et sélectionnez "Supprimer la pièce jointe"). Cela devrait laisser votre disque nouvellement créé pour la VM. Remarque: cette étape consiste simplement à supprimer le disque de la configuration de la machine virtuelle invitée. Votre disque invité d'origine VM (c'est-à-dire le plus petit) est toujours disponible sur la machine hôte.
  6. Démarrez le VM et profitez-en!
  7. (Une fois que tout est confirmé et que vous travaillez comme prévu, vous pouvez supprimer le disque d'origine VM.)

Bien que ce qui précède a très bien fonctionné pour moi à plusieurs reprises, il semble que quelques étapes supplémentaires soient nécessaires si LVM est utilisé. (REMARQUE: Si LVM est utilisé, vous pouvez simplement ajouter un nouveau disque de la taille souhaitée, puis l'ajouter au groupe de volumes.) Avec CentOS 6.6 où LVM est utilisé, je devais également augmenter l'espace disponible dans LVM. Ainsi, après l’amorçage du nouveau disque créé ci-dessus, j’ai fait quelque chose dans ce sens (différentes parties varient en fonction des noms de votre configuration):

  1. Obtenir des informations sur la configuration de LVM:

    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  31.51g    0 
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 31.51g    0 
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 28.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  2. Augmenter le volume physique (PV) (le groupe de volumes (VG) reflétera automatiquement la même augmentation):

    # pvresize /dev/sda2
      Physical volume "/dev/sda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  39.51g 8.00g
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 39.51g 8.00g
    
  3. Étendre le volume logique (LV):

    # lvextend /dev/vg_rhel6bm1/lv_root /dev/sda2
      Size of logical volume vg_rhel6bm1/lv_root changed from 28.31 GiB (7247 extents) to 36.31 GiB (9295 extents).
      Logical volume lv_root successfully resized
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 36.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  4. Étendre le système de fichiers:

    Avant:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             28G   24G  3.1G  89% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

    Commander:

    # resize2fs /dev/mapper/vg_rhel6bm1-lv_root
      resize2fs 1.41.12 (17-May-2010)
      Filesystem at /dev/mapper/vg_rhel6bm1-lv_root is mounted on /; on-line resizing required
      old desc_blocks = 2, new_desc_blocks = 3
      Performing an on-line resize of /dev/mapper/vg_rhel6bm1-lv_root to 9518080 (4k) blocks.
      The filesystem on /dev/mapper/vg_rhel6bm1-lv_root is now 9518080 blocks long.
    

    Après:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             36G   24G   11G  69% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    
2
codesniffer

Un peu tard pour la fête ici, mais je vais ajouter mes 2 cents. Tout d'abord, je dirai qu'il s'agit d'un processus compliqué qui poussera la plupart des utilisateurs occasionnels à essayer de comprendre. Pourquoi Oracle n'a pas inclus cela dans l'interface graphique de la VBox est un mystère.

Étape 1: Utilisez la ligne de commande Windows (VBoxmanage) pour augmenter la taille du lecteur. Une astuce consiste à utiliser l'ID du lecteur vdi au lieu d'essayer sans cesse d'entrer l'emplacement du fichier et de recevoir des messages d'erreur.

Étape 2: Vous devez ensuite développer votre partition principale pour utiliser le nouvel espace. Téléchargez l'iso gparted et créez une nouvelle machine virtuelle dans la VBox en l'utilisant comme source IDE. Ensuite, utilisez le lecteur VDI existant en tant que disque SATA. Ne créez pas de lecteur virtuel pour cette machine. Démarrez la nouvelle machine et vous aurez l’interface graphique gparted en cours d’exécution. Cela peut prendre quelques redémarrages pour se résoudre.

Une fois que gparted est en cours d’exécution, vous verrez les partitions de votre lecteur vdi que vous souhaitez redimensionner. IMPORTANT: vous devrez supprimer la partition étendue et l'espace de fichier d'échange pour pouvoir augmenter la taille de la partition principale. N'allouez donc pas tout le nouvel espace pour le PP. Une fois cette opération effectuée, vous devrez désigner l'espace restant pour la nouvelle partition étendue et créer un nouvel espace de fichier d'échange au sein de celle-ci. J'ai trouvé que c'était beaucoup plus facile que de jouer avec la ligne de commande.

Ce n'est pas un morceau de gâteau, mais c'est faisable ... il m'a fallu environ une demi-journée de recherches sur le Web pour comprendre cela. Exécution de win8.1/Ubuntu sur VBox

Willie

2
Willie

Voici comment j'ai redimensionné/réduit/réduit une image VDI fixe (mon processus pour la développer se trouve dans une autre réponse de la même rubrique):

Tout d’abord, expliquez brièvement pourquoi j’en avais besoin (car de nombreux scénarios permettent de réduire un VDI, dont certains ne sont peut-être pas réalisables avec cette approche): Il ya quelques années, j’ai créé un VDI fixe pour un invité Windows Server et le dimensionnait à 600 Go. Je ne me souviens pas pourquoi j'ai choisi cette taille, mais à ce jour, je n'ai consommé que 100 Go par invité et je souhaite récupérer la majeure partie de l'espace restant. Donc, dans mon cas, je veux conserver toutes les données de l'invité et je veux simplement libérer de l'espace inutilisé dans l'invité.

(Les étapes suivantes proviennent principalement de mon souvenir de l'avoir fait au cours des deux dernières heures, alors excuses-moi si quelque chose me manque ici.)

  1. Déterminez la taille souhaitée pour la nouvelle taille. Naturellement, vous voudrez probablement laisser à l'invité un espace supplémentaire au-delà de ce qu'il consomme actuellement. La taille doit être au moins identique à celle des données du disque source/original, arrondie au Go le plus proche.
  2. Utilisez VirtualBox pour créer un nouveau disque de taille fixe avec la taille déterminée à l'étape précédente. Pour ce faire, ouvrez les paramètres VirtualBox de la machine virtuelle invitée, accédez à Stockage, cliquez sur le contrôleur de disque dur (ex. "SATA"), puis cliquez sur le "+" pour ajouter un disque dur. Configurez ensuite le nouveau disque comme vous le souhaitez.
  3. Téléchargez le gparted live ISO et configurez l'invité VM pour démarrer à partir de celui-ci (à nouveau, paramètres de stockage).
  4. Sauvegardez le stockage actuel de votre VM invité.
  5. Démarrez l’invité VM (doit s’amorcer dans un environnement live gparted). De l'intérieur de l'environnement gparted:

    1. Utilisez l’application gparted pour déterminer quel disque est le "original" et quel est le "nouveau". L'original aura au moins une partition, tandis que la nouvelle sera complètement vierge. (Habituellement, le "original" est le premier disque affecté à/dev/sda et le "nouveau" disque est le deuxième disque attribué à/dev/sdb.)
    2. Utilisez l’application gparted pour réduire la ou les partitions source/source à la taille souhaitée. N'oubliez pas de cliquer sur le bouton "Appliquer" après avoir défini toutes les opérations. (Cela peut prendre un peu, selon la taille de votre partition et la vitesse de votre disque.)
    3. Utilisez l'application gparted pour créer une table de partition sur le nouveau disque (Périphérique -> Créer une table de partition ..., laissez le type comme MSDOS).
    4. Utilisez l'application gparted pour créer des partitions identiques sur le nouveau disque. (Pour être sûr qu'ils étaient identiques, j'ai extrait les informations détaillées de chaque partition du disque d'origine à l'aide de l'option de menu Partition-> Informations ... et en ai sauvegardé une capture d'écran à utiliser lorsque j'ai créé la même partition ( s) sur le nouveau disque/disque de destination.) Assurez-vous de:
      • Créez chaque partition de destination de la même taille que l’original (nouvellement ajusté).
      • Définissez les indicateurs sur les partitions pour qu'ils correspondent (il peut être nécessaire de le faire après la création de la partition).
      • Définissez n'importe quelle étiquette sur les partitions pour correspondre.
      • (REMARQUE: L'UUID sera automatiquement défini lors de la copie des données.)
    5. Cliquez sur le bouton "Appliquer" pour valider toutes les modifications.
    6. Notez quel disque est "original" et quel "nouveau", et notez les numéros des partitions correspondantes (ex./Dev/sda1 ->/dev/sdb1,/dev/sda2 ->/dev/sdb2, ...)
    7. Fermez l'application gparted.
    8. Ouvrez un terminal avec les privilèges root (clic droit sur le bureau -> Terminaux -> terminal avec privilèges root).
    9. En supposant que votre disque "d'origine" est/dev/sda et que "nouveau" soit/dev/sdb (si ce n'est pas le cas, ajustez la commande suivante de manière appropriée), nous copierons ensuite chaque partition, une à la fois. Pour chaque partition notée à partir de l'étape ci-dessus, entrez la commande suivante dans le terminal:

      # dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
      

      et attendez que cela soit terminé. Cela va copier la partition 1 du disque d'origine sur la partition 1 sur le nouveau disque octet par octet.
      Répétez la commande pour chaque partition restante:

      # dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
      # dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
      # ...
      

      Remarques:

      • Cela peut prendre un certain temps en fonction de la taille des partitions, de la vitesse du disque sur l'hôte, etc.).
      • Si votre invité VM a> 1 Go RAM alloué, vous pouvez modifier le paramètre 'bs' pour qu'il devienne "bs = 256M", ce qui pourrait accélérer la copie un peu.
    10. À ce stade, vous devriez avoir un nouveau disque de taille fixe avec tout le contenu d'origine et un fichier VDI plus petit que l'original. Vous pouvez monter le nouveau disque dans gparted live env et vérifier que toutes les données sont présentes.
    11. Arrêtez l'invité VM (gparted live) et supprimez l'ISO gparted du lecteur VM.
  6. Accédez aux Paramètres de la VBox de la machine virtuelle invitée, accédez à Stockage et supprimez le disque d'origine de la liste (cliquez avec le bouton droit de la souris et sélectionnez "Supprimer la pièce jointe"). Cela devrait laisser votre disque nouvellement créé pour la VM. Remarque: cette étape consiste simplement à retirer le disque de la configuration de la machine virtuelle invitée. Votre disque invité VM (le VDI volumineux) d'origine est toujours disponible sur la machine hôte.
  7. La dernière étape que je devais faire pour mon invité Windows était de définir/corriger le MBR et/ou le BCD. (Je ne sais pas si cela est nécessaire pour un invité Linux car je ne l’ai pas encore fait.) Si j’ai simplement démarré à partir de mon nouveau VDI, j’ai eu un écran d’erreur Windows Boot Mgr avec ce contenu (malheureusement, je n’ai ne prenez pas une capture d’écran avant de résoudre le problème):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Obtenez l'ISO d'une installation ou d'une réparation Windows (idéalement, correspondant à la version de votre système d'exploitation) et configurez l'invité VM à partir de celui-ci (à nouveau, paramètres de stockage).

  9. Démarrez l'invité VM et choisissez de démarrer à partir du CD/DVD.

    1. Étant donné que chaque version de l'installation/réparation de Windows est différente, je ne peux pas donner ici d'étapes précises à tous. Mais l’idée est de choisir l’option "Réparer" et de trouver votre chemin vers une invite de commande. Dans le cas de Windows Server 2012, je devais: (a) choisir ma langue/mes paramètres régionaux; (b) Choisissez "Réparer votre ordinateur" dans le coin inférieur gauche; (c) Choisissez "Dépanner"; (d) Choisissez "Invite de commande".
    2. Une fois que vous êtes à l'invite d'une commande, exécutez les commandes suivantes (merci à http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html pour l'info!):

      > bootrec /fixmbr
      > bootrec /fixboot
      > bootrec /rebuildBcd
      

      Cette dernière commande doit localiser votre installation Windows et Inviter à l’ajouter au BCD. Répondez 'Y'.

    3. Quittez l'invite de commande, puis désactivez la machine virtuelle invitée.
  10. Accédez aux paramètres de la VBox de la machine virtuelle invitée, accédez à Stockage et supprimez le fichier ISO d'installation/de réparation Windows du lecteur de CD/DVD.
  11. Démarrez le VM et profitez-en!
  12. (Une fois que tout est confirmé et que vous travaillez comme prévu, vous pouvez supprimer le disque d'origine VM.)
1
codesniffer

Je fournis une réponse étendue à tout système d'exploitation hébergé s'exécutant sur n'importe quel système d'exploitation hôte. Cette réponse suppose que vous souhaitiez augmenter la taille (étendre).

Note: Comme indiqué par djule5 (voir le commentaire situé juste après la question), modifyhd est maintenant appelé modifymedium (mais reste rétrocompatible). Ici, j'utilise modifymedium.

1. Quittez votre VM en cours d'exécution

Oui, cette réponse concerne un fichier VDI déjà utilisé par une machine virtuelle VirtualBox.

2. Ouvrez un terminal sur votre hôte pour redimensionner l’image disque.

La ligne de commande VBoxManage ne veut pas redimensionner une image disque en utilisant le nom de fichier VDI.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage modifymedium my_disk_image.vdi --resizebyte 16260316160                                                                      VBoxManage: error: Cannot register the hard disk '/home/user/vm/my_disk_image.vdi' {181540c7-b791-4b2f-8e01-5feaff04a6eb} because a hard disk '/home/user/vm/my_disk_image.vdi' with UUID {181540c7-b791-4b2f-8e01-5feaff04a6eb} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp

Identifiez donc l'UUID de votre image disque.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage list hdds
UUID:           181540c7-b791-4b2f-8e01-5feaff04a6eb
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/vm/my_disk_image.vdi
Storage format: VDI
Capacity:       10240 MBytes
Encryption:     disabled

Augmentez la taille de l'image disque.

$ vboxmanage modifymedium 181540c7-b791-4b2f-8e01-5feaff04a6eb --resizebyte 16260316160
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

3. Utilisez un outil de partitionnement pour étendre la partition logique.

Exécutez votre machine virtuelle hébergée. Ensuite, utilisez un outil de partitionnement .

Quelques outils pour un GNU/Linux hébergé:

Si le système hébergé utilise Windows:

4. Vérifiez l'espace libre de la partition

La taille de votre fichier VDI (sur votre système hôte) peut ne pas avoir changé car votre VM n'a pas encore utilisé la quantité d'espace supplémentaire. S'amuser.

0
olibre