質問
偽のブロックデバイス(大容量ファイル/ディスクイメージを使用)をフォーマットされていない正当なディスクとして作成してマウントする方法は?
背景ストーリー
設定しようとしています。車そしてセファロスポリン(分散ストレージシステム)私の趣味はkubernetesクラスターにあります。Cephにはフォーマットされていないブロックデバイスが必要です。必要に応じて分割され、保存に使用されます。
空きディスクがないので、次のように考えました。 ループバックデバイスを作成して使用するとどうなりますか?
私のホストOSディスクには十分な空き容量があるので、その中に大きなファイルを作成してループバックデバイスとしてマウントできる必要があります。
これには2つの問題があります(私が理解したところによると)。
- ループバックデバイスをマウントするには、一種のファイルシステムでフォーマットする必要があります。 Cephでは使用できません。フォーマットされていないブロックデバイスが必要です。
- ループバックデバイスはブロックデバイスとは見なされないようです。セフ文書
lsblk -f
デバイスがCephに適しているかどうかをテストするために使用されます。デバイスが出力に表示されます。そしてファイルシステムがフォーマットされていません。
答え1
losetup
あなたのためにそれを行います。未使用のループデバイス/dev/loop0がある場合:
# Make the file
head -c 10240 /dev/zero > /tmp/zeroes
# Use it as a block device
sudo losetup /dev/loop0 /tmp/zeroes
# Remove the device
sudo losetup -d /dev/loop0
答え2
ループバックデバイスをマウントするには、まず一種のファイルシステムでフォーマットする必要があります。
各ブロックデバイスをマウントするにはフォーマットする必要があります。実際にはブロックデバイス自体ではなくファイルシステムをマウントするので、これは実際には意味がありません。ファイルが必要で、それを使用してlosetup -f disk.img
ループデバイスを作成するだけです。ループデバイスはブロックデバイスであり、出力に表示されるため、lsblk
Cephで利用可能でなければなりません。
$ dd if=/dev/zero of=disk.img bs=1M count=100
$ sudo losetup -f disk.img
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0
...
リサイクル機器が利用できない場合は、次のものを使用できます。ターゲットコマンドライン通常のSCSIドライブのように見えるブロックデバイスをサポートし、より説得力のあるファイルを作成します。
# targetcli /backstores/fileio/ create test disk.img
# targetcli /loopback create
Created target naa.50014050efbb30e0.
# targetcli /loopback/naa.50014050efbb30e0/luns create /backstores/fileio/test
上記のループデバイス用に作成したのと同じファイルに基づいて新しい(偽)ディスクを作成します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 100M 0 loop
...
sdb 8:16 0 100M 0 disk
...