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

71

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 trop 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 disque, SAS, SATA, SCSI, yada, yada, mais pas ce que je recherche.

J'ai cherché des réponses sur le World Wide Web, le forum VirtualBox indique que vous êtes censé utiliser Gparted si vous voulez la méthode la plus simple (certains mod ont posté un post-it). Certains utilisateurs discutent de l’utilisation de la ddcommande. Mais c'est tout ce qui concerne Linux. En outre, la SU soulève de nombreuses questions concernant l’augmentation et la diminution de la taille des fichiers VDI, mais elles concernent toutes l’utilisation de Linux en tant qu’hôte et de Windows en tant qu’invité.

J'ai trouvé ce blog sur la façon de le faire avec la modifyhdcommande de VBoxManage. Ce gars le fait aussi sur Linux en tant que système d'exploitation hôte. Il souhaitait même la même taille (50 Go) pour son fichier VDI que le mien pour le mien, 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>

une

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 que diriez-vous de cela ...

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?

Samir
la source
4
J'ai supprimé le discours sur la qualité de VirtualBox, ce qui n'ajoute rien d'utile à la question.
Sleske
1
Pour référence ultérieure, modifyhdest désormais connu sous le nom de modifymediummais reste compatible avec les versions
antérieures

Réponses:

123

Sommaire:

  • VBoxManage.exe modifyhd --resize peut augmenter (mais pas diminuer) la taille logique de l’image disque (la taille vue par le système d’exploitation invité).
  • VBoxManage.exe modifyhd inputfile.vdi --compactpeut 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' --resizeoption 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 clonehdcommande. Pour voir quelle variante de format se trouve actuellement votre fichier VDI, vous pouvez utiliser la showhdinfocommande.

Exemple de travail

Afficher 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.

Clonez 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.

Afficher 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!

(Sur la note de côté! La raison pour laquelle nous disons 7806 Mo de taille physique, c’est parce que j’avais utilisé l’ --compactoption du fichier VDI original pour tenter de forcer la conversion en variante de format dynamique. Juste quelque chose que j’ai lu sur le forum VirtualBox, c aurait fonctionné avec des versions plus anciennes, alors j’ai pensé que je pourrais aussi bien essayer, cela n’a pas fonctionné.)

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 51200aussi bien que 50G(ou éventuellement "GB"). Il y a aussi l'option --resizebytequi peut être utilisée pour exprimer la taille en octets.

Afficher 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 ça! À 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 machine virtuelle avec elle, puis utiliser votre outil de gestion de partition pour développer votre partition afin de remplir le disque virtuel (ou créer plus de partitions). Pour Windows, lancez simplement diskmgmt.mscet vous pourrez développer la partition là-bas.

Captures d'écran

une b c ré e F g

Référence

Samir
la source
Bon oeil! J'ai corrigé le paramètre modifyhd. Merci d'avoir attiré mon attention là-dessus.
Samir
2
Une réponse vraiment bien écrite! IMHO cela devrait obtenir beaucoup de votes.
Johan Karlsson
+1: Ce sont des personnes comme vous et les connaissances que vous partagez librement qui font de l'écosystème StackExchange une ressource si fantastique!
Homunculus Reticulli
1
Si vous rencontrez des problèmes parce que vous utilisez des instantanés , consultez virtualbox.org/ticket/9103 . Fondamentalement, vous devez appliquer l' opération modifymedium/ modifyhdsur le fichier d'instantané lui-même.
djule5
11

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 la machine virtuelle normalement.

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 revient, retournez 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.

Grant Braught
la source
Cette réponse n'a pas de sens. Vous créez d’abord une grande partition sur / dev / sdb, puis vous la redimensionnez, mais vous ne créez pas d’abord un système de fichiers. Avez-vous peut-être oublié l'étape de copier sur la partition d'origine?
Sleske
5

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).

Taky Djarou
la source
Cela fait partie de la réponse de sammyg.
Efren
4

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 sur l'hôte en réduisant la VM.

Pas:

  1. Nettoyer

Supprimé les fichiers indésirables. 45 Go gratuits. 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. Monté Ubuntu Live sur la machine virtuelle et démarré à partir de celle-ci.

Utilisé gpartedpour réduire la partition à 70 Go. Création d’une nouvelle partition dans l’espace inutilisé de ext4.

  1. Essuyez l'espace libre

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

Suivez ce guide: Réduisez le disque dur virtuel sous 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é!

ATOzTOA
la source
1
Êtes-vous certain que cela a fonctionné? Selon le manuel de VirtualBox, --compactne fonctionne que pour les images allouées dynamiquement, pas pour celles de taille fixe.
Sleske
1
@ ATOzTOA: Si le fichier image disque grossit, il ne s'agit pas d'une image "à format fixe", mais d'une image "allouée dynamiquement", comme vous l'avez écrit dans votre réponse.
Sleske
3
Non, c'est une image allouée dynamiquement . Pour citer le manuel: "Si vous créez une image de taille fixe, un fichier d’image de la même taille que le disque virtuel sera créé sur votre système hôte." Virtualbox.org/manual/ch05.html#vdidetails
dimanche
1
"Une image de taille fixe signifie qu’elle ne peut pas dépasser la taille spécifiée." NON. "Taille fixe" signifie que la taille est fixe, donc toujours la même chose. Lire la documentation.
Sleske
1
Si quelqu'un lit ceci et ne sait pas qui a raison. @sleske est correct. Les images de taille fixe sont exactement comme on dit. Fixé à la taille spécifiée lors de la création de l'image. Dans les tests de performance, cela offre des performances bien supérieures aux images allouées de manière dynamique. Par conséquent, toute personne utilisant des tâches intensives de la VBox pour HD devrait probablement envisager ce format, malgré ses limites.
Jack
2

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 allez devoir 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 ... cela m'a pris environ une demi-journée de recherches sur le Web pour comprendre cela. Exécution de win8.1 / Ubuntu sur VBox

Willie

Willie
la source
2

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 (celle-ci DOIT ê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 la machine virtuelle invitée pour qu'elle démarre (à nouveau, paramètres de stockage).
  3. Sauvegardez le stockage actuel de votre VM invité.
  4. Démarrez la machine virtuelle invitée (doit démarrer dans l’environnement en direct gparted). De l'intérieur de l'environnement gparted:
    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=128Met attendez qu'elle soit terminée. 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 ordinateur virtuel virtuel dispose de plus de 1 Go de RAM, vous pouvez modifier le paramètre 'bs' en "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 la machine virtuelle invitée (gparted live) et supprimez l'ISO du lecteur de la machine virtuelle.
  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 à retirer le disque de la configuration de la machine virtuelle invitée - votre disque de machine virtuelle invitée d'origine (c'est-à-dire le plus petit) est toujours disponible sur la machine hôte.
  6. Démarrez la VM et profitez-en!
  7. (Une fois que tout est confirmé et que vous travaillez comme prévu, vous pouvez supprimer le disque de la machine virtuelle d'origine.)

Bien que ce qui précède a très bien fonctionné pour moi plusieurs fois, 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é, j'ai également dû 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
    
codesniffer
la source
Bonne réponse! Bienvenue sur le site!
djsmiley2k - CoW
1

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 il existe de nombreux scénarios permettant 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 dimensionnais à 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 l' ISO live gparted et configurez la machine virtuelle invitée pour qu'elle démarre (à nouveau, paramètres de stockage).
  4. Sauvegardez le stockage actuel de votre VM invité.
  5. Démarrez la machine virtuelle invitée (doit démarrer dans l’environnement en direct 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 attribué à / 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" soit / dev / sda et que "nouveau" soit / dev / sdb (sinon, ajustez la commande suivante de manière appropriée), nous allons copier 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 machine virtuelle invitée dispose de plus de 1 Go de RAM, vous pouvez modifier le paramètre 'bs' pour qu'il soit "bs = 256M", ce qui peut 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 la machine virtuelle invitée (gparted live) et supprimez l'ISO gparted du lecteur de machine virtuelle.
  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 de machine virtuelle invitée d'origine (c'est-à-dire le VDI volumineux) 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 une image ISO d'une installation ou d'une réparation Windows (idéalement, correspondant à la version de votre système d'exploitation) et configurez la machine virtuelle invitée pour qu'elle démarre (à nouveau, paramètres de stockage).

  9. Démarrez la machine virtuelle invitée 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 à l'invite de commande, exécutez les commandes suivantes (grâce à http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html pour l'info!):

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

      Cette dernière commande devrait localiser votre installation Windows et vous 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 la VM et profitez-en!
  12. (Une fois que tout est confirmé et que vous travaillez comme prévu, vous pouvez supprimer le disque de la machine virtuelle d'origine.)
codesniffer
la source
0

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

Remarque: comme l'a souligné djule5 (voir le commentaire situé juste après la question), modifyhdest désormais appelé modifymedium(mais reste compatible avec les versions antérieures ). Ici je l'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) n'a peut-être pas changé, car votre ordinateur virtuel n'a pas encore utilisé la quantité d'espace supplémentaire. S'amuser.

olibre
la source
-1

Cela fonctionnerait pour moi et devrait spécifier le montant total de la capacité du disque dur. Pas l'espace dont nous avons besoin pour augmenter ...

C: \ Program Files \ Oracle \ VirtualBox> VBoxManage.exe modifyhd "D: \ Machine virtuelle \ VM VirtualBox \ Windows 7 (Serveur FileZilla) \ Windows 7 (Serveur FileZilla) .vdi" --resize 15360

saman
la source