Jump to content

Größe für ein VM Image


Tiras

Recommended Posts

Laut hier passiert das bereits standardmäßig:

https://forums.unraid.net/topic/51703-vm-faq/#comment-557606

 

Allerdings wächst sie nach und nach an und müsste wieder "getrimmt" werden (Nicht verwechseln mit dem TRIM Kommando des SSD Controllers). Aus dem Grund ist im Link auch ein Tipp zu finden, wie das automatisch passiert.

 

Hier gibt es noch einen Tipp, wo man in Windows leere Bereiche mit Nullen beschreibt. Dadurch soll das Image wohl auch wieder automatisch schrumpfen:

https://www.jamescoyle.net/how-to/323-reclaim-disk-space-from-a-sparse-image-file-qcow2-vmdk

 

Müsste man mal ausprobieren.

 

Aber nicht falsch verstehen. Die Datei selbst wird im Dateiexplorer immer mit 80GB angezeigt, aber sie belegt auf dem Datenträger einfach weniger.

  • Like 1
Link to comment
24 minutes ago, mgutt said:

Aber nicht falsch verstehen. Die Datei selbst wird im Dateiexplorer immer mit 80GB angezeigt, aber sie belegt auf dem Datenträger einfach weniger.

Genau das ist ja nicht der Fall. Auf dem Datenträger werden sowohl 80 GB angezeigt als auch belegt. Wenn nur der beanspruchte Speicherbedarf belegt wird, dann würde meine NVMe nicht voll sein. 6 von 10 VMs haben 80 GB als Image, beanspruchen aber zwischen 33 GB und 42 GB. 

 

Hinzu kommt, dass mit Krusader das Image mit 80 GB angezeigt, aber im Windows Explorer aufgerundet 84 GB angezeigt werden.

Ist das normal?

Link to comment
4 minutes ago, Tiras said:

Auf dem Datenträger werden sowohl 80 GB angezeigt als auch belegt

Wie in den Links erwähnt, verfällt dieser Vorteil mit der Zeit, weil bereits gelöschte Dateien nicht gegen Nullen ersetzt werden, was die Voraussetzung für eine Speicherplatz-Ersparnis wäre. Daher auch der Tipp mit der sdelete.exe aus dem 2. Link. Probiere das doch mal aus. Vielleicht siehst du ja den Effekt an der Datenträgerauslastung, wenn du das bei allen VMs gemacht hast.

 

Ach ja: Du hast die Images aber in Unraid neu erstellt und nicht aus einem anderen System übernommen? Weil sonst könnte es sein, dass die nicht Sparse sind.

 

Per Kommandozeile kannst du übrigens auch die Größen wie folgt anzeigen lassen:

du -h /mnt/cache/domains/*/*.img
17G     /mnt/cache/domains/Windows 10/vdisk1-backup.img
16G     /mnt/cache/domains/Windows 10/vdisk1.img
du -h --apparent-size /mnt/cache/domains/*/*.img
32G     /mnt/cache/domains/Windows 10/vdisk1-backup.img
32G     /mnt/cache/domains/Windows 10/vdisk1.img

 

 

Link to comment
6 minutes ago, mgutt said:

Ach ja: Du hast die Images aber in Unraid neu erstellt und nicht aus einem anderen System übernommen? Weil sonst könnte es sein, dass die nicht Sparse sind.

Sie wurden mal unter unRAID erstellt, aber aus einem Backup wieder kopiert. Sollte meiner Meinung nach eigentlich kein Problem darstellen, weil man sonst kein Backup einer VM einspielen kann.

 

image.thumb.png.f58c10a3dd69655e84c02dcdfb2e4841.png

Link to comment
16 hours ago, Tiras said:

Sie wurden mal unter unRAID erstellt, aber aus einem Backup wieder kopiert.

Da kommt es darauf an mit welchem Tool. cp respektiert zb Sparse und rsync kann es irgendwie auch.

 

Jedenfalls sind deine Dateien keine Sparse Dateien mehr.

 

Du könntest alle VMs stoppen und dann das ausführen, um wieder Sparse Files zu erhalten:

find /mnt/cache/domains/*/*.img | while read img; do fallocate -d "$img"; done;

 

Quelle:

https://stackoverflow.com/a/54419842/318765

 

Nutzung auf eigene Gefahr. Bitte vorher Backups machen.

Link to comment
1 hour ago, Tiras said:

@ich777 Kannst du hierzu vielleicht etwas sagen?

Um was gehts hier, größe eines VM images? QCOW2 wächst inkrementell mit, aber bitte nicht verwechseln, es wird nicht wieder kleiner wenn du sachen löscht aus dem Image.

 

Ich bin auch eigentlich der falsche Ansprechpartner für VMs ich kenn mich eher mit Docker containern aus und bin eigentlich ein Gegner von VMs und versuche die selbst zu vermeiden.

Link to comment

Es geht darum, dass ich ein Backup meiner VMs mit dem im Screenshot gezeigten Script erstelle. Nach neukonfiguration habe ich die img-Datei aus dem Backup wieder in den Share kopiert. Wird die Datei beim Kopieren mit deinem Docker "Krusader" irgendwie angepasst oder als nicht Sparse-Datei kopiert?

Link to comment
2 minutes ago, Tiras said:

Wird die Datei beim Kopieren mit deinem Docker "Krusader" irgendwie angepasst oder als nicht Sparse-Datei kopiert?

Wie gesagt ich bin eigentlich der falsche Ansprechpartner bei VMs da ich nur "richtige" Platten durchreiche.

Kann mir aber nicht vorstellen das Krusader an der Datei was ändert, hast schon mal probiert im Terminal direkt zu kopieren?

Bin auch nicht wirklich ein Krusader nutzer, CLI ist mir meistens noch immer am liebsten.

Link to comment
10 hours ago, Tiras said:

Die Frage die ich mir nun stelle ist, welcher Vorgang hat dazu geführt, dass es keine Sparse-Dateien mehr sind?

Teste es doch einfach. Erstell eine neue VM ohne ISO, sondern dass du nur ein img erstellt wird. Das dann prüfen auf Sparse. Dann sichern, wieder prüfen. Mit Krusader zurückkopieren und wieder prüfen. Wer ist schuld?

Link to comment
1 hour ago, Tiras said:

woran hast du erkannt, dass die Dateien von mir keine Sparse-Dateien mehr sind?

Weil sie in beiden Fällen exakt gleich groß sind. Das ist einfach absolut unwahrscheinlich. Es gibt immer irgendwelche Bereiche mit Nullen. Das Beispiel was ich gepostet habe, zeigt zB eine frische Windows 10 Installation:

du -h /mnt/cache/domains/*/*.img
16G     /mnt/cache/domains/Windows 10/vdisk1.img
du -h --apparent-size /mnt/cache/domains/*/*.img
32G     /mnt/cache/domains/Windows 10/vdisk1.img

 

Wie man sieht eine 32GB VDisk, die auf dem Datenträger 16GB belegt, aber in Windows selbst sehe ich eine Belegung von ~25GB. Dh die Windows-Dateien selbst enthalten auch größere Bereiche mit Nullen.

 

Also selbst wenn du die Datenträger aller VMs über die Zeit mal vollbekommen hast, dürfte es niemals exakt das Maximum belegen.

 

Übrigens habe ich es gerade ausprobiert. Bei mir wurde durch das VM Backup Plugin eine Sparse-Datei erstellt, die sogar noch kleiner geworden ist:

du -h /mnt/disk7/Backup/VM/*/*.img
15G     /mnt/disk7/Backup/VM/Windows 10/20210814_1030_vdisk1.img

 

Man kann also davon ausgehen, dass das Plugin "cp" zur Datensicherung verwendet.

 

Dann habe ich die Datei mit Krusader zurückkopiert und schon haben wir das Disaster (die Datei belegt sogar noch mehr auf dem Datenträger als die Datei maximal groß ist):

du -h /mnt/cache/domains/*/*.img
36G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1.img
du -h --apparent-size /mnt/cache/domains/*/*.img
32G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1.img

 

Also machen wir sie wieder kompakt:

find /mnt/cache/domains/*/*.img | while read img; do fallocate -d "$img"; done;

 

Schon besser:

du -h /mnt/cache/domains/*/*.img
15G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1.img

 

@ich777 Die Frage ist nun warum Krusader keine Sparse-Dateien respektiert bzw erstellt. Im Bugtracker finde ich das Wort Sparse gar nicht. Kann ja nicht sein, dass das noch nie jemandem aufgefallen ist?! Die Frage ist nun, ob das an dem Docker liegen kann oder ein allgemeines Problem von Krusader ist. Dann könnte man dazu ja mal einen Bug Report öffnen.

Link to comment
2 hours ago, mgutt said:

Die Frage ist nun, ob das an dem Docker liegen kann oder ein allgemeines Problem von Krusader ist.

Benutzt ihr hier meinen? Probiert mal den von binhex ob es bei dem auch so ist, evtl. gibts da auch eine option dazu in Krusader, wie gesagt ich selbst bin nicht wirklich Krusader Nutzer aber ich seh mir das gerne mal an.

 

Kann mir aber ehrlich gesagt nicht vorstellen das es an Krusader liegt, könnt auch mal probieren Krusader als root zu starten (Variable mit dem Key: "RUNASROOT" und dem Value: "true" anlegen im Container template) ob das was ändert.

Link to comment
33 minutes ago, ich777 said:

Benutzt ihr hier meinen? Probiert mal den von binhex ob es bei dem auch so ist, evtl. gibts da auch eine option dazu in Krusader, wie gesagt ich selbst bin nicht wirklich Krusader Nutzer aber ich seh mir das gerne mal an.

 

Kann mir aber ehrlich gesagt nicht vorstellen das es an Krusader liegt, könnt auch mal probieren Krusader als root zu starten (Variable mit dem Key: "RUNASROOT" und dem Value: "true" anlegen im Container template) ob das was ändert.

Ja, ich benutze deinen Krusader.

Link to comment
52 minutes ago, ich777 said:

Benutzt ihr hier meinen?

Ja. Ich habe auch extra von Disk zu Disk kopiert um Unraid selbst auszuschließen.

 

52 minutes ago, ich777 said:

Probiert mal den von binhex

Der hat das selbe Problem. Die Datei ist auch 36GB groß geworden (Quelle 15GB). Wobei nach einer gewissen Zeit die Dateigröße wieder kleiner wurde (?!), aber immer noch kein Sparse Niveau:

du -h /mnt/disk7/Backup/VM/*/*.img
15G     /mnt/disk7/Backup/VM/Windows 10/20210814_1030_vdisk1.img
du -h /mnt/cache/domains/*/*.img
32G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_binhex.img
33G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_ich777.img
16G     /mnt/cache/domains/Windows 10/vdisk1.img

 

59 minutes ago, ich777 said:

"RUNASROOT" und dem Value: "true"

Das führt zu einem "unable to create io-slave" Fehler, wenn ich Dateioperationen wie Umbenennen oder Kopieren ausführen möchte:

1462211666_2021-08-1413_43_48.png.dee89c839e85f1ab9b14888762000c90.png

 

 

 

Link to comment
11 minutes ago, mgutt said:

Das führt zu einem "unable to create io-slave" Fehler, wenn ich Dateioperationen wie Umbenennen oder Kopieren ausführen möchte:

Ich benutz das nicht aber wäre wohl anzuraten den container komplett neu zu installieren aber root sollte eigentlich nicht notwendig sein.

 

12 minutes ago, mgutt said:

Wobei nach einer gewissen Zeit die Dateigröße wieder kleiner wurde (?!)

Was? :D

 

Müsste mir mal ansehen wie krusader kopiert, direkt vom terminal funktioniert es aber richtig mit cp oder?

 

Schon mal versucht von der konsole von Krusader zu kopieren mit cp?

Link to comment

Ok, das sind ja mal Welten ^^

 

Eigentlich könnte man sich dafür ein Script anlegen, dass prüft ob eine VDisk in Verwendung ist und wenn nicht, führt es "fallocate -d" darauf aus. Oder man kombiniert es mit dem Backupzeitpunkt, wo man die VM ja eh runterfahren sollte.

 

Hast du zufällig auch von vorher einen Screenshot? Ich brauche das als Argument in einer Diskussion zu Sparse Dateien.

Link to comment
On 8/14/2021 at 2:03 PM, ich777 said:

Was? :D

Ja keine Ahnung. Frisch mit Krusader kopiert:

du -h /mnt/cache/domains/*/*.img
36G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_ich777.img

 

Nach 30 Sekunden:

du -h /mnt/cache/domains/*/*.img
32G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_ich777.img

 

Ich vermute das liegt daran, weil der noch vom RAM auf die SSD runterschreibt und es solange eine Summe aus beidem ist?!

 

On 8/14/2021 at 2:03 PM, ich777 said:

Schon mal versucht von der konsole von Krusader zu kopieren mit cp?

Ohne --sparse=always nicht ganz so effizient wie mit cp in Unraid, aber ja, es bleibt bei der Sparse Datei:

du -h /mnt/cache/domains/*/*.img
25G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_ich777_cp.img
20G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_unraid_cp.img

 

Mit der Option ist es bei beiden gleich:

du -h /mnt/cache/domains/*/*.img
16G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_krusader_ich777_cp_sparse_always.img
16G     /mnt/cache/domains/Windows 10/20210814_1030_vdisk1_unraid_cp_sparse_always.img

 

Ich habe dann noch einen Test gemacht und in der Kommandozeile von Krusader eine Sparse Datei erstellt:

dd if=/dev/zero of=/krusader/sparse.file bs=1 count=0 seek=512M            
0+0 records in
0+0 records out
0 bytes copied, 6.3021e-05 s, 0.0 kB/s
ls -lh /krusader
total 0
-rw-r--r-- 1 root root 512M Aug 16 11:41 sparse.file
du -h /krusader/*
0       /krusader/sparse.file

 

Dann habe ich sie mit Krusader kopiert und sie wurde wieder groß:

du -h /krusader/*
0       /krusader/sparse.file
512M    /krusader/sparse_krusader_ich777.file

 

Es muss also denke ich an Krusader selbst liegen. 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...