Büyüyen bir geridönüş aygıtı nasıl kurulur?


23

Bunun gibi bir geridöngü aygıtı oluşturabildiğimi ve kullanabileceğimi biliyorum:

# Create the file
truncate disk.img --size 2G
# Create a filesystem
mkfs.ext4 disk.img
# Mount to use
mount disk.img /mnt
# Clean up
umount /mnt

Ancak bu durumda disk görüntüsü 2GB olarak sabitlenir. Boşken 2GB, doluyken 2GB. Büyümeyecek.

Boyutta büyüyebilecek bir geridöngü cihazı var mı? Veya yalnızca depoladığı kadar alana ihtiyaç duyan bir geridöngü aygıtı var mı?


1
Dosya seyrek olduğundan, yalnızca örneğinizde depolandığı kadar alan kullanmalıdır.
jordanm

Bununla ne yapmaya çalıştığınıza bağlı olarak, araç virt-make-fsfaydalı olabilir. Tar dosyalarını kullanarak ext2 görüntüleri oluşturmak için kullanılabilir.
Kotte

Yanıtlar:


17

Dd kullanarak seyrek dosya aygıtı oluşturun.

df -hm # to show where we started
dd of=sparse-file bs=1k seek=102400 count=0 # creates a 100Meg sparsefile
mkfs.ext4 sparse-file
mkdir blah
mount sparse-file blah
cp somefile blah
ls -lahts sparse-file  # The 's' option will report the actual space taken in the first column
ls -lahts blah
df -hm # doublecheck my work
echo 'profit :)'

Referans: wikipedia seyrek dosya makalesi


10

@ jordanm adlı kullanıcının yorumu onu çivilendi . Çıktısına baktığımda dosya boyutunun sabit olduğunu varsaydım ls -lh disk.img. @ Stephan'ın cevabında olduğu ls -s disk.imggibi kullanıldığında gerçek dosya boyutu gösterilir. Test olarak, sabit diskimden daha büyük bir resim dosyası oluşturdum:

truncate test.img -s 1000G

Ve gayet iyi çalışıyor, yani sorunun cevabı var demektir :)


Truncate harika çalışıyor, btw, az önce bahsedilen seyrek dosyayı oluşturmak için alternatif bir komut göstereceğimi düşündüm ve (linux dağıtımınıza ve araç setinize bağlı olarak) mutlaka mevcut 'mount' olarak losetup kullanmanız gerekmeyeceğini düşündüm. enkarnasyon, ihtiyaç duyduğunuzda mantıklı seçenekler ayarlama konusunda oldukça akıllıdır.
Stephan

Mount hakkında biraz ilginç. Bu seferlik aynı zamanda LUKS'e (cryptsetup luksFormat / dev / loop0) de ihtiyacım var, losetup'a ihtiyacım var: D
punehehe

Seyrek dosyayı oluşturmak için bir başka kullanışlı linux komutu fallocate(1).
Lloeki,

2

Truncate kullandığınız için dd seek veya manüel olarak bunu yapabilirsiniz:

truncate -s 100M file
mkfs.ext4 -m0 file
#mount, do whatever
umount /mountpoint
#let's grow it to 200 MB
truncate -s 200M file
e2fsck -f file && resize2fs file
#done

Büyümek için 2 liner, burada otomasyon için pek çağrı gerektirmez, diyebilirim :)

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.