Ich hoste mehrere virtuelle Maschinen auf einem Host, auf dem Hyper-V Server 2008 R2 ausgeführt wird. Die Festplatten wurden ursprünglich vor etwa 16 Monaten auf einem anderen Server (2008, nicht R2) bereitgestellt und vor einem Jahr auf diesen Server migriert. Die meisten Gäste verwenden Windows 7.
Kürzlich habe ich die VHD-Größe mit dem vom Gast gemeldeten genutzten Speicherplatz verglichen und festgestellt, dass mehrere Computer VHD-Dateien hatten, die 50-100% größer waren als tatsächlich benötigt. Deshalb habe ich beschlossen, die VHD-Dateien zu komprimieren, um Speicherplatz auf dem Host freizugeben. Ich folgte den Anweisungen, die ich im Internet gefunden hatte, ungefähr wie folgt:
- Führen Sie CHKDSK auf dem Gastcomputer aus
- Führen Sie eine Defragmentierung auf dem Gastcomputer aus (integrierte Windows-Defragmentierung).
- Schalte den Gast aus
- Öffnen Sie das Tool "Edit Disk ..." in Hyper-V Manager
- Wählen Sie die gewünschte VHD aus und komprimieren Sie sie
Als ich das zum ersten Mal versuchte, funktionierte es einwandfrei und reduzierte die Größe meiner VHD um etwa 50%. Aber für die Festplatten aller anderen Gäste erhalte ich folgende Fehlermeldung:
The server encountered an error trying to edit the virtual disk.
'The system failed to compact 'C:\example.vhd'. Error Code: The requested
operation could not be completed due to a file system limitation
Bei keinem Gast ist die NTFS-Komprimierung aktiviert. Es gibt keine Schnappschüsse dieser Datenträger. Was könnte diesen Fehler sonst noch verursachen?
Bearbeiten : Bonuspunkte für alle, die eine Lösung beschreiben, um dynamische VHD-Größen automatisch in Schach zu halten.
Antworten:
Entfernen Sie die Schattenkopien vom Gast. Das wird es schaffen!
quelle
diskshadow
und verwenden Siedelete shadows all
es.Im Interesse der Konsolidierung der Internetsuche: Dieser Link wurde schließlich gefunden und hat funktioniert, als HyperV compact dies nicht tat: https://fiddley.wordpress.com/2014/01/27/dynamically-expanding-vhd-not-compacting- in-hyper-v /
Führen Sie in der administrativen Eingabeaufforderung aus
DISKPART
An der DISKPART-Eingabeaufforderung
quelle
Abgesehen von dem Vorschlag, die Schattenkopien zu löschen, sollten Sie
SDelete
den leeren Bereich vor dem Komprimieren auf Null setzen, da manchmal viel mehr nicht genutzter Speicherplatz komprimiert werden kann. Zum Nullstellen des leeren Bereichs in C: sollten Sie dies beispielsweise in der virtuellen Maschine ausführen :In meinem Fall hatte ich eine virtuelle Festplattendatei mit einer Gesamtgröße von 80 GB. Die erste Komprimierung reduzierte sie nur auf 78 GB. Durch Löschen der Schattenkopien und erneutes Komprimieren wurde sie auf 72 GB reduziert, aber nach dem Ausführen
sdelete
der nächsten Komprimierung wurde die Dateigröße reduziert bis 56 GB.quelle