華為云計算 云知識 共享云硬盤的數(shù)據(jù)共享原理和常見的使用誤區(qū)
共享云硬盤的數(shù)據(jù)共享原理和常見的使用誤區(qū)

共享云硬盤本質(zhì)是將同一塊云硬盤掛載給多個 云服務(wù)器 使用,類似于將一塊物理硬盤掛載給多臺物理服務(wù)器,每一臺服務(wù)器均可以對該硬盤任意區(qū)域的數(shù)據(jù)進(jìn)行讀取和寫入。如果這些服務(wù)器之間沒有相互約定讀寫數(shù)據(jù)的規(guī)則,比如讀寫次序和讀寫意義,將會導(dǎo)致這些服務(wù)器讀寫數(shù)據(jù)時相互干擾或者出現(xiàn)其他不可預(yù)知的錯誤。

共享云硬盤使用場景

共享云硬盤為云服務(wù)器提供共享訪問的塊存儲設(shè)備,但其本身并不具備集群管理能力,因此需要您自行部署集群系統(tǒng)來管理共享云硬盤,如企業(yè)應(yīng)用中常見的Windows MSCS集群、Linux RHCS集群、Veritas VCS集群和CFS集群應(yīng)用等。

如果在使用共享云硬盤過程中未通過集群系統(tǒng)進(jìn)行管理,可能會導(dǎo)致以下問題:

讀寫沖突導(dǎo)致數(shù)據(jù)不一致

當(dāng)一個共享云硬盤同時掛載給兩臺云服務(wù)器時,云服務(wù)器 A和云服務(wù)器 B相互之間無法感知另一個云服務(wù)器已使用的存儲空間,云服務(wù)器 A可能會對該云硬盤上已被云服務(wù)器 B使用的空間進(jìn)行重復(fù)分配,從而發(fā)生空間分配沖突導(dǎo)致數(shù)據(jù)出錯的情況。

比如,將一塊共享云硬盤格式化為ext3文件系統(tǒng)后掛載給云服務(wù)器 A和云服務(wù)器 B,云服務(wù)器 A在某一時刻向云硬盤上的區(qū)域 R和區(qū)域 G寫了文件系統(tǒng)的元數(shù)據(jù),下一時刻云服務(wù)器 B又向區(qū)域 E和區(qū)域 G寫了自己的元數(shù)據(jù),則云服務(wù)器 A寫入的數(shù)據(jù)將會被替換,隨后讀取區(qū)域 G的元數(shù)據(jù)時即會出現(xiàn)錯誤。

數(shù)據(jù)緩存導(dǎo)致數(shù)據(jù)不一致

當(dāng)一個共享云硬盤同時掛載給兩臺云服務(wù)器時,若云服務(wù)器 A上的應(yīng)用讀取區(qū)域 R和區(qū)域 G的數(shù)據(jù)后將數(shù)據(jù)記錄在緩存中,此時云服務(wù)器 A上的其他進(jìn)程或線程訪問該部分?jǐn)?shù)據(jù)時,直接訪問緩存中的數(shù)據(jù)即可。如果此時云服務(wù)器 B上的應(yīng)用修改區(qū)域 R和區(qū)域 G中的數(shù)據(jù),則云服務(wù)器 A上的應(yīng)用無法感知該部分?jǐn)?shù)據(jù)已被修改,依舊從緩存中讀取數(shù)據(jù),用戶通過云服務(wù)器 A無法看到已修改的新數(shù)據(jù)。

比如,將一塊共享云硬盤格式化為ext3文件系統(tǒng)后掛載給云服務(wù)器 A和云服務(wù)器 B,兩臺云服務(wù)器均將文件系統(tǒng)的元數(shù)據(jù)進(jìn)行了緩存,此后用戶在云服務(wù)器 A中創(chuàng)建了一個新的文件 F,但云服務(wù)器 B并無法感知該修改,依舊從緩存中讀取數(shù)據(jù),導(dǎo)致用戶在云服務(wù)器 B中無法看到文件F。

如果您將共享云硬盤掛載到多個云服務(wù)器,首先請根據(jù)不同的應(yīng)用選擇不同的磁盤模式,包括VBD和SCSI。SCSI類型的共享云硬盤支持SCSI鎖,但是需要在云服務(wù)器系統(tǒng)中安裝驅(qū)動并保證 鏡像 在兼容性列表中。