双活存储基础知识
雙活特性中的兩個數據中心互為備份,且都處于運行狀態。當一個數據中心發生設備故障,甚至數據中心整體故障時,業務自動切換到另一個數據中心,解決了傳統災備業務無法自動切換的問題。提供給用戶高級別的數據可靠性以及業務連續性的同時,提高存儲系統的資源利用率。
存儲系統為基礎的存儲雙活架構,為客戶建設業務不間斷運行的解決方案,包括本地數據中心部署邏輯架構和跨數據中心部署邏輯架構。 本地數據中心部署
通常部署在同園區的不同機房中。
主機采用集群部署方式。主機與存儲間通常通過交換機方式通信,支持FC交換機或IP交換機。同時存儲側部署存儲雙寫鏡像通道,保證雙活業務的運行。
方案邏輯示意圖如圖1所示。
圖1 本地數據中心部署
數據I/O處理機制
通過數據雙寫和DCL機制實現存儲層數據的雙活,兩個數據中心同時對主機提供數據讀寫能力。
寫I/O流程
實現兩臺存儲設備數據一致的核心就是高效的鎖分配機制和高效的數據雙寫機制。 在業務運行中,數據變更可通過雙寫和DCL來完成同步。雙寫可以使得應用服務器的I/O請求同時下發到本端Cache和遠端Cache,從而保證本端Cache與遠端Cache的變更數據一致性。在一個數據中心故障時,DCL可以記錄業務運行中數據中心的數據變更。待故障恢復后,同時跟蹤變更數據同步到該數據中心的存儲設備中,以防止變更的數據在同步過程中出現遺漏。 具備雙活特性的兩臺存儲系統,能夠同時處理主機的I/O請求。為了防止兩臺存儲系統同一時間收到主機寫請求修改同一個數據塊,而發生數據沖突,需要設計鎖分配機制來避免沖突,只有獲取鎖分配機制允許的存儲系統才能寫入數據。沒有獲取該數據庫塊鎖分配機制允許的存儲系統,需要等待待鎖分配機制釋放之后才能重新獲取鎖分配機制允許寫。
在業務運行中,當應用服務器下發I/O請求并引起數據變更時,雙活I/O的寫處理流程如圖1所示。
說明:
以本次寫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成功。
總結
- 上一篇: d3.js:数据可视化利器之 selec
- 下一篇: 推荐几款优秀的开源博客系统