Πέμπτη, 7 Απριλίου 2011

Μικραίνοντας εικονικούς δίσκους μέσω qemu-img

Ας πούμε ότι φτιάχνετε ένα virtual machine για να το παραδώσετε σε κάποιον ως appliance (π.χ., ένα service appliance ή ένα appliance για εξάσκηση σε κάποια τεχνική administration). Ξεκινάτε στα γρήγορα από ένα minimal image (π.χ., ubuntu JeOS ή debian minimal) κάνετε install τα απαραίτητα, σβήνετε ότι υπάρχει περιττό και ετοιμάζεστε να το παραδώσετε. Υπάρχει όμως ένα μικρό πρόβλημα, το μέγεθος του image / virtual disk.

Μετά από αρκετό setup και install/deinstall (ειδικά αν θέλετε να κάνετε compile ένα πακέτο εντός του VM ή κάτι παρόμοιο), δεν είναι παράξενο το df εντός του VM να μας λέει π.χ., 500ΜΒ αλλά το ίδιο το αρχείο του image να είναι 1-2GB, λόγω του ότι τα filesystems προσπαθούν να μην πειράζουν τα σβησμένα αρχεία όταν δεν είναι αναγκασμένα να το κάνουν (ώστε να έχει ελπίδες το undelete).

Πώς μπορούμε λοιπόν να ξαναμικρύνουμε ένα π.χ., qemu qcow2 image ώστε το μέγεθός του να ανταποκρίνεται στο μέγεθος των περιεχομένων του; Η λύση είναι ένας συνδυασμός προγραμμάτων που τρέχουμε εντός του VM και του qemu-img.

Σε όλες τις περιπτώσεις η γενική ιδέα είναι να φτιάξουμε ένα αρχείο που αποτελείται μόνο από μηδενικά και θα καταλάβει όλο τον ελεύθερο χώρο στο δίσκο και μετά να το σβήσουμε.

Για να το κάνουμε αυτό:

Στο Linux/Unix:
dd if=/dev/zero of=zeros bs=20971520 # block size 20MB for speed
rm -f zeros
Στα Windows:
Κατεβάστε το freeware πρόγραμμα Eraser και πείτε του να γράψει μηδενικά ή χρησιμοποιήστε το επίσης free as in beer εργαλείο sdelete από τη Microsoft (κάποια πρόσφατη έκδοση) με το switch "-c" ή στα WindowsXP δώστε σε ένα
τερματικό την εντολή
cipher /W:C:
Έπειτα από τα παραπάνω, απενεργοποιήστε την εικονική μηχανή και δώστε από το
host:
qemu-img convert -O qcow2 myimage.img myimage.img.new
Κάντε rename το myimage.img σε myimage.img.old και το myimage.img.new σε myimage.img, δοκιμάστε το myimage.img για να βεβαιωθείτε ότι δουλεύει σωστά και μετά μπορείτε να σβήσετε το myimage.img.old και είστε έτοιμοι :)

Παντελής

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου