拡張可能なループバックデバイスのセットアップ方法


23

次のようなループバックデバイスを作成して使用できることを知っています。

# 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です。成長しません。

サイズを大きくすることができる一種のループバックデバイスはありますか?または、格納するスペースだけを必要とする一種のループバックデバイスがありますか?


1
ファイルはまばらなので、例に保存されているスペースだけを使用する必要があります。
ヨルダン

これで何を達成しようとしているかによっては、このツールvirt-make-fsが役立つ場合があります。tarファイルを使用してext2イメージを作成するために使用できます。
コッテ

回答:


17

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

参照:ウィキペディアスパースファイルの記事


10

@jordanmのコメントはそれを打ち付けました。の出力を見たときに、ファイルサイズが固定されていると仮定しましたls -lh disk.img@Stephanの回答のls -s disk.imgように使用すると、実際のファイルサイズが表示されます。テストとして、ハードドライブよりも大きいイメージファイルを作成しました。

truncate test.img -s 1000G

そして、それはうまく機能します。つまり、答えは質問にあります:)


Truncateはうまく機能しますが、スパースファイルを作成するための代替コマンドを表示すると思います(Linuxディストリビューションとツールセットに応じて)、現在の「マウント」として必ずしもlosetupを使用する必要はありませんインカネーションは、必要なときに賢明なオプションを設定するのが賢明です。
ステファン

マウントについてのビットは興味深いです。LUKS(cryptsetup luksFormat / dev / loop0)も必要なため、今回だけです。losetupが必要です:D
phunehehe

スパースファイルを作成する別の便利なlinuxコマンドはfallocate(1)です。
Lloeki

2

切り捨てを使用するため、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つのライナーは、ここでは自動化をほとんど必要としません、私はあえて言うでしょう:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.