無法讓 NBD 工作
根據這篇博文,應該很容易:
# nbd-server MyFile.dat # nbd-client localhost /dev/nbd0
麻煩的是……這實際上不起作用。
首先,
nbd-server
關於“沒有配置的導出”的抱怨和抱怨,除非我明確指定埠號和文件的絕對路徑。但是好吧,隨便。(它仍然抱怨說這是“棄用”了,你應該真正編輯配置文件——我絕對不想這樣做!)它現在似乎正在為塊設備提供服務。(至少,現在有一個nbd-server
程序正在執行,它打開了 TCP/10809 以供偵聽。)
nbd-client
然而,試圖建立聯繫是不可能的。無論我給它什麼論據,它都會呻吟和抱怨,拒絕做任何事情!它一直在說ERROR: not enough information specified
其次是使用概要。但它實際上並不會告訴我它對什麼不滿意。無論是否指定埠號,我都會收到相同的錯誤消息。我如何使它真正連接?
(顯然我正在連接到同一台機器。最終我想在網路上的機器之間執行此操作。但我什至無法讓它在本地工作!)
PS。一些例子談論
modprobe nbd-client
和modprobe nbd-server
。我的 OpenSUSE 機器似乎只有nbd.ko
,所以我插入了它。在此之前,/dev/nbd0
甚至不存在。在那之後,它存在得很好。
這需要一些弄清楚。
似乎除了 NBD 伺服器和埠號之外,您還需要指定一個“導出名稱”,文件並沒有很好地解釋。
我還不得不求助於使用配置文件
$$ which I desparately wanted to avoid $$. 幸運的是,您實際上不必將它放在任何特殊位置或任何東西上。 我實際上能夠使以下工作:
- 創建一個空磁碟映像。
- 創建一個看起來像這樣的文件:
[generic] # Must always exist. [Mu] exportname=/path/to/image/file
- 啟動 NBD 伺服器:
nbd-server -C /path/to/config/file
這似乎生成
/var/run/nbd-server.pid
了 ,它保存了 NBD 伺服器程序的 PID(即,你可以殺死它)。似乎沒有任何其他停止命令。 4. 啟動 NBD 客戶端:nbd-client localhost -N Mu /dev/nbd0
該
Mu
部分必須匹配您在配置文件中選擇的任何隨機名稱。單個伺服器完全有可能一次性提供多個文件,因此您需要指定您想要的文件。(這大概是客戶之前抱怨的“資訊不足”。)此時,
/dev/nbd0
應該作為一個正常的塊設備執行。到目前為止,除了終止客戶端/伺服器程序(例如,
pkill nbd
)之外,我還沒有找到任何斷開連接的方法。我也測試過;如果您
localhost
用適當的主機名替換,這可以遠端工作。