20.01.2010

Virtualbox sanal disk boyutunu sıkıştırmak (shrink)

Virtualbox'ta sanal diskleri dinamik olarak büyüyen yapıda yaratmak çok avantajlı oluyor. Sanal makine 20 GB'lık diski varmış gibi görüyor, ama aslında ev sahibi (host) işletim sistemindeki vdi dosyası ne kadar kullanılıyorsa o kadar yer kaplıyor. Ne zaman daha fazlasına ihtiyaç olursa disk boyutu otoamatik büyütülüyor. Ama bunun tersi mümkün değil. Sanal makinenin diskini boşaltsam da ev sahibi işletim sistemindeki dosya sisteminde kapladığı yer azalmıyor. Bunu yapmak için biraz "el işçiliği" gerekiyor. Sanal makinenin Windows ve Linux olmasına göre farklılık gösteren adımlar şu şekilde:

Windows Sanal Makine
Windows'ta önce diskin içindeki dosyaları sildikten (ve tercihen disk birleştirme yaptıktan) sonra Windows Sysinternals'ın sdelete aracını kullanmak gerekiyor Diskten güvenli olarak dosya silmek için tasarlanan bu aracın ikincil işlevi de sanal makinelerin disklerini küçültmek amacıyla kullanılmayan disk bölümlerine sıfır yazmak. Bunun için komut satırında
sdelete -c E:
yazmak yeterli.

Linux Sanal Makine
Diskteki ihtiyaç duyulmayan dosyalar silindikten sonra
sudo dd if=/dev/zero of=/tmp/gecici.sifir
gibi bir komutla diskteki bütün boş alanı kullanan bir gecici.sifir dosyası yaratıp, içeriğini sıfırlarla doldurmak ve ardından bu dosyayı silmek için
sudo rm /tmp/gecici.sifir
komutunu kullanmak gerek. Alternatif olarak önerilen başka bir yöntem de zerofree programının kullanılması. Bu ilk kurulumla gelmeyen bir program. Kurmak için
sudo apt-get install zerofree
komutunu verin. Ardından boş alanı sıfırlamak için
sudo zerofree /dev/sda1
komutu kullanılabilir (/dev/sda1 yerine sizin diskinizi yazın).

Bundan sonra sanal makineyi kapatıp ev sahibi işletim sisteminde komut satırında
vboxmanage modifyvdi E:\vbox\disk\sanaldiskadi.vdi compact
komutunu vermek gerek. Burada ev sahibi işletim sisteminin Windows olduğu varsayıldı. Eğer Virtualbox'ın kurulduğu klasör PATH değişkenine eklenmemişse (ki varsayılan kurulumlarda böyledir) bu komutu Virtualbox'ın kurulu olduğu klasörden (bunun da varsayılanı C:\Program Files\Sun\Virtualbox'tır) vermeniz gerekir. Eğer ev sahibi makina Linux ise bunun yerine
vboxmanage modifyvdi /vbox/disk/sanaldiskadi.vdi compact
gibi birşey yazmak gerek (vdi dosyasının tam yolu verilmeli). Bunları yaparken snapshot'ınız olmamalı. (Virtualbox'ın 4.0 sürümünün elkitabında modifyvdi yerine modifyhd kullanılmış. Ayrıca modifyhd'nin snapshot'larla da çalıştığı yazılmış. Ama bir denememde başarısız oldum)

Son bir not, sdelete'i diskteki boş alanları sıfırlamak için kullanırken -z anahtarını değil (zero çağrışımı yanlış) -c anahtarını kulanmak gerek. Forumlardaki birçok "yaptım ama olmadı" benzeri hatanın bu şekilde çözülebileceği görüldü.

Hiç yorum yok: