次のようなループバックデバイスを作成して使用できることはわかっています。
# 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
ただし、この場合、ディスクイメージは2GBに固定されています。空の場合は2GB、満杯の場合は2GBです。成長しません。
サイズが大きくなる可能性がある一種のループバックデバイスはありますか?または、格納するスペースだけを必要とする一種のループバックデバイスはありますか?
@ jordanmのコメント はそれを釘付けにしました。 ls -lh disk.img
の出力を見ると、ファイルサイズが固定されていると思いました。 @ Stephan's answer のようにls -s disk.img
を使用すると、実際のファイルサイズが表示されます。テストとして、ハードドライブよりも大きいイメージファイルを作成しました。
truncate test.img -s 1000G
そしてそれはうまく機能します、それは答えが質問にあることを意味します:)
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 :)'
切り捨てを使用するため、dd seekまたはそれより簡単に手動で行うことができます。
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つのライナーは、ここで自動化をほとんど要求しません、私は敢えて言うでしょう:)