以下の構成にて
- server: Debian GNU/Linux 8.5 (jessie)
- client: Ubuntu 14.04.5 LTS
server 側の /etc/nbd-server/config を以下のように設定してみた
[generic]
user = nbd
group = nbd
includedir = /etc/nbd-server/conf.d
[foo]
exportname = /dev/sdb
これに接続しようとしたところ、以下のようにエラーが出た。
$ sudo nbd-client myserver /dev/nbd0 -N foo
Negotiation: ..Error: Server closed connection
Exiting.
これ、どうも、/dev/sdb のパーミッションが以下のようになっているのが原因らしい。
$ ls -l /dev/sdb
brw-rw---- 1 root disk 8, 16 8月 25 22:12 /dev/sdb
chmod o+rw するか、chown :nbd するときちんと接続されたのでまず間違いない。
そこで、以下のようにユーザー nbd をグループ disk に追加してみた。
$ grep nbd /etc/group
disk:x:6:nbd
nbd:x:128:
ところが、なぜかこの設定では、前述のエラーで接続が上手く出来ない。念のためリブートもして試してみたが駄目だった。
# su nbd
$ xxd /dev/sdb
等とすると、きちんと表示できるので、ユーザー nbd がグループ disk 扱いされているのは間違いないのだが、なんでだ!?
で、結論として、/etc/nbd-server/config における group の設定を disk にすると解決は出来たのだが、なんか気持ち悪い。
設定としては以下の様な感じ。
[generic]
user = nbd
# group = nbd # This can not export /dev/sdb
group = disk
includedir = /etc/nbd-server/conf.d
[foo]
exportname = /dev/sdb