Dinamik olarak büyüyen bir VDI diskini VirtualBox'tan nasıl küçültebilirim?


35

Sanal Kutuda çeşitli Ubuntu kurulumlarından dinamik olarak büyüyen sanal disklerim (VDI) aslında gerçekten de sürekli olarak "büyüyor".

Sanal makinedeki dosyaların silinmesi, VDI dosyamın ana bilgisayar sabit disk alanından aldığı alanı boş bırakmaz.

Kullanılmayan sabit disk alanını ana bilgisayara geri vermek için bu dosyaları nasıl küçültebilirim?

Yanıtlar:


34

Dinamik olarak büyüyen bir Sanal Kutu sanal sabit sürücü dosyası, sanal makinenin talebine bağlı olarak bu dosyayı oluştururken tanımladığımız maksimum boyuta kadar büyüyebilir. Ancak konuk işletim sisteminde sildiğimiz dosyaların alanını boşaltmaz.

Diskin çok büyümüş olması durumunda, kullanılmayan alanın sıfırlarla doldurulması ve sürücünün VDI biçiminde olması koşuluyla, tekrar sıkıştırabiliriz.

Bir ext2'den 4'e dosya sistemi için, bu, Ubuntu misafirinden zerofree * komut satırı yardımcı programı ile yapılabilir .Sıfır ücretsiz yükleyin

zerofree /dev/sdxX

Bu, sürücünün kullanılmamasını ve sökülmesini gerektirir . Bu nedenle, geçici olarak bu amaç için oluşturduğumuz başka bir VM'ye bağlamak zorunda kalabiliriz veya bu VM'de bir Ubuntu canlı ortamı başlatmamız gerekebilir.

/dev/sdxXSöz konusu ext2, ext3 veya ext4 formatlanmış bölümü ile değiştirin .

Birden fazla bölümde zerofreeher bölüm için tekrar etmem gerekiyor . Sıfırları doldurarak sanal dosyanın geçici olarak maksimum boyutuna kadar büyüyeceğini unutmayın.

Kullanılmayan tüm sürücü alanları sıfırlarla doldurulduktan sonra sürücüyü küçültürüz.

VBoxManage modifyhd <name>.vdi --compact

Bu, VDI dosyamızın dosya boyutunu önemli ölçüde azaltır.

* Bir Windows misafirinde kullanılmayan alanı yardımcı programla değiştirebiliriz sdelete.


Bu, konuk içindeki şifreli bir dosya sistemi için de işe yarar mı?
Smichak

Emin. Kullanıyorsanız ecryptfs, şifreli dosyalar disk yardımcı programlarına normal dosyalara benziyor ve bu işe yarayacak. Tam disk şifrelemesi kullanıyorsanız, yine de dahili olarak biçimlendirilmiş bir bölüm olarak tanınmayacak :)
chronospoon 9:15

Bir dm-crypt blok cihazında ext4 bölümünü kullanıyorum ... Yöntemi denedim ve sıkıştırma işleminden sonra .vdi dosyasını daha küçük göremiyorum. Sıfır blokların, dm-crypt altındaki blok cihazında sıfır olmayan bloklar olarak kaydedildiğini düşünüyorum.
smichak

2
@smichak: şifreleme noktası budur. Dosya sınırlarını göremediğimizden emin olmak için tüm sürücünüzü şifreleyecektir.
Takkat

3
VDI'nızı başka bir makineye bağlamak istemiyorsanız, kurtarma moduna önyükleme yapabilir ve diski salt okunur şekilde mount -n -o remount,ro -t ext4 /dev/sda1ve sonra da takabilirsiniz zerofree -v /dev/sda1.
Hamid Nazari

1

İşte boş disk alanını sıfırlamanın bazı alternatif yolları (en fazla zaman alan kısım olabilir). Daha sonra, VBoxManage modifyhd <disk> --compactgerçek disk dosyasını sıkıştırmak için çalışmaya devam etmeniz gerekecektir .


Bu komut, bağlantısı kaldırılmış durumdayken diski sıfırlayabilir:

apt-get install zerofree
zerofree -v /dev/sdxN


Aşağıda, düzenli aralıklarla çıktı almak için dd'nin nasıl kullanılacağına dair bir örnek verilmiştir:

dd if=/dev/zero of=temp-file-on-disk bs=20M

# run this to get the process ID of the dd command
pgrep -l '^dd$'
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd$' | awk '{print $1}')


İşte dddüzenli aralıklarla otomatik olarak çıktı yazdıracak benzeri bir program:

apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M

1
zerofreeMonte edilmiş bir dosya sisteminde, ancak salt okunur şekilde monte edildiğinde kullanıldığını gördüm . Kök FS için bile: sudo mount -o remount,ro /- ancak bir GUI oturumunda kök meşgul olacak, bu yüzden başarısız olacaktır. Fakat runlevel 1 ( telinit 1) ' de mümkündür , bu nedenle bunu yapmak için canlı bir CD'den önyükleme yapmanız gerekmez.
Tomasz Gandor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.