我有個問題。
目前,該作業系統是 Windows Server 2019。兩台伺服器透過心跳網路連線 兩個節點均使用 WinDRBD 進行鏡像。兩個節點具有相同的配置。我未格式化 G: 並將 D: 設定為對主節點可見。
我的資源在下面
include "global_common.conf";
resource "foo" {
protocol A;
net {
use-rle no;
}
on node1 {
address XXX.XXX.XXX.XXX:7600;
node-id 1;
volume 1 {
disk "G:";
device minor 1;
meta-disk internal;
}
}
on node2 {
address XXX.XXX.XXX.XXX:7600;
node-id 2;
volume 1 {
disk "G:";
device minor 1;
meta-disk internal;
}
}
}
兩個節點都工作正常。測試是透過切換角色來完成的。 (小學→中學/中學→小學)
然而,啟動後就出現了問題。
啟動後,狀態如下圖所示。 (兩個節點)
foo role:Secondary
volume:1 disk:Diskless
node2 connection:StandAlone
我想了很多,也找了很多,但我沒有找到答案。
有幾件事我很懷疑。
我想知道是否是因為我在將G:盤符分配給驅動器之前嘗試過。如果我的想法是對的,有沒有解決方法?
如果現在按照我的意見,但是上述問題仍然出現,請問是什麼原因呢?
一旦透過以下方式解決了。但我想找到原因並準確解決。
drbdadm down foo
drbdadm up foo
在此先感謝您的幫忙。
答案1
WinDRBD 失去心跳,這導致了您所看到的問題。切斷 h/b 的電線,您將輕鬆重現問題。不祥之兆:至少現在不要在生產中使用 WinDRBD。很脆弱。
答案2
@BaronSamedi1958 實際上有一個觀點:WinDRBD 不是本機 Windows 解決方案,它是在模擬 Linux 核心 API 的包裝器的幫助下公然從 Linux 移植到 Windows 的。
https://linbit.com/windrbd-replicated-disk-drives-for-windows/
「從技術上講,WinDRBD Windows 驅動程式由一個薄Linux 相容層組成,該層模擬Windows 平台DRBD 驅動程式使用的Linux 核心API。在該層內,原始DRBD 引擎(具有一些特定於編譯器的補丁)正在運行。
因此,WinDRBD 對於它正在做什麼以及正在發生什麼沒有太多線索。初始化時,它嘗試建立與合作夥伴節點的網路連接,但失敗了,因為...在 Windows 核心生態系統中,儲存堆疊在網路堆疊完全啟動並運行之前啟動! WinDRBD 無法 ping 合作夥伴節點,因此它假設出現問題,並且不會啟動儲存池來保護它並避免資料損壞。
有幾種方法可以解決這個問題:
- 將 Windrbd 驅動程式的啟動相依性放置在控制 WinDRBD 使用的 NIC 的 NDIS 微型連接埠上。
https://docs.microsoft.com/en-us/windows-hardware/drivers/install/specifying-driver-load-order
實際上,這是一種不穩定的方式,因為更改網路適配器會破壞配置。 + NDIS 微型連接埠之上有一大堆驅動程序,例如NDIS 過濾器(防火牆?)、NDIS 協定驅動程式(TCP/IP?)等,您對此不太了解,而且您必須使用您可能使用的特殊工具進行遍歷不熟悉。
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-driver-stack
- 避免自動啟動 WinDRBD,並使用一些依賴登入的腳本來偽自動啟動它。在登入過程中,所有核心元件都已準備就緒,在最壞的情況下,您可以將不成功的驅動程式啟動問題記錄到某個日誌檔案中,進行分析,重新嘗試腳本等。
這當然可以做到,但需要對 PowerShell 進行一些修改。您可以從下面的討論主題中獲得一些好的起點。
https://stackoverflow.com/questions/27599287/powershell-disable-and-enable-a-driver
- 使用從頭開始為 Windows 設計的東西,例如 StarWind vSAN Free 或 Microsoft 自己的內建 SDS(例如 AzS HCI)。
答案3
您可能想要升級 WinDRBD 版本。您使用的版本仍然是候選版本(1.0.0-rc14 左右,從您發布的日期猜測)。請升級到較新的 WinDRBD。您可以在以下位置找到預編譯的安裝程式:
https://linbit.com/linbit-software-download-page-for-linstor-and-drbd-linux-driver/
截至撰寫本文時,最新版本是 1.1.10。
如果 G: 驅動器是您的後備設備,則此設定是正確的。
如果問題仍然存在,請告訴我。