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


70

Ich versuche herauszufinden, wie die Größe einer VDI-Datei geändert werden kann. Ich bin neu in 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 Festplatten-Controller, 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 ddBefehls. 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 es geht nur darum, Linux als Host und Windows als Gast zu verwenden.

Ich fand diesen netten Blog- Beitrag, wie man es mit dem modifyhdBefehl 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>

ein

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?


4
Ich habe die Kritik an der Qualität von VirtualBox entfernt, die der Frage nichts Nützliches hinzufügt.
sleske

1
Zum späteren Nachschlagen modifyhdist jetzt bekannt modifymedium, bleibt aber abwärtskompatibel - siehe virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
djule5

Antworten:


121

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 --compactkann 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 der logischen Festplatte. 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.

Details 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 --resizeOption verwendet wird, muss die neue Datenträgergröße daher größer als die aktuelle Größe sein. 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 clonehdBefehl klonen . Mit dem showhdinfoBefehl 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 --compactOption für die ursprüngliche VDI-Datei verwendet habe, um die Konvertierung in eine dynamische Formatvariante zu erzwingen. Nur etwas, das ich angeblich im VirtualBox-Forum gelesen habe Hätte mit älteren Versionen gearbeitet, also dachte ich, ich könnte es genauso gut versuchen. Es hat nicht funktioniert.)

Ändern der Größe der geklonten Festplatte

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 du kannst zB 51200auch 50G(oder evtl. "GB") verwenden. Es gibt auch die Option, mit --resizebyteder die Größe in Bytes ausgedrückt werden kann.

Anzeigen von VDI-Informationen zur verkleinerten Klon-Festplatte.

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 Ihr neues VDI für die VM hinzufügen. Das machst du 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 die VM damit booten und dann mit Ihrem Partitionsverwaltungstool Ihre Partition erweitern, um die virtuelle Festplatte zu füllen (oder weitere Partitionen zu erstellen). Für Windows einfach ausführen diskmgmt.mscund Sie können die Partition dort erweitern.

Screenshots

ein b c d e f G

Referenz



Gutes Auge! Ich habe den Parameter modifyhd korrigiert. Vielen Dank, dass Sie mich darauf aufmerksam gemacht haben.
Samir

2
Eine wirklich gut geschriebene Antwort! IMHO sollte dies eine Menge Stimmen bekommen.
Johan Karlsson

+1: Menschen wie Sie und das Wissen, das Sie frei teilen, machen das StackExchange-Ökosystem zu einer fantastischen Ressource!
Homunculus Reticulli

1
Wenn Sie Probleme haben, weil Sie Snapshots verwenden , besuchen Sie virtualbox.org/ticket/9103 . Grundsätzlich müssen Sie die Operation modifymedium/ modifyhdauf die Snapshot-Datei selbst anwenden .
djule5

11

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

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 die VM dann 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 auftaucht, 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.


Diese Antwort ergibt keinen Sinn. Sie erstellen zuerst eine große Partition in / dev / sdb und ändern dann die Größe. Sie erstellen jedoch nicht zuerst ein Dateisystem. Haben Sie vielleicht den Schritt des Kopierens über die ursprüngliche Partition vergessen?
sleske

5

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


Dies ist Teil der Antwort von sammyg.
Efren

4

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 frei. 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 die VM ein und bootete von dort.

Wird verwendet gparted, um die Partition auf 70 GB zu verkleinern. Erstellt eine neue Partition im nicht verwendeten Speicherplatz in ext4.

  1. Wischen Sie den freien Speicherplatz

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 ZeroFree

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!


1
Sind Sie sicher, dass dies funktioniert hat? Laut VirtualBox-Handbuch --compactfunktioniert dies nur für dynamisch zugewiesene Bilder, nicht für Bilder mit fester Größe.
sleske

1
@ATOzTOA: Wenn die Disk-Image-Datei wächst, handelt es sich nicht um ein Image im "festen Format", sondern um ein "dynamisch zugewiesenes" Image, wie Sie es in Ihrer Antwort geschrieben haben.
sleske

3
Nein, das ist ein dynamisch zugewiesenes Bild . So zitieren Sie das Handbuch: "Wenn Sie ein Image mit fester Größe erstellen, wird auf Ihrem Host-System eine Image-Datei erstellt, deren Größe in etwa der Kapazität der virtuellen Festplatte entspricht." Virtualbox.org/manual/ch05.html#vdidetails
sleske

1
"Ein Bild mit fester Größe kann die angegebene Größe nicht überschreiten." NEIN. "Feste Größe" bedeutet, dass die Größe fest ist, also immer die gleiche. Lesen Sie die Dokumente.
sleske

1
Wenn jemand dies liest und nicht sicher ist, wer Recht hat. @sleske ist richtig. Bilder mit fester Größe sind genau so, wie sie sagen. Bei der Erstellung des Bildes festgelegte Größe. In Benchmarks bietet dies eine viel höhere Leistung gegenüber dynamisch zugewiesenen Bildern. Daher sollte jeder, der VBox für HD-intensive Aufgaben verwendet, dieses Format trotz seiner Einschränkungen in Betracht ziehen.
Jack

2

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, wenn sie 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, indem Sie sie als IDE-Quelle verwenden. 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, werden die Partitionen Ihres VDI-Laufwerks angezeigt, 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 getan haben, müssen Sie den verbleibenden Speicherplatz für die neue erweiterte Partition festlegen und einen neuen Auslagerungsdateibereich darin 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

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

  1. Verwenden Sie VirtualBox, um eine neue Festplatte mit der gewünschten Größe zu erstellen (die Größe MUSS mindestens der des Originals 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 die Gast-VM so, dass sie von dieser bootet (erneut Speichereinstellungen).
  3. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  4. Starten Sie die 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=128Mund 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 Ihrer Gast-VM mehr als 1 GB RAM zugewiesen sind, können Sie den Parameter 'bs' in "bs = 256M" ä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 die Gast-VM herunter (gparted live) und entfernen Sie das ISO vom VM-Laufwerk.
  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-VM-Festplatte (dh die kleine) ist weiterhin auf dem Host-Computer verfügbar.
  6. Starten Sie die VM und genießen Sie!
  7. (Sobald bestätigt wurde, dass alles wie erwartet funktioniert, können Sie die ursprüngliche VM-Festplatte löschen.)

Das oben Genannte hat bei mir bereits mehrfach funktioniert, aber es scheint ein paar weitere Schritte zu erfordern, wenn LVM verwendet wird. (HINWEIS: 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 in LVM vergrößern. 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:

    # 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
    

Gute Antwort! Willkommen auf der Seite!
djsmiley2k - CoW

1

So habe ich ein festes VDI-Image verkleinert / verkleinert / verkleinert (mein Verfahren 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 die gparted-Live-ISO herunter und konfigurieren Sie die Gast-VM so, dass sie von dieser bootet (erneut Speichereinstellungen).
  4. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  5. Starten Sie die Gast-VM (sollte in einer gparted Live-Umgebung starten). 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. (Normalerweise ist das "Original" die erste Festplatte, der / dev / sda zugewiesen wurde, und die "neue" Festplatte ist die zweite Festplatte, der / dev / sdb zugewiesen wurde.)
    2. Verwenden Sie die gparted-Anwendung, um die Original- / Quellpartition (en) auf die gewünschte Größe (n) zu verkleinern. Denken Sie daran , auf die Schaltfläche "Übernehmen" zu klicken, nachdem Sie alle Vorgänge 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 identisch sind, habe ich die detaillierten Informationen für jede Partition auf dem Originaldatenträger mithilfe der Menüoption Partition-> Informationen ... abgerufen und einen Screenshot davon gespeichert, der bei der Erstellung derselben Partition verwendet wurde.) 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 "ursprüngliche" Festplatte ist / dev / sda und "neu" ist / dev / sdb (falls nicht, passen Sie den folgenden Befehl entsprechend an), dann werden wir jede Partition einzeln kopieren. 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 Ihrer Gast-VM mehr als 1 GB RAM zugewiesen sind, können Sie den Parameter 'bs' in "bs = 256M" ä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 die Gast-VM herunter (gparted live) und entfernen Sie das gparted ISO vom VM-Laufwerk.
  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: Bei diesem Schritt wird lediglich die Festplatte aus der Konfiguration der Gast-VM entfernt. Die ursprüngliche Gast-VM-Festplatte (dh die große VDI) ist weiterhin auf dem Host-Computer verfügbar.
  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. Besorgen Sie sich eine ISO-Datei für eine Windows-Installation oder -Reparatur (im Idealfall eine, die Ihrer Betriebssystemversion entspricht) und konfigurieren Sie die Gast-VM so, dass sie von dieser bootet (erneut Speichereinstellungen).

  9. Starten Sie die Gast-VM und wählen Sie das Booten 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. Führen Sie an der Eingabeaufforderung die folgenden Befehle aus (dank http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html für die Informationen!):

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

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

    3. Beenden Sie die 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. Starten Sie die VM und genießen Sie!
  12. (Sobald bestätigt wurde, dass alles wie erwartet funktioniert, können Sie die ursprüngliche VM-Festplatte löschen.)

0

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 den Kommentar direkt nach der Frage) hervorgehoben, modifyhdist jetzt bekannt als 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 Festplattenabbilds.

$ 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 Hostsystem) hat sich möglicherweise nicht geändert, da Ihre VM den zusätzlichen Speicherplatz noch nicht verwendet hat. Habe Spaß.


-1

Dies würde für mich funktionieren und sollte die Gesamtmenge der Festplattenkapazität angeben. Nicht der Raum, den wir brauchen, um zu vergrößern ...

C: \ Programme \ Oracle \ VirtualBox> VBoxManage.exe modifyhd "D: \ Virtuelle Maschine \ VirtualBox-VMs \ Windows 7 (FileZilla Server) \ Windows 7 (FileZilla Server) .vdi" - Größe 15360

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.