Bagaimana cara mengatur perangkat loopback yang dapat ditumbuhkan?

23

Saya tahu saya bisa membuat dan menggunakan perangkat loopback seperti ini:

# 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

Namun dalam hal ini citra disk diperbaiki pada 2GB. Ini 2GB saat kosong, dan 2GB saat penuh. Itu tidak akan tumbuh.

Apakah ada jenis perangkat loopback yang dapat tumbuh dalam ukuran? Atau, apakah ada semacam perangkat loopback yang hanya membutuhkan ruang yang sama dengan yang disimpannya?

phhehehe
sumber
1
Karena file jarang, seharusnya hanya menggunakan ruang sebanyak yang disimpan dalam contoh Anda.
jordanm
Bergantung pada apa yang ingin Anda capai dengan alat ini virt-make-fsmungkin berguna. Ini dapat digunakan untuk membuat gambar ext2 menggunakan file tar.
Kotte

Jawaban:

17

Buat perangkat file-jarang, menggunakan dd.

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 :)'

Referensi: artikel file wikipedia jarang

Stephan
sumber
10

Komentar @ jordanm berhasil. Saya berasumsi bahwa ukuran file sudah diperbaiki ketika saya melihat output dari ls -lh disk.img. Ketika saya digunakan ls -s disk.imgseperti dalam jawaban @ Stephan ukuran file nyata ditampilkan. Sebagai ujian, saya membuat file gambar yang lebih besar dari hard drive saya:

truncate test.img -s 1000G

Dan itu berfungsi dengan baik, yang berarti jawabannya ada di pertanyaan :)

phhehehe
sumber
Truncate berfungsi dengan baik, btw, saya hanya berpikir saya akan menunjukkan perintah alternatif untuk membuat file sparse tersebut, dan (tergantung pada distribusi dan toolset linux Anda) bahwa Anda tidak perlu menggunakan losetup, karena 'mount' pada saat ini inkarnasi cukup cerdas tentang pengaturan opsi yang masuk akal ketika Anda membutuhkannya.
Stephan
Sedikit tentang mount itu menarik. Hanya saja kali ini karena saya juga butuh LUKS (cryptsetup luksFormat / dev / loop0), saya perlu losetup: D
phunehehe
Perintah linux lain yang berguna untuk membuat file jarang adalah fallocate(1).
Lloeki
2

Anda dapat melakukannya secara manual dengan pencarian dd, atau lebih mudah, karena Anda menggunakan truncate:

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

2 liner untuk menumbuhkannya, hampir tidak membutuhkan otomatisasi di sini, saya berani katakan :)

Malina Salina
sumber