自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

針對靜默數(shù)據(jù)錯誤,如何采用DIX和DIF保證數(shù)據(jù)一致性?

存儲 存儲軟件
靜默數(shù)據(jù)破壞問題是一直存在存儲系統(tǒng)中最難解決的數(shù)據(jù)一致性問題之一,無論是傳統(tǒng)多控、分布式存儲,還是公有云存儲。對存儲系統(tǒng)設(shè)計和開發(fā)人員來講,數(shù)據(jù)一致性問題解決能否解決決定著存儲系統(tǒng)是否可以商用。到這個問題一直沒有成為討論的技術(shù)焦點,直到最近騰訊云事件持續(xù)熱化以后,“數(shù)據(jù)一致性”問題成成為焦點出現(xiàn)在大眾視野。

靜默數(shù)據(jù)破壞問題是一直存在存儲系統(tǒng)中最難解決的數(shù)據(jù)一致性問題之一,無論是傳統(tǒng)多控、分布式存儲,還是公有云存儲。對存儲系統(tǒng)設(shè)計和開發(fā)人員來講,數(shù)據(jù)一致性問題解決能否解決決定著存儲系統(tǒng)是否可以商用。到這個問題一直沒有成為討論的技術(shù)焦點,直到最近騰訊云事件持續(xù)熱化以后,“數(shù)據(jù)一致性”問題成成為焦點出現(xiàn)在大眾視野。

什么是靜默數(shù)據(jù)破壞?

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

靜默數(shù)據(jù)破壞為什么難檢測?

我們知道硬盤最核心的使命是正確的存入數(shù)據(jù)、正確的讀出數(shù)據(jù),在出錯時及時拋出異常告警。包括硬件錯誤、固件 BUG 或者軟件 BUG、供電問題、介質(zhì)損壞等常規(guī)的這些問題都能夠正常被捕獲拋出告警或異常,但靜默數(shù)據(jù)破壞表現(xiàn)是數(shù)據(jù)處理都是正常的,直到你使用的時候才發(fā)現(xiàn)數(shù)據(jù)是錯誤的、損壞的。

[[240003]]

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

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

  • 硬件錯誤:內(nèi)存、CPU、硬盤、數(shù)據(jù)傳輸鏈路等
  • Firmware錯誤:HBA、硬盤等
  • 軟件bug:系統(tǒng)軟件、操作系統(tǒng)、應(yīng)用程序等
  • 其他因素:如噪聲、電磁等原因。

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

根據(jù)數(shù)據(jù)處理的路徑,數(shù)據(jù)一致性修復(fù)可以在應(yīng)用,中間件,存儲層等來進行修復(fù),目前有大量的介紹應(yīng)用層修復(fù)的文章,請大家搜索參考。今天筆者講從傳統(tǒng)存儲、網(wǎng)絡(luò)和中間件層出發(fā),基于很早分享過一篇文章,談?wù)劧说蕉说臄?shù)據(jù)一致性解決方案。

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

  • T10 Protection Information—DIF
  • Data Integrity Extensions—DIX

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

T10 PI只包含了從主機HBA卡通過存儲陣列到硬盤的數(shù)據(jù)保護,這就需要另一種機制來延伸數(shù)據(jù)保護范圍。

DIX為了延伸DIF的保護范圍。將數(shù)據(jù)完整性保護擴充到了應(yīng)用層到HBA。DIX使用和T10 PI一樣的8字節(jié)數(shù)據(jù)完整性信息作為數(shù)據(jù)校驗字段。不同的是,DIX中使用了IP Checksum作為Logical Block Guard,降低主機CPU的計算開銷。

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

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

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

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

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

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

要使用數(shù)據(jù)一致性特性,需要操作系統(tǒng)、中間件、HBA卡和存儲支持相應(yīng)的標(biāo)準(zhǔn)規(guī)范。首先陣列需要支持標(biāo)準(zhǔn)的T10 PI,目前很多存儲設(shè)備都支持該標(biāo)準(zhǔn)。當(dāng)然,即使上層不支持DIX,存儲也可支持并采用T10 PI標(biāo)準(zhǔn),實現(xiàn)存儲側(cè)數(shù)據(jù)一致性保護。

目前支持DIX標(biāo)準(zhǔn)的上層組件(數(shù)據(jù)庫、操作系統(tǒng)和HBA),其配置要求和兼容性如下(兼容性會不斷更新)。 

  • 數(shù)據(jù)庫:Oracle 11g級以上。
  • OS:Oracle Linux 5 or 6 running the UEK2-200 kernel。
  • HBA:Emulex、Qlogic特定型號的FC HBA卡 

支持DIX的存儲廠商

由于DIX和P10在企業(yè)Oracle數(shù)據(jù)庫應(yīng)用比較廣泛,基于Oracle在數(shù)據(jù)庫領(lǐng)域的廣泛應(yīng)用和影響力,目前主流的存儲廠商都支持該特性規(guī)范,目前(不完全統(tǒng)計)具備該規(guī)范的產(chǎn)品包括但不限于如下:

  • EMC VNX系列支持自定義T10 PI、VMAX支持標(biāo)準(zhǔn)的T10 PI和DIX
  • HDS HUS系列和HDS VSP支持T10 PI
  • IBM DS8000和DS5000某些特定型號支持T10 PI
  • HP P10000支持標(biāo)準(zhǔn)的T10 PI
  • 華為 OceanStor 18000和V3/V5全系列支持T10 PI。

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

需要提及一點的是,T10 PI需要磁盤提供520扇區(qū)來支持(512用來存放數(shù)據(jù),8字節(jié)用來存儲T10 PI校驗數(shù)據(jù)),希捷支持這種磁盤。一般情況下,文件系統(tǒng)不需要DIF,原因是文件系統(tǒng)通過元數(shù)據(jù)管理數(shù)據(jù),元數(shù)據(jù)不斷變化,容易造成IO的頁面數(shù)據(jù)布局不斷變化,針對文件,數(shù)據(jù)庫和網(wǎng)卡廠商相應(yīng)支持力度不足,并未形成類似規(guī)范和標(biāo)準(zhǔn)。

責(zé)任編輯:武曉燕 來源: 架構(gòu)師技術(shù)聯(lián)盟
相關(guān)推薦

2023-05-26 07:34:50

RedisMySQL緩存

2024-12-26 15:01:29

2023-09-07 08:11:24

Redis管道機制

2025-03-27 08:20:54

2021-12-14 07:15:57

MySQLRedis數(shù)據(jù)

2024-08-20 16:13:52

2024-01-22 08:52:00

AQS雙異步數(shù)據(jù)一致性

2024-07-04 12:36:50

2023-09-15 14:24:54

ByteHouseClickHouse開源

2022-02-17 21:04:27

數(shù)據(jù)庫MysqlRedis

2022-12-05 08:24:32

mongodb數(shù)據(jù)庫數(shù)據(jù)

2022-08-23 07:46:45

數(shù)據(jù)一致性數(shù)據(jù)庫

2022-09-15 10:37:46

MySQLRedis數(shù)據(jù)一致性

2019-08-30 12:46:10

并發(fā)扣款查詢SQL

2023-12-11 12:27:31

并發(fā)Zookeeper數(shù)據(jù)

2025-04-27 08:52:21

Redis數(shù)據(jù)庫緩存

2023-12-19 09:43:43

MongoDB并發(fā)

2021-03-04 06:49:53

RocketMQ事務(wù)

2021-10-14 10:00:46

MYSQL開發(fā)數(shù)據(jù)

2022-10-19 12:22:53

并發(fā)扣款一致性
點贊
收藏

51CTO技術(shù)棧公眾號