itgustel
Goto Top

Vhdx - Speicherplatz wird nicht freigegeben

Hallo,

mir ist folgendes Verhalten aufgefallen, wenn ich in Hyper-V einen Linux-VM erstelle (und als Datenträger-Typ "dynamisch erweiterbar") auswähle, nimmt die Dateigröße der vhdx zu, sofern das virtualisierte Linux (CentOS 8) diesen Speicherplatz auch benötigt. Soweit ist das Verhalten normal. Allerdings "schrumpft" die vhdx nicht mehr, wenn die Dateien im Linux-System gelöscht wurden. Auch ein "Komprimieren" der vhdx in Hyper-V bringt absolut nichts. Das Problem ist, dass das Linux u. U. sehr große Dateien verarbeitet (mehrere TB) und das Ganze die vhdx immens aufbläht, auch wenn die Dateien nur kurzzeitig auf dem Linux verarbeitet werden.

Workaround momentan: Die VM immer wieder (mit kleiner vhdx) zurücksichern, wenn sich die vhdx aufgeblasen hat. Aber gibt es nicht eine elegantere Lösung? Oder ist das einfach das Verhalten, der Datenträgertyp nannt sich ja "dynamisch erweiterbar" und nicht dynmaisch variabel...

Danke

Content-Key: 599696

Url: https://administrator.de/contentid/599696

Printed on: April 23, 2024 at 07:04 o'clock

Member: support-m
Solution support-m Aug 27, 2020 updated at 12:54:14 (UTC)
Goto Top
Hallo,
soweit ich weiß ist das ein normales Verhalten, habe aber schon länger nichts mehr mit Hyper-V zu tun gehabt. Ich habe jedoch noch nicht gehört, dass sich dynamische vhd's automatisch wieder verkleinern.
Du kannst mal versuchen:

I have also written on this topic, and have found that it is pretty easy to compact vdisks from within a command prompt using diskpart. I prefer the method below. I like the fact that you don’t need to shrink partitions in your vdisk and you don’t even need to zero out unused disk space.

From an elevated command prompt type:

diskpart
select vdisk file=”C:\Hyper-V\sampledrive.vhdx”
attach vdisk readonly
compact vdisk
detach vdisk
exit


Quelle:
https://www.enhansoft.com/how-to-compact-and-shrink-the-size-of-a-vhd-fi ... / Kommentarbereich

Habe ich mit Profil VHDs auf einem RDS-Server erfolgreich getestet.
Vielleicht hilfst dir ja!

MfG
Member: Spirit-of-Eli
Solution Spirit-of-Eli Aug 27, 2020 at 13:25:50 (UTC)
Goto Top
Moin,

was etwas bringt wäre die disk offline zu defragmentieren und anschließend in der hyperV Verwaltung zu verkleinern.

Wurde hier aber auch schon in einem andern Thread angesprochen.

Gruß
Spirit
Member: itisnapanto
Solution itisnapanto Aug 27, 2020 at 14:58:05 (UTC)
Goto Top
Moin,

kenne ich das Problem . Versuche es mal mit Powershell.

Resize-VHD -Path <vDisk.vhdx> -ToMinimumSize
Member: erikro
Solution erikro Aug 27, 2020 updated at 20:06:00 (UTC)
Goto Top
Moin,

Zitat von @ITgustel:
mir ist folgendes Verhalten aufgefallen, wenn ich in Hyper-V einen Linux-VM erstelle (und als Datenträger-Typ "dynamisch erweiterbar") auswähle, nimmt die Dateigröße der vhdx zu, sofern das virtualisierte Linux (CentOS 8) diesen Speicherplatz auch benötigt. Soweit ist das Verhalten normal.

Nein, sondern

Allerdings "schrumpft" die vhdx nicht mehr, wenn die Dateien im Linux-System gelöscht wurden.

soweit ist das Verhalten normal. Im laufenden Betrieb werden vhdx immer nur größer und nie kleiner.

Workaround momentan: Die VM immer wieder (mit kleiner vhdx) zurücksichern, wenn sich die vhdx aufgeblasen hat.

Das ist eine der Möglichkeiten, um das Problem zu lösen. Jetzt kommt es darauf an: Sind irgendwelche Usereinstellungen zu sichern und wieviele? Wahrscheinlich ist es nämlich einfach schneller, das kleine 100Gig-Image des Grundsystems zurückzuspielen als mehrere TB wieder auf 100Gig einzudampfen.

Aber gibt es nicht eine elegantere Lösung? Oder ist das einfach das Verhalten, der Datenträgertyp nannt sich ja "dynamisch erweiterbar" und nicht dynmaisch variabel...

Hier ein Artikel, der die "eleganten" Lösungen zusammenfasst. BTW: Erster Treffer bei Google für "vhdx verkleinern". face-wink

<edit>Link vergessen: https://www.windowspro.de/wolfgang-sommergut/vhdx-laufwerke-komprimieren ...;

hth

Erik
Member: Lochkartenstanzer
Solution Lochkartenstanzer Aug 27, 2020 at 22:32:54 (UTC)
Goto Top
Moin,

Works as designed.

Genau so ist das Srandardverhalten.

lks
Member: ITgustel
ITgustel Aug 28, 2020 at 09:07:27 (UTC)
Goto Top
Hallo Leute, danke für den Input!

Eine Kollege hatte den finalen Tipp für dieses Problem. Vielleicht hilft es jemand in dieser Situation.

Wenn das Linux wieder "klein" ist, also eigentlich wenig Speicherplatz verbrauchen sollte, die vhdx aber auch mit "Komprimieren" nicht kleiner wird:

1. Im Linux in der Shell folgendes eingeben:
sudo fstrim /
2. Danach die Platte nochmals in Hyper-V "Komprimieren", nun wird (oder sollte) die vhdx wieder schön klein werden. Bei mir hat es funktioniert.

Der fstrim-Befehl wird in Sekundenbruchteilen ausgeführt.

Ich konnte das auch hier recherchieren: https://www.altaro.com/hyper-v/compact-vhdx-linux-filesystem/
(Abschnitt "Zeroing a VHDX with an ext Filesystem").

Grüße
Member: Lochkartenstanzer
Lochkartenstanzer Aug 28, 2020 at 09:10:39 (UTC)
Goto Top
Zitat von @ITgustel:

Wenn das Linux wieder "klein" ist, also eigentlich wenig Speicherplatz verbrauchen sollte, die vhdx aber auch mit "Komprimieren" nicht kleiner wird:

1. Im Linux in der Shell folgendes eingeben:
sudo fstrim /
2. Danach die Platte nochmals in Hyper-V "Komprimieren", nun wird (oder sollte) die vhdx wieder schön klein werden. Bei mir hat es funktioniert.

Das funktioniert aber nur, wenn Hyper-V die "richtige" Hardware emuliert, d.h. die emulierte Platte den TRIM-SATA-Befehl unterstützt.

Der fstrim-Befehl wird in Sekundenbruchteilen ausgeführt.

Das ist abhängig von der drunterliegenden Hardware.

lks