突破存儲(chǔ)跨中心雙活方案設(shè)計(jì)階段難點(diǎn)之三:數(shù)據(jù)一致性風(fēng)險(xiǎn)
跨中心的雙活存儲(chǔ)數(shù)據(jù)一致性如何保障?
一方面,當(dāng)寫(xiě)入數(shù)據(jù)時(shí),在復(fù)制過(guò)程中,數(shù)據(jù)傳遞是在緩存中進(jìn)行的,這樣做的好處是提升了性能,問(wèn)題是當(dāng)出現(xiàn)控制器節(jié)點(diǎn)異常宕機(jī)事件時(shí),就會(huì)導(dǎo)致緩存內(nèi)的數(shù)據(jù)不能寫(xiě)入存儲(chǔ)中,從而造成數(shù)據(jù)的不一致,這時(shí)有沒(méi)有保障單個(gè)存儲(chǔ)數(shù)據(jù)一致性的措施?另外一方面,兩個(gè)站點(diǎn)的存儲(chǔ)之間的數(shù)據(jù)一致性,從緩存層、底層數(shù)據(jù)層又是如何保障的?
解析和解答
鄧毓 某農(nóng)信社資深骨干工程師
***個(gè)問(wèn)題:前端節(jié)點(diǎn)寫(xiě)緩存與后端存儲(chǔ)間的數(shù)據(jù)一致性如何保障?
存儲(chǔ)跨中心雙活中的單個(gè)存儲(chǔ)架構(gòu)分為三種:
1.物理存儲(chǔ)的內(nèi)部雙控制器
比如V5000/V7000/V9000 HYPERSWAP,寫(xiě)存儲(chǔ)的操作也就是寫(xiě)緩存的過(guò)程,寫(xiě)了一個(gè)控制器,控制器也會(huì)將緩存數(shù)據(jù)同步至另一控制器的緩存,只有當(dāng)真正同步完,這次的寫(xiě)操作才算完成,當(dāng)寫(xiě)緩存達(dá)到水位線后,會(huì)將寫(xiě)緩存刷入到磁盤(pán)組中,當(dāng)一個(gè)控制器異常宕機(jī)時(shí),IO HANG住一小段時(shí)間,另一控制器將接管,緩存數(shù)據(jù)也不會(huì)因此丟失,一致性得到保障;單控制器時(shí),寫(xiě)緩存被禁止,之前的緩存被刷入后端存儲(chǔ),即使這時(shí)這個(gè)控制器也異常宕機(jī),后端磁盤(pán)的數(shù)據(jù)完整性和一致性也得到了保障;如果不幸兩個(gè)控制器的電源同時(shí)斷電了,這時(shí)寫(xiě)緩存數(shù)據(jù)還未及時(shí)刷入磁盤(pán)組,不用怕,幾乎所有存儲(chǔ)都會(huì)考慮到這一點(diǎn),都有專(zhuān)門(mén)的電池模塊維持供電幾分鐘,保證緩存數(shù)據(jù)能夠順利落到磁盤(pán)組當(dāng)中。
2.物理存儲(chǔ)+存儲(chǔ)虛擬化網(wǎng)關(guān)(有寫(xiě)緩存)
比如SVC ESC/HYPERSWAP,NETAPP MCC(叫寫(xiě)日志),這種架構(gòu)也就是相當(dāng)于在物理存儲(chǔ)前端又加了一道控制器,也存在寫(xiě)緩存,相當(dāng)于擴(kuò)大了后端物理存儲(chǔ)的緩存容量,寫(xiě)操作要先寫(xiě)入SVC節(jié)點(diǎn),再同步至另一SVC節(jié)點(diǎn),只有完全同步成功,才算做是一個(gè)完整的寫(xiě)周期,后面的操作也是等待寫(xiě)緩存達(dá)到水位線刷后端存儲(chǔ)。佑了這種機(jī)制的保障,存儲(chǔ)虛擬化網(wǎng)關(guān)的緩存與后端物理存儲(chǔ)的數(shù)據(jù)完整性和一致性得到保障,無(wú)論是單SVC節(jié)點(diǎn)故障,另一節(jié)點(diǎn)緩存數(shù)據(jù)冗余,寫(xiě)緩存被禁止,所有緩存刷入后端存儲(chǔ),還是SVC的電源斷電,SVC有專(zhuān)門(mén)的UPS供電模塊保障寫(xiě)緩存及時(shí)刷入后端存儲(chǔ),都能完整的保障數(shù)據(jù)的完整性和一致性。這里不再贅述。
3.物理存儲(chǔ)+存儲(chǔ)虛擬化網(wǎng)關(guān)(無(wú)寫(xiě)緩存)
比如EMC VPLEX METRO,它只有讀緩存,寫(xiě)緩存還是由后端的物理存儲(chǔ)提供,所以該問(wèn)題還是和前面說(shuō)的類(lèi)似的保障機(jī)制。
第二個(gè)問(wèn)題:兩個(gè)站點(diǎn)的雙活存儲(chǔ)間的數(shù)據(jù)一致性如何保障?
這里分兩種方式來(lái)闡述這個(gè)問(wèn)題:
1.一種是兩個(gè)站點(diǎn)的主機(jī)識(shí)別的是相同的VOLUME
比如:SVC ESC、EMC VPLEX、HDS GAD等,兩個(gè)站點(diǎn)的主機(jī)對(duì)這一個(gè)VOLUME寫(xiě)操作時(shí),數(shù)據(jù)被刷入兩個(gè)鏡像的后端存儲(chǔ),這有兩個(gè)存儲(chǔ)都寫(xiě)完成返回,才算一個(gè)完整的緩存刷后端存儲(chǔ)的寫(xiě)周期,這時(shí)兩個(gè)存儲(chǔ)從數(shù)據(jù)塊角度來(lái)說(shuō),是一致的,一個(gè)站點(diǎn)或者存儲(chǔ)故障,另一個(gè)站點(diǎn)的存儲(chǔ)是可以接管,而不會(huì)造成數(shù)據(jù)丟失。
2.另一種是兩個(gè)站點(diǎn)的主機(jī)識(shí)別的是不同的VOLUME
比如:SVC V7000/V5000 HYPERSWAP、NET APP MCC等,由于兩個(gè)站點(diǎn)的主機(jī)識(shí)別的不是同一個(gè)VOLUME,必然存在存儲(chǔ)或者存儲(chǔ)虛擬化網(wǎng)關(guān)的VOLUME與VOLUME的同步復(fù)制技術(shù),HYPERSWAP有METRO MIRROR,MCC有Syncmirror,它們的技術(shù)共同點(diǎn)是復(fù)制技術(shù)的一致性校驗(yàn)機(jī)制,更高級(jí)的有以多個(gè)卷為單位的卷組一致性校驗(yàn)機(jī)制,來(lái)保障跨站點(diǎn)的兩個(gè)卷/卷組的一致性,在某站點(diǎn)所有控制器或者站點(diǎn)完全故障時(shí),另一站點(diǎn)有完整的、一致的存儲(chǔ)可以接管。