Nbd

無法讓 NBD 工作

  • September 14, 2021

根據這篇博文,應該很容易:

# 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-clientmodprobe nbd-server。我的 OpenSUSE 機器似乎只有nbd.ko,所以我插入了它。在此之前,/dev/nbd0甚至不存在。在那之後,它存在得很好。

這需要一些弄清楚。

似乎除了 NBD 伺服器和埠號之外,您還需要指定一個“導出名稱”,文件並沒有很好地解釋。

我還不得不求助於使用配置文件

$$ which I desparately wanted to avoid $$. 幸運的是,您實際上不必將它放在任何特殊位置或任何東西上。 我實際上能夠使以下工作:

  1. 創建一個空磁碟映像。
  2. 創建一個看起來像這樣的文件:
[generic]
# Must always exist.

[Mu]
exportname=/path/to/image/file
  1. 啟動 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用適當的主機名替換,這可以遠端工作。

引用自:https://unix.stackexchange.com/questions/658076