Apr 22, 2011

Μειώνοντας σε μέγεθος (compact) ένα Linux δυναμικό image του VirtualBox

Το να δημιουργήσουμε ένα dynamic expanded virtual disk στο VirtualBox είναι μια πολύ καλή επιλογή, ιδίως όταν οι απαιτήσεις μας σε αποθηκευτικό χώρο δεν είναι εκ των προτέρων γνωστές ή όταν θέλουμε να εξοικονομήσουμε αποθηκευτικό χώρο. Καθώς περνά ο χρόνος, ο εικονικός μας δίσκος και το αντίστοιχο φυσικό αρχείο στο δίσκο, προεκτείνεται όταν γεμίζει δεδομένα και διαγράφουμε αρχεία. Αποτέλεσμα: το φυσικό αρχείο στο δίσκο μας να είναι πολύ μεγαλύτερο της ουσιαστικής ανάγκης μας για αποθήκευση. Το VirtualBox μας δίνει την δυνατότητα να κάνουμε συμπαγή (compact) τον εικονικό μας δίσκο και αυτό το θέμα θα ήθελα να περιγράψω για το περιβάλλον του Linux. Για τα Windows υπάρχουν αντίστοιχες λύσεις (http://forums.virtualbox.org/viewtopic.php?t=2507)

Προτού ξεκινήσουμε τη διαδικασία αυτή, είναι πολύ χρήσιμο να απαλλαγούμε από άχρηστα αρχεία στον δίσκο μας. Ένα εξαιρετικό εργαλείο είναι το JDiskReport (http://www.jgoodies.com/freeware/jdiskreport/) που κάνει ανάλυση στα περιεχόμενα του δίσκου μας και παράγει ενδιαφέρουσες αναφορές, όπως για παράδειγμα για τα μεγαλύτερα αρχεία συνολικά ή ανά κατάλογο.


To JDiskReport είναι γραμμένο σε Java και μπορούμε να το εκτελέσουμε (ως root) ως εξής για να σαρώσουμε όλο το δίσκο μας.

java -Xmx1024m -jar jdiskreport-1.3.2.jar

Με τη βοήθεια των αναφορών, μπορούμε να διαγράψουμε άχρηστα αρχεία ή καταλόγους. Συμπληρωματικά μπορούμε να χρησιμοποιήσουμε ένα πρόγραμμα ανίχνευσης πολλαπλών αντιγραφών ενός αρχείου (πχ finddup, FSlint) ώστε να ελευθερώσουμε ακόμα περισσότερο χώρο.

Μετά από όλα αυτά, κάνουμε boot του λειτουργικού σε console (για παράδειγμα περνάμε την παράμετρο init 3 στο grub) και μπαίνουμε ως root. Για κάθε ένα mount partition του δίσκου μας (πχ /, /home) που αντιστοιχεί σε διαφορετικό εικονικό δίσκο (πχ sda1, sda3) κάνουμε τα εξής:

cd partition (πχ cd /)
dd if=/dev/zero of=EMPTY bs=1M

Κατά την εκτέλεση της παραπάνω εντολής, ο δίσκος στο τρέχον partition θα γεμίσει στο 100%, οπότε θα εμφανιστεί και το μήνυμα, που θα αγνοήσουμε.

dd: writing 'EMPTY': No space left on device

Μετά από αυτό σβήνουμε το αρχείο:
rm -rf EMPTY

Και κάνουμε shutdown το virtual machine μας. Είμαστε έτοιμοι να κάνουμε compact το VirtualBox image μας (πχ linuxvm) ως εξής:
VBoxManage modifyhd --compact linuxvm.vdi

No comments: