Centos

關閉連接客戶端的 iSCSI 目標的正確方法是什麼?

  • February 2, 2015

如果兩條路徑同時獲得寫入請求,則使用具有兩個 DRBD 主節點的 iSCSI是個壞主意。但我正在考慮將這個想法用作 ESXi 5.5U2 主機的後端儲存。

我已經使用主要/次要配置和經典的故障轉移集群對此進行了測試。

ESXi 在這一點上所做的是它檢測到多路徑並且僅主動使用一個路徑。所以在這個星座中,並發寫入 io 問題似乎沒有出現。

現在這兩種情況(主要/次要或主要/主要)的問題是:如何關閉與 iSCSI 客戶端(iSCSI 術語中的 iSCSI 發起程序)具有活動打開連接的 iSCSI 伺服器(iSCSI 術語中的 iSCSI 目標提供程序)?

我目前在目標伺服器上使用 CentOS 5。

CO5 使用 tgtd 來提供目標。令我驚訝的是,如果有連接的客戶端,正常的停止方法會失敗。相反,在這種情況下,強制停止似乎是我需要的。

我想徹底關閉一台伺服器(我必須停止對目標的訪問,這樣我才能將 drbd 切換到輔助伺服器),然後另一台伺服器應該自動變為活動狀態(恕我直言,在這個星座中無事可做)。

在這種情況下的問題:以下是否可以,或者我錯過了什麼?

  1. 強制停止 tgtd(將首先使目標離線)
  2. 將 IP 拆除到啟動器的方向(與用於 drbd-replication 的線路不同)
  3. 關閉 drbd (首先使其成為次要)
  4. 重新啟動或關閉伺服器

是的,我確實錯過了一些東西。問題仍然是底層協議(SCSI)是一個有狀態的協議。因此,即使我設法關閉目標(例如強制停止),它也會使活動啟動器處於“掛起”狀態。

但是:在我的案例中,有一個解決問題的方法。

  1. 在 vCenter 中禁用到某個 iSCSI 伺服器的所有路徑。
  2. 這將有序地終止所有打開的 iSCSI 事務,並將在通往另一台伺服器的另一條路徑上打開新事務。
  3. 之後 iSCSI 伺服器可以安全地重新啟動,而不會中斷客戶端。
  4. 在 iSCSI 伺服器啟動並再次執行後,可以通過在 vCenter 中啟用這些路徑來重新啟動原始 iSCSI 路徑。

所以我的問題的正確答案似乎是:

**短:**沒有正確的方法。您的客戶將掛起。

**龍:**視情況而定。如果您有一個層能夠首先正確地使 iSCSI 流量靜音/終止,您可以在之後終止目標(即使目標伺服器仍然認為有連接的啟動器客戶端)。

引用自:https://serverfault.com/questions/661881