正当なブロックデバイスに渡された生(ファイルシステムなし)ループバックデバイスを作成するには?

正当なブロックデバイスに渡された生(ファイルシステムなし)ループバックデバイスを作成するには?

質問

偽のブロックデバイス(大容量ファイル/ディスクイメージを使用)をフォーマットされていない正当なディスクとして作成してマウントする方法は?

背景ストーリー

設定しようとしています。そしてセファロスポリン(分散ストレージシステム)私の趣味はkubernetesクラスターにあります。Cephにはフォーマットされていないブロックデバイスが必要です。必要に応じて分割され、保存に使用されます。

空きディスクがないので、次のように考えました。 ループバックデバイスを作成して使用するとどうなりますか?

私のホストOSディスクには十分な空き容量があるので、その中に大きなファイルを作成してループバックデバイスとしてマウントできる必要があります。

これには2つの問題があります(私が理解したところによると)。

  1. ループバックデバイスをマウントするには、一種のファイルシステムでフォーマットする必要があります。 Cephでは使用できません。フォーマットされていないブロックデバイスが必要です。
  2. ループバックデバイスはブロックデバイスとは見なされないようです。セフ文書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ループデバイスを作成するだけです。ループデバイスはブロックデバイスであり、出力に表示されるため、lsblkCephで利用可能でなければなりません。

$ 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 
...

関連情報