什么是共享云硬盤
共享云硬盤是一種支持多個云主機并發讀寫訪問的數據塊級存儲設備,具備多掛載點、高并發性、高性能、高可靠性等特點。主要應用于需要支持集群、HA能力的關鍵企業應用場景,多個云主機可同時訪問一個共享云硬盤。
一塊共享云硬盤最多可同時掛載至16臺云主機,云主機包括彈性云主機和物理機。實現文件共享需要搭建共享文件系統或類似的集群管理系統,例如Windows MSCS集群、Veritas VCS集群和CFS集群等。
說明
使用共享云硬盤必須搭建共享文件系統或類似的集群管理系統。直接掛載至多臺云主機無法實現共享功能,且存在數據覆蓋風險。
圖 共享云硬盤使用場景

共享云硬盤的使用注意事項
由于多數常見集群需要使用SCSI鎖,例如Windows MSCS集群、Veritas VCS集群和CFS集群,因此建議您結合SCSI模式使用共享云硬盤。若SCSI云硬盤掛載給虛擬化類型為XEN的ECS,則需要安裝驅動,具體請參見磁盤模式及使用方法。
您可以創建VBD類型的共享云硬盤和SCSI類型的共享云硬盤。建議將共享云硬盤掛載至位于同一個反親和性云主機組內的ECS,以提高業務可靠。
- VBD類型的共享云硬盤:創建的共享云硬盤默認為VBD類型,該類型云硬盤可提供虛擬塊存儲設備,不支持SCSI鎖。當您部署的應用需要使用SCSI鎖時,則需要創建SCSI類型的共享云硬盤。
- SCSI類型的共享云硬盤:SCSI類型的共享云硬盤支持SCSI鎖。
說明
為了提升數據的安全性,建議您結合云主機組的反親和性一同使用SCSI鎖,即將SCSI類型的共享云硬盤掛載給同一個反親和性云主機組內的ECS。
如果ECS不屬于任何一個反親和性云主機組,則不建議您為該ECS掛載SCSI類型的共享云硬盤,否則SCSI鎖無法正常使用,并且會導致您的數據面臨風險。
反親和性和SCSI鎖的相關概念:
- 云主機組的反親和性:ECS在創建時,將會分散地創建在不同的物理主機上,從而提高業務的可靠性。
關于云主機組,更多詳情請參見《彈性云主機用戶指南》中的“管理彈性云主機組”。
- SCSI鎖的實現機制:通過SCSI Reservation命令來進行SCSI鎖的操作。如果一臺ECS給云硬盤傳輸了一條SCSI Reservation命令,則這個云硬盤對于其他ECS就處于鎖定狀態,避免了多臺ECS同時對云硬盤執行讀寫操作而導致的數據損壞。
- 云主機組和SCSI鎖的關系:同一個云硬盤的SCSI鎖無法區分單個物理主機上的多臺ECS,因此只有當ECS位于不同物理主機上時才可以支持SCSI鎖,因此建議您結合云主機組的反親和性一起使用SCSI鎖命令。
共享云硬盤的主要優勢
- 多掛載點:單個共享云硬盤最多可同時掛載給16個云主機。
- 高性能:多臺云主機并發訪問超高IO共享云硬盤時,隨機讀寫IOPS可高達160000。
- 高可靠:共享云硬盤支持自動和手動備份功能,提供高可靠的數據存儲。
- 應用場景廣泛:可應用于只需要VBD類型共享云硬盤的Linux RHCS集群系統,同時也可應用于需要支持SCSI指令的共享云硬盤的場景,如Windows MSCS集群和Veritas VCS集群應用。
共享云硬盤的規格性能
共享云硬盤的規格性能與非共享云硬盤規格性能一致,詳情請參見磁盤類型及性能介紹。
共享云硬盤的數據共享原理和常見的使用誤區
共享云硬盤本質是將同一塊云硬盤掛載給多個云主機使用,類似于將一塊物理硬盤掛載給多臺物理服務器,每一臺服務器均可以對該硬盤任意區域的數據進行讀取和寫入。如果這些服務器之間沒有相互約定讀寫數據的規則,比如讀寫次序和讀寫意義,將會導致這些服務器讀寫數據時相互干擾或者出現其他不可預知的錯誤。
共享云硬盤為云主機提供共享訪問的塊存儲設備,但其本身并不具備集群管理能力,因此需要您自行部署集群系統來管理共享云硬盤,如企業應用中常見的Windows MSCS集群、Linux RHCS集群、Veritas VCS集群和CFS集群應用等。
如果在使用共享云硬盤過程中未通過集群系統進行管理,可能會導致以下問題:
- 讀寫沖突導致數據不一致
當一個共享云硬盤同時掛載給兩臺云主機時,云主機A和云主機B相互之間無法感知另一個云主機已使用的存儲空間,云主機A可能會對該云硬盤上已被云主機B使用的空間進行重復分配,從而發生空間分配沖突導致數據出錯的情況。
比如,將一塊共享云硬盤格式化為ext3文件系統后掛載給云主機A和云主機B,云主機A在某一時刻向云硬盤上的區域R和區域G寫了文件系統的元數據,下一時刻云主機B又向區域E和區域G寫了自己的元數據,則云主機A寫入的數據將會被替換,隨后讀取區域G的元數據時即會出現錯誤。
- 數據緩存導致數據不一致
當一個共享云硬盤同時掛載給兩臺云主機時,若云主機A上的應用讀取區域R和區域G的數據后將數據記錄在緩存中,此時云主機A上的其他進程或線程訪問該部分數據時,直接訪問緩存中的數據即可。如果此時云主機B上的應用修改區域R和區域G中的數據,則云主機A上的應用無法感知該部分數據已被修改,依舊從緩存中讀取數據,用戶通過云主機A無法看到已修改的新數據。
比如,將一塊共享云硬盤格式化為ext3文件系統后掛載給云主機A和云主機B,兩臺云主機均將文件系統的元數據進行了緩存,此后用戶在云主機A中創建了一個新的文件F,但云主機B并無法感知該修改,依舊從緩存中讀取數據,導致用戶在云主機B中無法看到文件F。
如果您將共享云硬盤掛載到多個云主機,首先請根據不同的應用選擇不同的磁盤模式,包括VBD和SCSI。SCSI類型的共享云硬盤支持SCSI鎖,但是需要在云主機系統中安裝驅動并保證鏡像在兼容性列表中。
關于使用共享云硬盤的更多詳細信息,請參見管理共享云硬盤。
說明
直接將共享云硬盤掛載給多臺云主機無法實現文件共享功能,如需在多臺云主機之間共享文件,需要搭建共享文件系統或類似的集群管理系統。