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

Ich versuche herauszufinden, wie man die Größe einer VDI-Datei ändert. Ich bin neu in VirtualBox und habe viel zu lernen. Aber ich glaube, ich habe den Dreh raus. Ich habe bereits Windows 7 als meinen ersten Gast installiert. Der Host ist auch Windows 7. Ich war mir nicht sicher, wie viel Speicherplatz zugewiesen werden soll, daher entschied ich mich für eine VDI-Größe von 40 GB und eine feste Größe für mehr Leistung. Aber ich habe jetzt meine Meinung geändert und möchte weitere 10 GB hinzufügen. Ich habe das Programm durchklickt und gelesen der Inhalt des Hilfe-Menüs, aber es hilft nicht. Es erklärt disk-Controller, SAS -, SATA -, SCSI -, yada, yada, aber nicht das, was ich Suche.

Suchte ich im world wide web nach Antworten, die VirtualBox-forum sagt, Sie sind sollen verwenden Sie Gparted, wenn Sie möchten, dass die einfachste Methode (einige mod veröffentlicht ein klebrig). Einige Benutzer diskutieren mit dd Befehl. Aber das ist alles Linux-Zeug. Außerdem gibt es hier bei SU viele Fragen, die sich mit der Erhöhung und Verringerung der VDI-Dateigrößen befassen, aber sie sind alle über die Verwendung von Linux als host und Windows als Gast.

Fand ich diese netten blog post auf, wie es zu tun mit der modifyhd - Befehl VBoxManage. 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 für meine, was für ein Zufall. Also dachte ich, ich würde es trotzdem versuchen, entweder machen oder brechen. Was kann möglicherweise schief gehen?... eh? 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

Sag was jetzt?!... kann nicht ändern Sie die Größe virtueller Festplatten im VDI-Format? Sie sagen nicht? Unterstützt Ihr eigenes Format nicht? Nun, 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? Alles im Gange?

Author: sleske, 2014-02-13

9 answers

Zusammenfassung:

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

Einzelheiten siehe Abschnitt 8.23. VBoxManage modifyhd im Handbuch.


Der Grund, warum das Verringern der logischen Festplattengröße eines VDI noch nicht implementiert wurde, besteht darin, eine Beschädigung der Daten zu verhindern, die auftreten könnte, und Sie hätten dadurch nicht bootbare VMs. Daher, wenn die Option --resize verwendet wird, muss die neue Festplattengröße 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 41 GB oder mehr geändert werden, die Größe kann nicht auf 40 GB (das ist nur dumm) oder 39 GB oder weniger geändert werden.

Alte Versionen von VirtualBox erstellten VDI-Dateien als "feste" Formatvariante. Die neue Standardeinstellung ist jetzt "dynamische" Formatvarianten zu erstellen, wenn neue VDI (Virtual Disk Image) dateien werden erstellt. (Ich vermute, dies ist der Fall seit der Einführung der dynamischen Formatvariante, je nachdem, in welcher Version sie eingeführt wurde.)

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

Arbeitsbeispiel

Zeigt VDI-Informationen zur aktuellen Festplatte an.

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 "fixed default"steht? Deshalb spuckt es den obigen Fehler aus, wenn Sie versuchen, die Größe zu ändern.

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 nun in eine neue Datei geklont. Da die Standardeinstellung in neuen Versionen von VirtualBox um eine "dynamische" Formatvariante zu verwenden, müssen Sie diese nicht explizit definieren. Wenn Sie jedoch mit einer älteren Version von VirtualBox arbeiten, sollten Sie die Option auf "dynamisch" setzen (falls überhaupt verfügbar), um eine bessere Kompatibilität und/oder Flexibilität mit zukünftigen Versionen von VirtualBox zu gewährleisten.

Zeigt VDI-Informationen über die geklonte 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:       40960 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Sehen Sie, wie jetzt "dynamic default"steht? Wie schön!

(Auf die Randnotiz! Der Grund, warum hier 7806 MB als physische Größe angegeben werden, 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 habe auf der VirtualBox forum, die es angeblich gearbeitet haben würde, die mit älteren Versionen, so dachte ich, könnte ich auch probieren. 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 format Blödsinn nicht mehr. Denken Sie daran, die Größe der neuen, geklonten Festplatte und nicht der ursprünglichen zu ändern. Beachten Sie, dass die Größe in MB ausgedrückt wird. Ich glaube, Sie können zB 51200 sowie 50G (oder möglicherweise "GB") verwenden. Es gibt auch die Option --resizebyte, mit der die Größe in Bytes ausgedrückt werden kann.

Zeigen Sie VDI-Informationen über die Größe der Klondiskette 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! Von hier aus müssen Sie dieses geklonte Laufwerk als neuen VDI für hinzufügen VM. Sie tun das in VirtualBox. Darauf werde ich nicht eingehen. Wenn Sie dies bisher lesen und verstehen konnten, benötigen Sie wahrscheinlich keine weitere Anleitung. Sie können entweder die alte "feste" Datei löschen oder als Backup belassen. 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 Ihr Partitionsverwaltungstool verwenden so erweitern Sie Ihre Partition, um die virtuelle Festplatte zu füllen (oder erstellen Sie weitere Partitionen). Führen Sie für Windows einfach diskmgmt.msc aus und Sie können die Partition dort erweitern.

Screenshots

ein B c d e f g

Verweis

 134
Author: Samir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:55

Hier ist ein ziemlich einfacher Prozess, der für mich funktioniert hat, um die Größe einer VirtualBox-Festplatte (v. 4.3.16) mit fester Größe auf eine dynamische Festplatte mit 60 GB auf meinem Mac (OS X 10.9.4) zu ändern, wobei Linux (Ubuntu 14.04) als Gastbetriebssystem ausgeführt wird:

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 Abschnitt VirtualBox Application storage mydiskClone hinzu.vdi als zweite HD, dann starten Sie die VM normal.

In der Shell auf dem Gastbetriebssystem, Typ:

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

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

sudo resize2fs /dev/sdb1

Herunterfahren des Gastbetriebssystems.

Legen Sie im Abschnitt VirtualBox Application storage erneut mydiskClone fest.vdi die Bootdiskette zu sein. Starten Sie dann das Gastbetriebssystem und überprüfen Sie die neue Festplattengröße mithilfe der Eigenschaften von "Computer" im Dateibrowser.

 15
Author: Grant Braught,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-09-26 16:55:02

OK, also habe ich es geschehen ohne Klonen.

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

Schritte:

  1. Bereinigung

Unerwünschte Dateien Gelöscht. 45 GB frei. Ich brauche nur 30GB, um befreit zu werden.

  1. Fix das Gast OS

Ich habe nur eine Partition, kann also nichts aus Ubuntu machen. Montiert Ubuntu-Live in der VM und gebootet von ihm.

Verwendet gparted, um die Partition auf 70 GB zu verkleinern. Erstellt eine neue Partition im ungenutzten Speicherplatz in ext4.

  1. Den freien Speicherplatz löschen

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

Befolgen Sie diese Anleitung: Virtuelle Festplatte unter Ubuntu als Gast-und Hostbetriebssystem mit zerofree verkleinern

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. Kompakt der VDI

    VBoxManage modifyhd "ubuntu.vdi" kompakt -

Es hat eine Weile gedauert, aber es hat funktioniert!

 5
Author: ATOzTOA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-09-30 17:50:33

Klonen ist eigentlich eine bessere Lösung und es gibt einen einfacheren Weg.

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

 5
Author: Taky Djarou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-11-11 21:25:27

Irgendwie zu spät zur Party hier, aber ich werde meine 2 Cent hinzufügen. Zuerst werde ich sagen, dass dies ein verschlungener Prozess ist, der die meisten Gelegenheitsbenutzer dazu bringt, 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 Laufwerkgröß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 abzurufen.

Schritt 2: Sie müssen dann erweitern ihre primäre Partition, 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-Festplatte. Erstellen Sie kein virtuelles Laufwerk für diesen Computer. Starten Sie den neuen Computer und die gparted-GUI wird ausgeführt. Dies kann einige Neustarts erfordern, um sich selbst zu sortieren.

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 und den Auslagerungsdateispeicher löschen, um die Größe der primären Partition erhöhen zu können, sodass nicht der gesamte neue Speicherplatz für die PP zugewiesen wird. Sobald Sie dies tun, müssen Sie den verbleibenden Speicherplatz für die neue erweiterte Partition festlegen und darin einen neuen Auslagerungsdateibereich erstellen. Ich fand das viel einfacher, als mit der Befehlszeile herumzufummeln.

Nicht ein Stück Kuchen, aber es ist machbar... ich brauchte ungefähr einen halben Tag, um die web, um das herauszufinden. Ausführen von win8. 1 / Ubuntu auf VBox

Willie

 2
Author: Willie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-01 00:22:30

So habe ich die Größe eines festen VDI-Bildes geändert/vergrößert/erweitert (mein Prozess zum Verkleinern ist in einer anderen Antwort):

  1. Erstellen Sie mit VirtualBox einen neuen Datenträger der gewünschten Größe (die Größe MUSS mindestens der des Originals entsprechen). Öffnen Sie dazu die VirtualBox-Einstellungen für die Gast-VM, navigieren Sie zum Speicher und klicken Sie auf den HDD-Controller (z. "SATA"), und klicken Sie dann auf die"+", 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, um von ihr zu booten (wieder Speichereinstellungen).
  3. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  4. Starten Sie die Gast-VM (sollte in die gparted Live-Umgebung booten). Aus der gparted-Umgebung:
    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 privs (Rechtsklick auf die 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 er abgeschlossen ist. Dadurch wird die ursprüngliche Festplatte Byte für Byte auf die neue Festplatte kopiert, einschließlich MBR usw. (Hinweis: Dies kann je nach Größe der Originaldiskette, Geschwindigkeit der Festplatte auf dem Host usw. eine Weile dauern.) (Hinweis: Wenn Ihrer Gast-VM > 1 GB RAM zugewiesen ist, können Sie den Parameter 'bs' auf "bs=256 M" ändern, wodurch die Kopie möglicherweise etwas beschleunigt wird.)
    5. Erneut öffnen die gparted-Anwendung
    6. Wählen Sie das neue (größere) Laufwerk (sollte /dev/sdb sein) aus der Dropdown-Liste oben rechts aus.
    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 nach den Partitionen liegen, die Sie erweitern möchten. Abhängig von den Besonderheiten Ihres Partitionierungsschemas müssen Sie dies möglicherweise in mehreren Schritten tun, z. B. die letzte Partition bis zum Ende vergrößern und dann verkleinern, indem Sie alles bis zum Ende verschieben. In meinem meine letzte Partition war 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, dass das ursprüngliche Partitionierungsschema repliziert wird).
    8. Änderungen anwenden.
    9. An dieser Stelle 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 im gparted live env mounten und überprüfen.
    10. Die Gast-VM herunterfahren (gparted live) und entfernen Sie die ISO vom VM-Laufwerk.
  5. Gehen Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zum Speicher und entfernen Sie die Originaldiskette aus der Liste (klicken Sie mit der rechten Maustaste und wählen Sie "Anhang entfernen"). Dies sollte Ihre neu erstellte Festplatte für die VM belassen. Hinweis: In diesem Schritt wird einfach die Festplatte aus der Konfiguration der Gast-VM entfernt-Ihre ursprüngliche Gast-VM-Festplatte (dh. der kleine) ist noch auf dem Host-Computer verfügbar.
  6. Starten Sie die VM und genießen Sie!
  7. (Einmal alles funktioniert wie erwartet bestätigt, Sie können die ursprüngliche VM-Festplatte löschen.)

Während das Obige mehrmals für mich großartig funktioniert hat, scheinen einige weitere Schritte erforderlich zu sein, wenn LVM verwendet wird. (HINWEIS: Wenn LVM verwendet wird, können Sie einfach eine neue Festplatte der gewünschten Größe hinzufügen und diese dann der Volume-Gruppe hinzufügen.) Mit CentOS 6.6, in dem LVM verwendet wird, musste ich auch den Speicherplatz innerhalb von LVM erhöhen. Nach dem Booten der oben erstellten neuen Festplatte habe ich also etwas in dieser Richtung getan (verschiedene teile davon variieren je nach Namen Ihres Setups):

  1. Informationen zum LVM-Setup erhalten:

    # 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. Physikalisches Volumen (PV) erweitern (Volumengruppe (VG) spiegelt automatisch den gleichen Anstieg 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 Volumen (LV) erweitern:

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

    Vorher:

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

    Nachher:

    # 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
Author: codesniffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-18 22:24:36

So habe ich die Größe eines festen VDI-Bildes geändert/verkleinert/reduziert (mein Erweiterungsprozess befindet sich in einer anderen Antwort in demselben Thema):

Zuerst ein kurzer Hintergrund, warum ich das brauchte (da es viele Szenarien gibt, um eine VDI zu verkleinern, von denen einige mit diesem Ansatz möglicherweise nicht möglich sind): Vor Jahren habe ich eine feste VDI für einen Windows Server-Gast erstellt und sie bei 600 GB dimensioniert. Ich erinnere mich nicht, warum ich diese Größe gewählt habe, aber ab heute habe ich nur noch 100 GB in diesem Gast verbraucht und möchte den größten Teil des verbleibender Platz. In meinem Fall möchte ich also alle Daten im Gast beibehalten und einfach ungenutzten Speicherplatz im Gast freigeben.

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

  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 die gleiche sein wie die Daten auf der Quell - / Originaldiskette, gerundet auf die nächsten GB.
  2. Verwenden Sie VirtualBox, um eine neue Festplatte mit 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 zum Speicher und klicken Sie auf den HDD-Controller (z. "SATA"), und klicken Sie dann auf die"+", 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 ihr startet (Speicher Einstellung).
  4. Sichern Sie den aktuellen Speicher Ihrer Gast-VM.
  5. Starten Sie die Gast-VM (sollte in die gparted Live-Umgebung booten). Aus der gparted-Umgebung:

    1. Verwenden Sie die gparted-Anwendung, um festzustellen, welche Festplatte das "Original" und welche die "neue" ist. Das Original hat mindestens eine Partition, während die neue vollständig leer ist. (Normalerweise ist das "Original" die erste Festplatte, der /dev/sda zugewiesen ist, und die" neue " Festplatte ist die zweite Festplatte welches ist /dev/sdb zugewiesen.)
    2. Verwenden Sie die gparted-Anwendung, um die Original - /Quellpartition(en) auf die gewünschte(n) 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 (en) und Festplattengeschwindigkeit etwas dauern.)
    3. Verwenden Sie die gparted-Anwendung, um eine Partitionstabelle auf der neuen Festplatte zu erstellen (Gerät -> Partitionstabelle erstellen..., lassen Sie den Typ als MSDOS).
    4. Benutze den gparted anwendung zum Erstellen identischer Partitionen auf der neuen Festplatte. (Um sicherzustellen, dass sie gleich sind, habe ich mithilfe der Partition->Informationen die detaillierten Informationen für jede Partition auf der Originaldiskette abgerufen... menüoption und einen Screenshot davon gespeichert zu verwenden, wenn ich die gleiche Partition(n) auf der neuen/Zielfestplatte erstellt.) Sicherstellen, dass zu:
      • Erstellen Sie jede Zielpartition in der gleichen Größe wie das (neu angepasste) Original.
      • Setzen Sie alle übereinstimmenden Flags auf den Partitionen (möglicherweise müssen Sie dies tun, nachdem die Partition erstellt wurde).
      • Setzen Sie eine beliebige Beschriftung auf den Partitionen, die übereinstimmt.
      • (HINWEIS: Die UUID wird automatisch gesetzt, wenn die Daten kopiert werden.)
    5. Klicken Sie auf die Schaltfläche "Übernehmen", um alle Änderungen zu übernehmen.
    6. Notieren Sie sich, welche Festplatte das "Original" und welche "neu" ist, und notieren Sie sich die Nummern der entsprechenden Partitionen (z. /dev/sda1 -> /dev/sdb1, /dev/sda2 -> /dev/sdb2, ...)
    7. gparted schließen Anwendung.
    8. Öffnen Sie ein Terminal mit Root-Rechten (Rechtsklick auf den Desktop - > Terminals - > Terminal mit Root-Rechten).
    9. Angenommen, Ihre "ursprüngliche" Festplatte ist /dev /sda und "neu" ist/dev / sdb (wenn nicht, passen Sie den folgenden Befehl entsprechend an), kopieren wir jede Partition einzeln. Geben Sie für jede Partition, die im obigen Schritt notiert ist, den folgenden Befehl in das Terminal ein:

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

      Und warte, bis es abgeschlossen ist. Dies wird Partition 1 kopieren von der ursprünglichen Festplatte auf Partition 1 auf der neuen Festplatte Byte für Byte.
      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 > 1 GB RAM zugewiesen ist, können Sie den Parameter 'bs' auf "bs=256 M" ändern, wodurch die Kopie möglicherweise etwas beschleunigt wird.
    10. An dieser Stelle sollten Sie eine neue Festplatte mit fester Größe haben alle ursprünglichen Inhalte und eine kleinere VDI-Datei als das Original. Sie können die neue Festplatte im gparted live env mounten und überprüfen, ob alle Daten vorhanden sind.
    11. Herunterfahren der Gast-VM (gparted live) und Entfernen der GPARTED-ISO vom VM-Laufwerk.
  6. Gehen Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zum Speicher und entfernen Sie die Originaldiskette aus der Liste (klicken Sie mit der rechten Maustaste und wählen Sie "Anhang entfernen"). Dies sollte Ihre neu erstellte Festplatte für die VM belassen. Hinweis: Dieser Schritt entfernt einfach die Festplatte aus der Konfiguration der Gast-VM-Ihrer ursprünglichen Gast-VM-Festplatte (dh. der große VDI) ist weiterhin auf dem Hostcomputer verfügbar.
  7. Der letzte Schritt, den ich für meinen Windows-Gast tun musste, war das Setzen / Beheben des MBR und / oder 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, habe ich einen Windows Boot Mgr-Fehlerbildschirm mit diesem Inhalt erhalten (leider habe ich keinen Screenshot aufgenommen, bevor ich den Fehler behoben habe Ausgabe):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Besorgen Sie sich eine ISO einer Windows-Installation oder-Reparatur (idealerweise eine, die Ihrer Betriebssystemversion entspricht) und konfigurieren Sie die Gast-VM so, dass sie von ihr startet (erneut Speichereinstellungen).

  9. Starten Sie die Gast-VM und wählen Sie, ob Sie von der CD/DVD booten möchten.

    1. Da jede Version der Windows-Installation / - Reparatur anders ist, kann ich hier keine genauen Schritte für alle angeben. Die Idee ist jedoch, die Option "Reparieren" zu wählen und den Weg zu einer Eingabeaufforderung zu finden. In meinem Fall von Windows Server 2012 musste ich: (a) Wählen Sie meine Sprache/Mein Gebietsschema; (b) Wählen Sie "Computer reparieren" in der unteren linken Ecke; (c) Wählen Sie "Fehlerbehebung"; (d) Wählen Sie "Eingabeaufforderung".
    2. Sobald Sie an einer Eingabeaufforderung 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 der BCD hinzuzufügen. Antwort 'Y'.

    3. Beenden Sie die Eingabeaufforderung und schalten Sie dann die Gast-VM aus.
  10. Gehen Sie zu den VBox-Einstellungen für die Gast-VM, navigieren Sie zum Speicher und entfernen Sie die Windows-Installations - /Reparatur-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.)
 2
Author: codesniffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:46:53

Ich gebe eine Antwort, die auf jedes gehostete Betriebssystem erweitert ist, das auf jedem Host-Betriebssystem ausgeführt wird. Diese Antwort setzt voraus, dass Sie die Größe erhöhen (erweitern) möchten.

Hinweis: Wie von djule5 (siehe Kommentar kurz nach der Frage), ist modifyhd jetzt bekannt als modifymedium (bleibt aber 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 Disk-Images zu ändern

Die Befehlszeile VBoxManage möchte die Größe eines Disk-Images 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

Identifizieren Sie daher die UUID Ihres Disk-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 Größe des Disk-Images.

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

3. Verwenden Sie ein Partitionierungstool, um die logische Partition zu erweitern

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 die partition freien Speicherplatz

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. Spaß.

 0
Author: oHo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-13 12:37:11

Dies würde für mich funktionieren und sollte den Gesamtbetrag der Festplattenkapazität angeben. Nicht der Raum, den wir vergrößern müssen...

C:\Program Dateien\Oracle\VirtualBox>VBoxManage."modifyhd "D:\Virtual Maschine\VirtualBox VMs\Windows 7 (FileZilla Server)\Windows 7 (FileZilla Server).vdi" --resize 15360

 -1
Author: saman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-08-11 13:12:06