it-swarm.com.de

Wie ändere ich ein VDI mit fester Größe mit dem Befehl modifyhd in Windows?

Ich versuche herauszufinden, wie die Größe einer VDI-Datei geändert werden kann. Ich bin neu bei VirtualBox und muss noch viel lernen. Aber ich glaube, ich habe die Grundlagen verstanden. Ich habe Windows 7 bereits als meinen ersten Gast installiert. Der Host ist auch Windows 7. Ich war mir nicht sicher, wie viel Speicherplatz zugewiesen werden sollte, und entschied mich für eine VDI-Größe von 40 GB und eine feste Größe, um die Leistung zu steigern. Aber ich habe es mir jetzt anders überlegt und möchte weitere 10 GB hinzufügen. Ich habe durch das Programm geklickt und den Inhalt des Hilfemenüs gelesen, aber es hilft nicht. Es erklärt Festplattencontroller, SAS, SATA, SCSI, Yada, Yada, aber nicht das, wonach ich suche.

Ich habe im World Wide Web nach Antworten gesucht. Im VirtualBox-Forum heißt es, Sie sollten Gparted verwenden, wenn Sie die einfachste Methode möchten (einige Mods haben einen Sticky gepostet). Einige Benutzer diskutieren die Verwendung des Befehls dd. Aber das ist alles Linux-Zeug. Auch hier bei SU gibt es viele Fragen, die sich mit dem Vergrößern und Verkleinern von VDI-Dateien befassen, aber alles dreht sich darum, Linux als Host und Windows als Gast zu verwenden.

Ich fand diesen netten Blog Beitrag darüber, wie man es mit dem Befehl modifyhd von VBoxManage macht. Dieser Typ macht es auch unter Linux als Host-Betriebssystem. Er wollte sogar die gleiche Größe (50 GB) für seine VDI-Datei wie ich, was für ein Zufall. Also dachte ich, ich würde es trotzdem versuchen, entweder machen oder brechen. Was kann möglicherweise schief gehen? ... wie? Nun, das ist die hässliche Überraschung, die ich bekam.

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

Was jetzt sagen?! ... können virtuelle Festplatten im VDI-Format nicht skaliert werden? Sagst du nicht Unterstützen Sie Ihr eigenes Format nicht? Wie wäre es damit ...

Gibt es wirklich keine einfache Möglichkeit, die Größe einer VDI-Datei zu ändern, vorzugsweise mit ein paar Klicks in VirtualBox? Ist etwas in Arbeit?

68
Samir

Zusammenfassung:

  • VBoxManage.exe modifyhd --resize kann die logische Größe des Datenträgerabbilds (die Größe, die vom Gastbetriebssystem angezeigt wird) erhöhen (aber nicht verringern).
  • VBoxManage.exe modifyhd inputfile.vdi --compact kann die Größe des Images der physischen Festplatte verringern (die Größe der Image-Datei auf der Festplatte, wie sie vom Host-Betriebssystem angezeigt wird). Dies ändert jedoch nicht die Größe des logischen Datenträgers. Beachten Sie, dass dies nur funktioniert, wenn der freie Speicherplatz zuerst im Gastbetriebssystem auf Null gesetzt wurde.
  • modifyhd funktioniert nur mit der dynamischen Formatvariante ("dynamisch zugewiesenes Bild").
  • modifyhd funktioniert nur mit den Bildformaten VDI und VHD.
  • Wenn Sie Snapshots verwenden, müssen Sie die neueste Snapshot-VDI aus dem Unterordner "Snapshots" klonen.

Einzelheiten siehe Abschnitt 8.23. VBoxManage modifyhd im Handbuch.


Der Grund, warum das Verringern der Größe der logischen Festplatte eines VDI noch nicht implementiert wurde, besteht darin, Datenbeschädigungen zu vermeiden, die auftreten können und die dazu führen, dass VMs nicht mehr gestartet werden können. Wenn die Option --resize verwendet wird, muss die neue Datenträgergröße daher größer sein als die aktuelle Größe. Es darf nicht kleiner oder gleich der aktuellen Größe sein. Mit anderen Worten, eine 40-GB-Festplatte kann nur auf eine Größe von 41 GB oder mehr, nicht auf eine Größe von 40 GB (das ist nur dumm) oder auf eine Größe von 39 GB oder weniger angepasst werden.

Alte Versionen von VirtualBox haben VDI-Dateien als "feste" Formatvariante erstellt. Die neue Standardeinstellung besteht nun darin, "dynamische" Formatvarianten zu erstellen, wenn neue VDI-Dateien (Virtual Disk Image) erstellt werden. (Ich vermute, dass dies seit der Einführung der dynamischen Formatvariante der Fall ist, in welcher Version auch immer.)

Die Fehlermeldung "Vorgang für dieses Format ist noch nicht implementiert" bedeutet also, dass Ihre VDI-Datei die Formatvariante "Fest" verwendet. Um dieses Problem zu umgehen, müssen Sie Ihre VDI-Datei mit dem Befehl clonehd klonen. Mit dem Befehl showhdinfo können Sie anzeigen, in welcher Formatvariante sich Ihre VDI-Datei gerade befindet.

Arbeitsbeispiel

VDI-Informationen zur aktuellen Festplatte anzeigen.

Eingabebefehl: 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>

Sehen Sie, wo es heißt "fester Standard"? Aus diesem Grund wird der obige Fehler bei dem Versuch, die Größe zu ändern, ausgeblendet.

Klonen Sie die alte VDI-Datei in eine neue VDI-Datei.

Eingabebefehl: 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à! Die alte Datei wurde jetzt in eine neue Datei geklont. Da die Standardeinstellung in neuen Versionen von VirtualBox die Verwendung der "dynamischen" Formatvariante ist, müssen Sie dies nicht explizit definieren. Wenn Sie jedoch mit einer älteren Version von VirtualBox arbeiten, möchten Sie möglicherweise die Option auf "dynamisch" setzen (falls überhaupt verfügbar), um eine bessere Kompatibilität und/oder Flexibilität mit zukünftigen Versionen von VirtualBox sicherzustellen.

VDI-Informationen zur geklonten Festplatte anzeigen.

Eingabebefehl: 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>

Sehen Sie, wie es jetzt heißt "Dynamic Default"? Wie schön!

(Nebenbei bemerkt! Der Grund, warum hier 7806 MB als physische Größe angegeben sind, ist, dass ich die Option --compact für die ursprüngliche VDI-Datei verwendet habe, um die Konvertierung in eine dynamische Formatvariante zu erzwingen. Nur etwas, was ich auf der VirtualBox gelesen habe Forum, es hätte angeblich mit älteren Versionen geklappt, also dachte ich, ich könnte es auch mal versuchen. Es hat nicht geklappt.)

Größe der geklonten Festplatte ändern.

Eingabebefehl: 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>

Erfolg! Kein Formatbullshitting mehr. Denken Sie daran, die Größe der neuen, geklonten und nicht der ursprünglichen Festplatte zu ändern. Beachten Sie, dass die Größe in MB angegeben wird. Ich glaube, Sie können z. 51200 sowie 50G (oder möglicherweise "GB"). Es gibt auch die Option --resizebyte, mit der die Größe in Bytes ausgedrückt werden kann.

Zeigt VDI-Informationen zu der verkleinerten Klon-Festplatte an.

Eingabebefehl: 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>

Das ist es! Ab hier müssen Sie dieses geklonte Laufwerk als Ihre neue VDI für die VM hinzufügen. Das machen Sie in VirtualBox. Ich werde nicht darauf eingehen. Wenn Sie dies bisher gelesen und verstanden haben, brauchen Sie wahrscheinlich keine weiteren Anleitungen. Sie können entweder die alte "feste" Datei löschen oder als Backup behalten. Stellen Sie sicher, dass Sie die neue VDI-Datei testen, bevor Sie die ursprüngliche Quelldatei löschen.

Hinweis! Die neue Größe der geklonten Festplatte wird nicht sofort angezeigt. Sie müssen das VM damit booten und dann mit Ihrem Partitionsverwaltungstool Ihre Partition erweitern, um die virtuelle Festplatte zu füllen (oder weitere Partitionen zu erstellen). Führen Sie für Windows einfach diskmgmt.msc aus, und Sie können die Partition dort erweitern.

Screenshots

 a  b  c  d  e  f  g

Referenz

119
Samir

Hier ist ein ziemlich einfacher Vorgang, mit dem ich die Größe einer VirtualBox-Festplatte (Version 4.3.16) mit fester Größe in eine dynamische 60-GB-Festplatte auf meinem Mac (OS X 10.9.4) mit Linux (Ubuntu 14.04) als Gastbetriebssystem ändern konnte:

In Terminal auf dem Mac CD in das Verzeichnis mit der VDI-Datei und geben Sie Folgendes ein:

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

Fügen Sie im Speicherbereich der VirtualBox-Anwendung mydiskClone.vdi als zweite Festplatte hinzu und starten Sie dann VM normal.

Geben Sie in der Shell auf dem Gastbetriebssystem Folgendes ein:

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

Starten Sie den Gast neu. Wenn es wieder hochgefahren wird, gehen Sie erneut zur Shell und geben Sie Folgendes ein:

Sudo resize2fs /dev/sdb1

Fahren Sie das Gastbetriebssystem herunter.

Legen Sie im Speicherabschnitt der VirtualBox-Anwendung erneut mydiskClone.vdi als Startdiskette fest. Starten Sie dann das Gastbetriebssystem und überprüfen Sie die neue Festplattengröße mithilfe der Eigenschaften von "Computer" im Dateibrowser.

10
Grant Braught

Das Klonen ist tatsächlich eine bessere Lösung und es gibt einen einfacheren Weg, dies zu tun.

Wählen Sie im Menü Datei die Option Virtual Media Manager und klicken Sie dann auf Kopieren. Die Quelle ist Ihre originale vdi-Festplatte mit fester Größe, und Ihr Ziel ist etwas Neues Ihrer Wahl (einschließlich der Option eines neuen).

5
Taky Djarou

OK, also habe ich es geschafft ohne zu klonen .

Ich hatte eine 100 GB VDI-Datei (festes Format) mit Ubuntu darauf. Funktioniert gut. Ich wollte Speicherplatz auf dem Host freigeben, indem ich die VM verkleinerte.

Schritte:

  1. Aufräumen

Gelöschte unerwünschte Dateien. 45GB kostenlos. Ich brauche nur 30GB, um befreit zu werden.

  1. Korrigieren Sie das Gastbetriebssystem

Ich habe nur eine Partition, daher kann ich im Gast-Ubuntu nichts tun. Hängte Ubuntu Live in das VM ein und bootete von dort.

Verwenden Sie gparted, um die Partition auf 70 GB zu verkleinern. Erstellt eine neue Partition im ungenutzten Bereich in ext4.

  1. Wischen Sie den freien Raum

Der freie Speicherplatz in einer neuen Partition (30 GB).

Befolgen Sie diese Anleitung: Verkleinern Sie die virtuelle Festplatte unter Ubuntu als Gast- und Host-Betriebssystem mit null

Meine neue Partition war /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. Komprimieren Sie den VDI

    VBoxManage modifyhd "ubuntu.vdi" kompakt

Es hat eine Weile gedauert, aber es hat funktioniert!

4
ATOzTOA

So habe ich ein festes VDI-Image vergrößert/vergrößert/verkleinert (mein Vorgang zum Verkleinern ist in einer anderen Antwort enthalten):

  1. Erstellen Sie mit VirtualBox eine neue Festplatte mit der gewünschten Größe (GrößeMUSSmindestens der Originalgröße entsprechen). Öffnen Sie dazu die VirtualBox-Einstellungen für die Gast-VM, navigieren Sie zu Speicher, klicken Sie auf den HDD-Controller (z. B. "SATA") und klicken Sie dann auf "+", um eine Festplatte hinzuzufügen. Konfigurieren Sie dann die neue Festplatte wie gewünscht.
  2. Laden Sie die gparted live ISO herunter und konfigurieren Sie den Gast VM so, dass er von dieser bootet (erneut Speichereinstellungen).
  3. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  4. Starten Sie den Gast VM (sollte in einer gparted-Live-Umgebung starten). Aus der Umgebung heraus:
    1. Verwenden Sie die gparted-Anwendung, um zu überprüfen, ob Ihre vorhandene Festplatte "/ dev/sda" und Ihre neue (größere) Festplatte "/ dev/sdb" ist (Dropdown-Liste oben rechts).
    2. Schließen Sie die gparted-Anwendung.
    3. Öffnen Sie ein Terminal mit Root-Rechten (klicken Sie mit der rechten Maustaste auf den Desktop -> Terminals -> Terminal mit Root-Rechten).
    4. Geben Sie den folgenden Befehl ein: dd if=/dev/sda of=/dev/sdb status=progress bs=128M und warten Sie, bis der Vorgang abgeschlossen ist. Dadurch wird die ursprüngliche Festplatte Byte für Byte auf die neue Festplatte kopiert, einschließlich MBR usw. (Hinweis: Je nach Größe der ursprünglichen Festplatte, Geschwindigkeit der Festplatte auf dem Host usw. kann dies eine Weile dauern.) (Hinweis: Wenn Ihrem Gast VM> 1 GB RAM zugewiesen sind, können Sie den Parameter 'bs' in "bs = 256 MB" ändern, wodurch die Kopie möglicherweise etwas beschleunigt wird.).
    5. Öffnen Sie die gparted-Anwendung erneut
    6. Wählen Sie das neue (größere) Laufwerk (sollte/dev/sdb sein) aus der oberen rechten Dropdown-Liste.
    7. Erweitern Sie die Partition (en) wie gewünscht. Um eine Partition zu erweitern, die sich nicht am Ende befindet, müssen Sie möglicherweise Partitionen verschieben, die hinter den Partitionen liegen, die Sie erweitern möchten. Abhängig von den Besonderheiten Ihres Partitionsschemas müssen Sie dies möglicherweise in mehreren Schritten tun, z. B. indem Sie die letzte Partition bis zum Ende vergrößern und dann verkleinern, indem Sie alles an das Ende verschieben. In meinem Fall war meine letzte Partition der Linux-Swap, also habe ich sie einfach gelöscht, meine primäre Partition wie gewünscht erweitert und dann die Swap-Partition am Ende neu erstellt (wobei darauf geachtet wurde, das ursprüngliche Partitionsschema zu replizieren).
    8. Änderungen übernehmen.
    9. Zu diesem Zeitpunkt sollten Sie eine neue Festplatte mit fester Größe mit dem gesamten ursprünglichen Inhalt und mehr Speicherplatz als das Original haben. Sie können die neue Festplatte in die gparted Live-Umgebung einbinden und überprüfen.
    10. Fahren Sie den Gast VM herunter (gparted live) und entfernen Sie die ISO vom Laufwerk VM.
  5. Wechseln Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zu Speicher, und entfernen Sie den Originaldatenträger aus der Liste (klicken Sie mit der rechten Maustaste und wählen Sie "Anhang entfernen" aus). Dies sollte Ihre neu erstellte Festplatte für die VM belassen. Hinweis: Bei diesem Schritt wird lediglich die Festplatte aus der Konfiguration der Gast-VM entfernt. Die ursprüngliche Gast-Festplatte VM (dh die kleine) ist weiterhin auf dem Host-Computer verfügbar.
  6. Booten Sie die VM und genießen Sie!
  7. (Sobald bestätigt wurde, dass alles wie erwartet funktioniert, können Sie die ursprüngliche VM -Diskette löschen.)

Das oben Genannte hat bei mir bereits mehrfach funktioniert, aber es scheint ein paar weitere Schritte zu erfordern, wenn LVM verwendet wird. (ANMERKUNG: Wenn LVM verwendet wird, können Sie einfach eine neue Festplatte mit der gewünschten Größe hinzufügen und diese dann der Datenträgergruppe hinzufügen.) Unter CentOS 6.6, wo LVM verwendet wird, musste ich auch den Speicherplatz innerhalb von LVM erhöhen. Nachdem ich die oben erstellte neue Festplatte gebootet habe, habe ich etwas in diese Richtung getan (verschiedene Teile davon hängen von den Namen Ihres Setups ab):

  1. Hier erhalten Sie Informationen zum LVM-Setup:

    # 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. Erweitern Sie das physische Volumen (PV) (Lautstärkegruppe (VG) spiegelt automatisch dieselbe Erhöhung wider):

    # 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. Logisches Volume erweitern (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. Dateisystem erweitern:

    Vor:

    # 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
    

    Befehl:

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

    Nach dem:

    # 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

Etwas spät zur Party hier, aber ich werde meine 2 Cent hinzufügen. Zuerst möchte ich sagen, dass dies ein komplizierter Prozess ist, der die meisten Gelegenheitsnutzer verrückt macht, die versuchen, es herauszufinden. Warum Oracle dies nicht in die VBox-GUI aufgenommen hat, ist ein Rätsel.

Schritt 1: Verwenden Sie die Windows-Befehlszeile (VBoxmanage), um die Laufwerksgröße zu erhöhen. Ein Tipp hier ist, die ID des VDI-Laufwerks zu verwenden, anstatt endlos zu versuchen, den Speicherort der Datei einzugeben und Fehlermeldungen zu erhalten.

Schritt 2: Sie müssen dann Ihre primäre Partition erweitern, um den neuen Speicherplatz zu nutzen. Laden Sie die gparted iso herunter und erstellen Sie eine neue virtuelle Maschine in VBox. Verwenden Sie diese als Quelle für IDE. Verwenden Sie dann das vorhandene VDI-Laufwerk als SATA-Laufwerk. Erstellen Sie kein virtuelles Laufwerk für diesen Computer. Starten Sie die neue Maschine und Sie haben die gparted Gui ausgeführt. Dies kann einige Neustarts erfordern, um sich selbst zu beheben.

Sobald gparted ausgeführt wird, sehen Sie die Partitionen Ihres VDI-Laufwerks, deren Größe Sie ändern möchten. WICHTIG: Sie müssen die erweiterte Partition löschen und den Dateibereich austauschen, um die Größe der primären Partition erhöhen zu können. Weisen Sie dem PP daher nicht den gesamten neuen Speicherplatz zu. Sobald Sie dies tun, müssen Sie den verbleibenden Speicherplatz für die neue erweiterte Partition festlegen und einen neuen Auslagerungsdateibereich innerhalb dieses Speicherplatzes erstellen. Ich fand das viel einfacher, als mit der Kommandozeile herumzuspielen.

Kein Kinderspiel, aber machbar ... ich habe etwa einen halben Tag lang im Internet recherchiert, um das herauszufinden. Laufen win8.1/Ubuntu auf VBox

Willie

2
Willie

So habe ich ein festes VDI-Image verkleinert/verkleinert/verkleinert (mein Prozess zum Erweitern befindet sich in einer anderen Antwort in demselben Thema):

Zuerst ein kurzer Hintergrund, warum ich das brauchte (da es viele Szenarien zum Verkleinern eines VDI gibt, von denen einige mit diesem Ansatz möglicherweise nicht durchführbar sind): Vor Jahren habe ich ein festes VDI für einen Windows Server-Gast erstellt und es auf 600 GB dimensioniert. Ich kann mich nicht erinnern, warum ich diese Größe gewählt habe, aber bis heute habe ich nur 100 GB in diesem Gast verbraucht und ich möchte den größten Teil des verbleibenden Speicherplatzes zurückfordern. In meinem Fall möchte ich also alle Daten im Gast behalten und einfach nicht genutzten Speicherplatz im Gast freigeben.

(Die folgenden Schritte stammen größtenteils aus meiner Erinnerung daran, dass ich dies in den letzten 2 Stunden getan habe. Ich entschuldige mich, wenn ich hier etwas verpasse.)

  1. Bestimmen Sie, wie groß die neue Größe sein soll. Natürlich möchten Sie dem Gast wahrscheinlich etwas mehr Platz lassen, als er derzeit verbraucht. Die Größe muss mindestens mit den Daten auf dem Quell-/Originaldatenträger übereinstimmen, auf die nächsten GB gerundet.
  2. Verwenden Sie VirtualBox, um eine neue Festplatte fester Größe mit der im vorherigen Schritt festgelegten Größe zu erstellen. Öffnen Sie dazu die VirtualBox-Einstellungen für die Gast-VM, navigieren Sie zu Speicher, klicken Sie auf den HDD-Controller (z. B. "SATA") und klicken Sie dann auf "+", um eine Festplatte hinzuzufügen. Konfigurieren Sie dann die neue Festplatte wie gewünscht.
  3. Laden Sie das gparted live ISO herunter und konfigurieren Sie den Gast VM, um von ihm zu booten (erneut Speichereinstellungen).
  4. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  5. Booten Sie den Gast VM (sollte in einer gparted Live-Umgebung booten). Aus der Umgebung heraus:

    1. Verwenden Sie die gparted-Anwendung, um festzustellen, welche Festplatte die "ursprüngliche" und welche die "neue" ist. Das Original hat mindestens eine Partition, während die neue Partition vollständig leer ist. (In der Regel das „Original“ ist die erste Platte, die zugeordnet ist/dev/SDA, und die „neuen“ Disk ist die zweite Scheibe, die zugeordnet ist/dev/sdb).
    2. Verwenden Sie die gparted-Anwendung, um die Original-/Quellpartition (en) auf die gewünschte Größe (n) zu verkleinern. Denken Sie daran , um auf die Schaltfläche "Übernehmen" zu klicken, nachdem Sie alle Operationen geplant haben. (Dies kann je nach Partitionsgröße und Festplattengeschwindigkeit einige Zeit in Anspruch nehmen.)
    3. Verwenden Sie die gparted-Anwendung, um eine Partitionstabelle auf der neuen Festplatte zu erstellen (Gerät -> Partitionstabelle erstellen ..., belassen Sie den Typ als MSDOS).
    4. Verwenden Sie die gparted-Anwendung, um identische Partitionen auf der neuen Festplatte zu erstellen. (Um sicherzustellen, dass sie waren die gleichen, zog ich auf der Originalplatte für jede Partition die detaillierten Informationen, indem Sie die Partitions- mit> Information ... Menüoption und gespeichert einen Screenshot davon zu verwenden, wenn ich die gleiche Partition erstellt ( s) auf der neuen/Zieldiskette.) Stellen Sie sicher, dass:
      • Erstellen Sie jede Zielpartition in derselben Größe wie das (neu angepasste) Original.
      • Stellen Sie alle Flags auf den Partitionen so ein, dass sie übereinstimmen (muss möglicherweise nach dem Erstellen der Partition ausgeführt werden).
      • Stellen Sie eine Beschriftung für die Partitionen ein, die übereinstimmt.
      • (HINWEIS: Die UUID wird automatisch festgelegt, wenn die Daten kopiert werden.)
    5. Klicken Sie auf die Schaltfläche "Übernehmen", um alle Änderungen zu bestätigen.
    6. Notieren Sie, welche Festplatte das "Original" und welche das "Neue" ist, und notieren Sie die Nummern der entsprechenden Partitionen (z. B./dev/sda1 ->/dev/sdb1,/dev/sda2 ->/dev/sdb2, ...)
    7. Schließen Sie die gparted-Anwendung.
    8. Öffnen Sie ein Terminal mit Root-Rechten (klicken Sie mit der rechten Maustaste auf den Desktop -> Terminals -> Terminal mit Root-Rechten).
    9. Angenommen, Ihre „Original“ Disk/dev/sda und „neu“/dev/sdb (wenn nicht, stellen Sie den folgenden Befehl in geeigneter Weise), dann werden wir jede Partition kopieren, einen nach dem anderen. Geben Sie für jede Partition, die aus dem obigen Schritt hervorgeht, den folgenden Befehl in das Terminal ein:

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

      und warten Sie, bis der Vorgang abgeschlossen ist. Dadurch wird Partition 1 von der ursprünglichen Festplatte auf Partition 1 auf der neuen Festplatte byteweise kopiert.
      Wiederholen Sie den Befehl für jede verbleibende Partition:

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

      Anmerkungen:

      • Dies kann eine Weile dauern, abhängig von der Größe der Partitionen, der Geschwindigkeit der Festplatte auf dem Host usw.).
      • Wenn Ihrem Gast VM> 1 GB RAM zugewiesen wurden, können Sie den 'bs'-Parameter auf "bs = 256 MB" ändern, wodurch die Kopie möglicherweise etwas beschleunigt wird.
    10. Zu diesem Zeitpunkt sollten Sie eine neue Festplatte mit fester Größe und dem gesamten ursprünglichen Inhalt sowie eine kleinere VDI-Datei als das Original haben. Sie können die neue Festplatte in die gparted Live-Umgebung einbinden und sicherstellen, dass alle Daten vorhanden sind.
    11. Fahren Sie den Gast VM (gparted live) herunter und entfernen Sie die gparted ISO vom Laufwerk VM.
  6. Wechseln Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zu Speicher, und entfernen Sie den Originaldatenträger aus der Liste (klicken Sie mit der rechten Maustaste und wählen Sie "Anhang entfernen" aus). Dies sollte Ihre neu erstellte Festplatte für die VM belassen. Hinweis: Dieser Schritt ist einfach die Diskette aus der Gast-VM Konfiguration zu entfernen - Ihr ursprünglicher Gast VM Scheibe (dh die große VDI.) Auf dem Host-Computer noch verfügbar ist.
  7. Der letzte Schritt, den ich für meinen Windows-Gast ausführen musste, war das Festlegen/Korrigieren des MBR und/oder des BCD. (Ich weiß nicht, ob dies für einen Linux-Gast erforderlich ist, da ich es noch nicht getan habe.) Wenn ich einfach von meinem neuen VDI gebootet habe, wurde ein Windows-Boot-Manager-Fehlerbildschirm mit diesem Inhalt angezeigt (ich habe es leider nicht getan). Ich mache keinen Screenshot, bevor ich das Problem behoben habe.

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Beziehen Sie eine ISO-Datei für eine Windows-Installation oder -Reparatur (im Idealfall eine, die Ihrer Betriebssystemversion entspricht) und konfigurieren Sie den Gast VM, um von dieser zu starten (erneut Speichereinstellungen).

  9. Starten Sie den Gast VM und starten Sie ihn von der CD/DVD.

    1. Da jede Version der Windows-Installation/Reparatur anders ist, kann ich hier nicht für jeden die genauen Schritte angeben. Sie sollten jedoch die Option "Reparieren" auswählen und den Weg zu einer Eingabeaufforderung finden. In meinem Fall von Windows Server 2012 musste ich: (a) Meine Sprache/mein Gebietsschema auswählen; (b) Wählen Sie "Reparieren Sie Ihren Computer" in der unteren linken Ecke. (c) Wählen Sie "Problembehandlung". (d) Wählen Sie "Eingabeaufforderung".
    2. Wenn Sie an einer Eingabeaufforderung angelangt sind, führen Sie die folgenden Befehle aus (danke an http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html für die Info!):

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

      Dieser letzte Befehl sollte Ihre Windows-Installation finden und Sie auffordern, sie dem BCD hinzuzufügen. Antworten Sie mit "Y".

    3. Beenden Sie den Befehl Eingabeaufforderung und schalten Sie die Gast-VM aus.
  10. Wechseln Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zu Speicher, und entfernen Sie das Windows Install/Repair-ISO vom CD/DVD-Laufwerk.
  11. Booten Sie die VM und genießen Sie!
  12. (Sobald bestätigt wurde, dass alles wie erwartet funktioniert, können Sie die ursprüngliche VM -Diskette löschen.)
1
codesniffer

Ich stelle eine Antwort zur Verfügung, die für jedes gehostete Betriebssystem gilt, das auf einem beliebigen Host-Betriebssystem ausgeführt wird. In dieser Antwort wird davon ausgegangen, dass Sie die Größe erhöhen (erweitern) möchten.

Hinweis: Wie von djule5 (siehe Kommentar direkt nach der Frage) hervorgehoben, heißt modifyhd jetzt modifymedium (bleibt jedoch abwärtskompatibel). Hier benutze ich modifymedium.

1. Beenden Sie Ihre laufende VM

Ja, diese Antwort gilt für eine VDI-Datei, die bereits von einer VirtualBox-VM verwendet wird.

2. Öffnen Sie ein Terminal auf Ihrem Host, um die Größe des Festplattenabbilds zu ändern

Die Befehlszeile VBoxManage möchte die Größe eines Datenträgerabbilds nicht mit dem VDI-Dateinamen ändern.

$ 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

Ermitteln Sie daher die UUID Ihres Festplatten-Images.

$ 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

Erweitern Sie die Disk-Image-Größe.

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

3. Erweitern Sie die logische Partition mit einem Partitionierungstool

Führen Sie Ihre gehostete VM aus. Verwenden Sie dann ein Partitionierungswerkzeug .

Einige Tools für ein gehostetes GNU/Linux:

Wenn das gehostete System Windows verwendet:

4. Überprüfen Sie den freien Speicherplatz der Partition

Die Größe Ihrer VDI-Datei (auf Ihrem Host-System) hat sich möglicherweise nicht geändert, da Ihr VM den zusätzlichen Speicherplatz noch nicht belegt hat. Habe Spaß.

0
olibre