nbd-clientを使用してネットワークブロックデバイスをマウントできない

nbd-clientを使用してネットワークブロックデバイスをマウントできない

私は通常nbdを初めて使用しました。私はサポートリポジトリからデータを読み取るためにnbdサーバーとして使用し、私のクライアントとしてguestfish(ファイルシステムシェル)を使用するRustでnbdkitプラグインを作成しました。

#!/bin/bash -
 guestfish --ro --format=raw -a nbd://localhost <<-EOF
  run
  mount /dev/sda /
  mount-local ./data
  mount-local-run
EOF

これは、guestfishのマウントコマンドが非常に遅いことを除いて、さまざまな種類のファイルシステム(xfs、ext2..4、FATなど)に適しています。だから依存関係を削除し、デフォルトのLinuxをnbd-clientクライアントとして使ってみました。

> modprobe nbd
// no output
> sudo nbd-client localhost /dev/nbd0
//successfully connects
> sudo mkdir /mnt/nbd0
> sudo mount /dev/nbd0 /mnt/nbd0
mount: /mnt/nbd0: cannot mount /dev/nbd0 read-only.

このインストールコマンドが失敗した理由はわかりません。私はnbdkitの書き込みコールバックを実装していないので、ファイルを読み取り専用にしたいのですが、これがインストールが失敗する理由を理解できません。代わりに走ることができます

sudo mount -o ro,noload /dev/nbd0 /mnt/nbd0

次のことは、ボリュームのファイルシステムによって異なります。ちなみに、私のファイルシステムはext4です。

ボリュームのファイルシステムタイプがext4でない場合:mount: /mnt/nbd0: wrong fs type, bad option, bad superblock on /dev/nbd0, missing codepage or helper program, or other error.

ボリュームのファイルシステムタイプがext4の場合:インストールに成功し、ディレクトリに入って移動するなどの操作を実行できますが、ボリューム上のすべてのファイルが空です。。 guestfishをインストールしたときと同じように実行できます。

cat dir0/textFile0.txt
"This is text file 0!"

同じcatコマンドを実行するか、vimを使用してテキストファイルを入力すると、ファイルが完全に空であることが表示されます。

この問題はコマンド-o ro,noloadのパラメータによって発生しますかmount?それでは、正常にインストールしようとしたときにこのエラーを回避するにはどうすればよいですか?そうでない場合、この動作の既知の原因はありますか?私のnbdkitプラグインがguestfishを使用すると完全に動作しますが、nbd-clientを使用しているので動作することを知っています。 1.ファイルシステムにext4以外のものをインストールすることはできません(-t xfsタグを追加した場合でも)。そして2.ファイルの内容が完全に削除されました。

ベストアンサー1

おすすめ記事