雙活特性中的兩個數據中心互爲備份,且都處於運行狀態。當一個數據中心發生設備故障,甚至數據中心總體故障時,業務自動切換到另外一個數據中心,解決了傳統災備業務沒法自動切換的問題。提供給用戶高級別的數據可靠性以及業務連續性的同時,提升存儲系統的資源利用率。 html
存儲系統爲基礎的存儲雙活架構,爲客戶建設業務不間斷運行的解決方案,包括本地數據中心部署邏輯架構和跨數據中心部署邏輯架構。 數據庫
數據I/O處理機制
經過數據雙寫和DCL機制實現存儲層數據的雙活,兩個數據中心同時對主機提供數據讀寫能力。 ci
寫I/O流程
實現兩臺存儲設備數據一致的核心就是高效的鎖分配機制和高效的數據雙寫機制。 資源
- 在業務運行中,數據變動可經過雙寫和DCL來完成同步。雙寫可使得應用服務器的I/O請求同時下發到本端Cache和遠端Cache,從而保證本端Cache與遠端Cache的變動數據一致性。在一個數據中心故障時,DCL能夠記錄業務運行中數據中心的數據變動。待故障恢復後,同時跟蹤變動數據同步到該數據中心的存儲設備中,以防止變動的數據在同步過程當中出現遺漏。
- 具有雙活特性的兩臺存儲系統,可以同時處理主機的I/O請求。爲了防止兩臺存儲系統同一時間收到主機寫請求修改同一個數據塊,而發生數據衝突,須要設計鎖分配機制來避免衝突,只有獲取鎖分配機制容許的存儲系統才能寫入數據。沒有獲取該數據庫塊鎖分配機制容許的存儲系統,須要等待待鎖分配機制釋放以後才能從新獲取鎖分配機制容許寫。
在業務運行中,當應用服務器下發I/O請求並引發數據變動時,雙活I/O的寫處理流程如圖1所示。 部署
說明: get
以本次寫I/O訪問本端存儲系統,經過本端存儲系統對遠端存儲系統進行雙寫爲例進行說明。
圖1 寫I/O流程
- 主機下發寫I/O到雙活管理模塊。
- 系統記錄LOG。
- 執行雙寫:雙活管理模塊同時將該寫I/O寫入本端Cache和遠端Cache。
- 本端Cache和遠端Cache向雙活管理模塊返回寫I/O結果。
- 根據4的結果進行處理:
- 若是兩端存儲系統都返回寫成功,則清除Log。
- 若是任意一端返回寫失敗,則進行如下處理:
- 將Log轉換成DCL,轉換成功後清除Log,記錄本端LUN和遠端LUN的差別數據。
- 雙活Pair關係斷開,雙活Pair的運行狀態變爲待同步。I/O變成單寫,寫成功的一端繼續提供主機業務,寫失敗的一端中止主機業務。
說明:
根據存儲系統記錄的DCL,進行後臺數據同步,待本端LUN和遠端LUN的數據一致時,雙活業務恢復。
- 返回主機I/O相應成功。
讀I/O流程
兩端的LUN數據實時同步,且都能提供主機讀寫訪問。當任何一端存儲系統故障的狀況下主機將切換訪問路徑到正常的一端繼續業務訪問。
雙活讀I/O流程如圖2所示:
圖2 讀I/O流程
- 應用服務器向雙活管理模塊申請讀權限。
- 雙活管理模塊先從本端存儲系統響應應用服務器的請求。
- 若是本端存儲系統正常,則本端存儲系統將數據返回給雙活管理模塊。
- 若是本端存儲系統處於非正常狀態,則經過雙活管理模塊去讀遠端存儲系統的數據。遠端存儲系統將數據返回給雙活管理模塊。
- 應用服務器讀I/O成功。