歡迎光臨
每天分享高質量文章

針對靜默資料錯誤,如何採用DIX和DIF保證資料一致性?

      靜默資料破壞問題是一直存在儲存系統中最難解決的資料一致性問題之一,無論是傳統多控、分佈式儲存,還是公有雲儲存。對儲存系統設計和開發人員來講,資料一致性問題解決能否解決決定著儲存系統是否可以商用。到這個問題一直沒有成為討論的技術焦點,直到最近騰訊雲事件持續熱化以後,“資料一致性”問題成成為焦點出現在大眾視野。



什麼是靜默資料破壞?


     經常跟資料打交道的人都應該知道,資料在儲存系統傳輸中,經過了多個部件、多種傳輸通道和複雜的軟體處理過程,其中任意一個環節發生錯誤都可能會導致資料錯誤。但是這種錯誤一般無法被立即檢測出來,而是後續通過應用在訪問資料過程中,才發現資料已經出錯,這種資料很難在資料發生錯誤那一刻被檢查出來的錯誤,我們稱為靜默資料破壞,即Silent Data Corruption


靜默資料破壞為什麼難檢測?


      我們知道硬碟最核心的使命是正確的存入資料、正確的讀出資料,在出錯時及時丟擲異常告警。包括硬體錯誤、韌體 BUG 或者軟體 BUG、供電問題、介質損壞等常規的這些問題都能夠正常被捕獲丟擲告警或異常,但靜默資料破壞表現是資料處理都是正常的,直到你使用的時候才發現資料是錯誤的、損壞的。


靜默資料破壞產生原因


      資料產生靜默資料破壞的原因有很多種,但大致可以歸結為以下幾類。

  • 硬體錯誤:記憶體、CPU、硬碟、資料傳輸鏈路等

  • Firmware錯誤:HBA、硬碟等

  • 軟體bug:系統軟體、操作系統、應用程式等

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

資料一致性標準和組織


      根據資料處理的路徑,資料一致性修複可以在應用,中間件,儲存層等來進行修複,目前有大量的介紹應用層修複的文章,請大家搜索參考。今天筆者講從傳統儲存、網絡和中間件層出發,基於很早分享過一篇文章,談談端到端的資料一致性解決方案。


      在2007年,由Emulex、Oracle、LSI、希捷成立了DII (Data Integrity Initiative),SNIA建立了DITWG(SNIA Data Integrity Working Group)。他們主要關註兩個技術:

  • T10 Protection Information—DIF

  • Data Integrity Extensions—DIX

      T10標準是通過對每個資料塊加入保護信息(PI,Protection Information)作為一致性標識,T10曾被稱作資料完整性域(DIF,Data Integrity Field)的方法來保護資料完整性。在每個邏輯扇區擴充了8位元組的保護信息用來保證資料一致性8位元組包括2位元組的Logical Block Guard,2位元組的Logical Block Application Tag和4位元組的Logical Block Reference Tag


      T10 PI只包含了從主機HBA卡通過儲存陣列到硬碟的資料保護,這就需要另一種機制來延伸資料保護範圍。


      DIX為了延伸DIF的保護範圍。將資料完整性保護擴充到了應用層到HBA。DIX使用和T10 PI一樣的8位元組資料完整性信息作為資料校驗欄位。不同的是,DIX中使用了IP Checksum作為Logical Block Guard,降低主機CPU的計算開銷。

      DIX+DIF可以實現從應用到硬碟的端到端資料保護。DIX保證應用、HBA卡的資料完整性,T10 PI(DIF)保證HBA 、陣列和硬碟的資料完整性

DIX和DIF資料讀寫流程


      資料完整性額外添加的8位元組校驗資料分若干段,在儲存側叫DIF,後改名為T10 PI;在主機側叫DIX。寫資料時,主機HBA總線配接器、陣列標的器芯片或者其它組件根據用戶資料生成 8位元組PI,資料傳輸過程中會經過檢查點,校驗資料和PI是否匹配,如果發現錯誤,向上傳回錯誤,如果沒有錯誤,則繼續向下傳輸,最終寫入硬碟。

      寫資料流程:當資料寫到主機記憶體的時候,Oracle ASM library會對每512位元組資料增加8位元組DIX校驗,8位元組校驗會隨IO請求一起,穿過OS,到達HBA卡驅動;HBA卡進行DIX校驗檢查後刪除DIX校驗,並生成8位元組PI校驗和資料一起發送給陣列,陣列校驗資料完整性,並將資料發送到硬碟。

      讀資料流程:從硬碟讀出資料和T10 PI並校驗完整性。若發現錯誤,則通過RAID重建修複資料,如果沒有錯誤則繼續向上傳輸。HBA進行T10 PI校驗後刪除T10 PI,並生成DIX保護信息傳回主機。DIX保護信息會隨IO請求一起,穿過OS,傳回應用層。ASM Library對資料和DIX保護信息進行校驗。

支持端到端一致性必要條件


      要使用資料一致性特性,需要操作系統、中間件、HBA卡和儲存支持相應的標準規範。首先陣列需要支持標準的T10 PI,目前很多儲存設備都支持該標準。當然,即使上層不支持DIX,儲存也可支持並採用T10 PI標準,實現儲存側資料一致性保護。


     目前支持DIX標準的上層組件(資料庫、操作系統和HBA),其配置要求和兼容性如下(兼容性會不斷更新)。 


  • 資料庫:Oracle 11g級以上。

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

  • HBA:Emulex、Qlogic特定型號的FC HBA卡 

支持DIX的儲存廠商


      由於DIX和P10在企業Oracle資料庫應用比較廣泛,基於Oracle在資料庫領域的廣泛應用和影響力,目前主流的儲存廠商都支持該特性規範,目前(不完全統計)具備該規範的產品包括但不限於如下:

  • EMC VNX系列支持自定義T10 PI、VMAX支持標準的T10 PI和DIX

  • HDS HUS系列和HDS VSP支持T10 PI

  • IBM DS8000和DS5000某些特定型號支持T10 PI

  • HP P10000支持標準的T10 PI

  • 華為 OceanStor 18000和V3/V5全系列支持T10 PI。

檔案系統是否要DIF


      需要提及一點的是,T10 PI需要磁盤提供520扇區來支持(512用來存放資料,8位元組用來儲存T10 PI校驗資料),希捷支持這種磁盤。一般情況下,檔案系統不需要DIF,原因是檔案系統通過元資料管理資料,元資料不斷變化,容易造成IO的頁面資料佈局不斷變化,針對檔案,資料庫和網卡廠商相應支持力度不足,並未形成類似規範和標準。


文章鏈接: 

讓DIX和DIF說說啥叫端到端資料一致性

溫馨提示:

請搜索“ICT_Architect”“掃一掃”二維碼關註公眾號,點擊原文鏈接獲取電子書詳情

求知若渴, 虛心若愚

赞(0)

分享創造快樂