溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

DIX和DIF該訴你,什么叫端到端數(shù)據(jù)一致性

發(fā)布時(shí)間:2020-07-08 05:45:19 來源:網(wǎng)絡(luò) 閱讀:9602 作者:hardywang 欄目:關(guān)系型數(shù)據(jù)庫

架構(gòu)師技術(shù)聯(lián)盟

DIX和DIF該訴你,什么叫端到端數(shù)據(jù)一致性

我們跟數(shù)據(jù)打交道的人都應(yīng)該知道,數(shù)據(jù)在存儲(chǔ)系統(tǒng)傳輸中,經(jīng)過了多個(gè)部件、多種傳輸通道和復(fù)雜的軟件處理過程,其中任意一個(gè)環(huán)節(jié)發(fā)生錯(cuò)誤都可能會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)誤。但是這種錯(cuò)誤一般無法被立即檢測(cè)出來,而是后續(xù)通過應(yīng)用在訪問數(shù)據(jù)過程中,才發(fā)現(xiàn)數(shù)據(jù)已經(jīng)出錯(cuò),這種數(shù)據(jù)很難在數(shù)據(jù)發(fā)生錯(cuò)誤那一刻被檢查出來的錯(cuò)誤,我們稱為靜默數(shù)據(jù)破壞,即Silent Data Corruption。

靜默數(shù)據(jù)破壞產(chǎn)生原因

數(shù)據(jù)產(chǎn)生靜默數(shù)據(jù)破壞的原因有很多種,但大致可以歸結(jié)為以下幾類。

  • 硬件錯(cuò)誤:內(nèi)存、CPU、硬盤、數(shù)據(jù)傳輸鏈路等

  • Firmware錯(cuò)誤:HBA、硬盤等

  • 軟件bug:系統(tǒng)軟件、操作系統(tǒng)、應(yīng)用程序等

  • 其他因素:如噪聲、電磁等原因。

數(shù)據(jù)一致性標(biāo)準(zhǔn)和組織

在2007年,由Emulex、Oracle、LSI、希捷成立了DII (Data Integrity Initiative)。由SNIA建立了DITWG(SNIA Data Integrity Working Group)。他們主要關(guān)注兩個(gè)技術(shù),T10 Protection Information—DIF和Data Integrity Extensions—DIX。

T10標(biāo)準(zhǔn)是通過對(duì)每個(gè)數(shù)據(jù)塊加入保護(hù)信息(PI,Protection Information),曾被稱作數(shù)據(jù)完整性域(DIF,Data Integrity Field)的方法來保護(hù)數(shù)據(jù)完整性。在每個(gè)邏輯扇區(qū)擴(kuò)充了8字節(jié)的保護(hù)信息用來保證數(shù)據(jù)一致性,8字節(jié)包括2字節(jié)的Logical Block Guard,2字節(jié)的Logical Block Application Tag和4字節(jié)的Logical Block Reference Tag。

T10 PI只包含了從主機(jī)HBA卡通過存儲(chǔ)陣列到硬盤的數(shù)據(jù)保護(hù),DIX為了延伸DIF的保護(hù)范圍。將數(shù)據(jù)完整性保護(hù)擴(kuò)充到了應(yīng)用層到HBA。DIX使用和T10 PI一樣的8字節(jié)數(shù)據(jù)完整性信息作為數(shù)據(jù)校驗(yàn)字段。不同的是,DIX中使用了IP Checksum作為L(zhǎng)ogical Block Guard,降低主機(jī)CPU的計(jì)算開銷。

DIX和DIF該訴你,什么叫端到端數(shù)據(jù)一致性

DIX+DIF可以實(shí)現(xiàn)從應(yīng)用到硬盤的端到端數(shù)據(jù)保護(hù)。DIX保證應(yīng)用、HBA卡的數(shù)據(jù)完整性,T10 PI(DIF)保證HBA 、陣列和硬盤的數(shù)據(jù)完整性。

DIX和DIF數(shù)據(jù)讀寫流程

數(shù)據(jù)完整性額外添加的8字節(jié)校驗(yàn)數(shù)據(jù)分若干段,在存儲(chǔ)側(cè)叫DIF,后改名為T10 PI;在主機(jī)側(cè)叫DIX。寫數(shù)據(jù)時(shí),主機(jī)HBA總線適配器、陣列目標(biāo)器芯片或者其它組件根據(jù)用戶數(shù)據(jù)生成 8字節(jié)PI,數(shù)據(jù)傳輸過程中會(huì)經(jīng)過檢查點(diǎn),校驗(yàn)數(shù)據(jù)和PI是否匹配,如果發(fā)現(xiàn)錯(cuò)誤,向上返回錯(cuò)誤,如果沒有錯(cuò)誤,則繼續(xù)向下傳輸,最終寫入硬盤。

寫數(shù)據(jù)流程:當(dāng)數(shù)據(jù)寫到主機(jī)內(nèi)存的時(shí)候,Oracle ASM library會(huì)對(duì)每512字節(jié)數(shù)據(jù)增加8字節(jié)DIX校驗(yàn),8字節(jié)校驗(yàn)會(huì)隨IO請(qǐng)求一起,穿過OS,到達(dá)HBA卡驅(qū)動(dòng);HBA卡進(jìn)行DIX校驗(yàn)檢查后刪除DIX校驗(yàn),并生成8字節(jié)PI校驗(yàn)和數(shù)據(jù)一起發(fā)送給陣列,陣列校驗(yàn)數(shù)據(jù)完整性,并將數(shù)據(jù)發(fā)送到硬盤。

讀數(shù)據(jù)流程:從硬盤讀出數(shù)據(jù)和T10 PI并校驗(yàn)完整性。若發(fā)現(xiàn)錯(cuò)誤,則通過RAID重建修復(fù)數(shù)據(jù),如果沒有錯(cuò)誤則繼續(xù)向上傳輸。HBA進(jìn)行T10 PI校驗(yàn)后刪除T10 PI,并生成DIX保護(hù)信息返回主機(jī)。DIX保護(hù)信息會(huì)隨IO請(qǐng)求一起,穿過OS,返回應(yīng)用層。ASM Library對(duì)數(shù)據(jù)和DIX保護(hù)信息進(jìn)行校驗(yàn)。

支持DIX的必要條件

要使用數(shù)一致性特性,首先陣列需要支持標(biāo)準(zhǔn)的T10 PI,及時(shí)不支持DIX,也可以在存儲(chǔ)上支持T10 PI; 其次需要特定配置的數(shù)據(jù)庫、操作系統(tǒng)和HBA等組件。

  • 數(shù)據(jù)庫:Oracle 11g級(jí)以上。

  • OS:Oracle Linux 5 or 6 running the UEK2-200 kernel。

  • HBA:Emulex、Qlogic特定型號(hào)的FC HBA卡

支持DIX的存儲(chǔ)廠商

由于DIX和P10在企業(yè)Oracle數(shù)據(jù)庫應(yīng)用比較廣泛,且是存儲(chǔ)一大亮點(diǎn),所以主流的存儲(chǔ)廠商都支持該特性,如EMC VNX系列支持自定義PI、VMAX支持標(biāo)準(zhǔn)的T10 PI,且支持DIX;HDS HUS系列支持自定義PI、HDS VSP支持PI;IBM DS8000支持標(biāo)準(zhǔn)的T10 PI,DS5000某些特定型號(hào)支持PI;HP P10000支持標(biāo)準(zhǔn)的T10 PI,華為 OceanStor 18000和V3全系列。

文件系統(tǒng)是否要DIF

需要提及一點(diǎn)的是,T10 PI需要磁盤提供520扇區(qū)來支持(512用來存放數(shù)據(jù),8字節(jié)用來存儲(chǔ)T10 PI校驗(yàn)數(shù)據(jù)),希捷支持這種磁盤。一般文件系統(tǒng)不需要DIF,原因是文件系統(tǒng)通過元數(shù)據(jù)管理數(shù)據(jù),會(huì)造成IO的頁面數(shù)據(jù)布局不斷變化,且數(shù)據(jù)庫和網(wǎng)卡廠商相應(yīng)力度不足,并未形成類似規(guī)范和標(biāo)準(zhǔn)。搜索“ICT_Architect”加入微信公眾號(hào)“架構(gòu)師技術(shù)聯(lián)盟”獲取更多精彩內(nèi)容。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI