資料毀損 Data Scrubbing 資料洗滌 RAID 5

整合Data Scrubbing技術 防制無聲資料毀損

活用資料洗滌機制 確保系統運行無礙

2019-08-13
寫入硬碟的資料是否永遠正確,那可不一定!資料毀損會在不知不覺中發生,例如某些資料有可能存在於硬碟上,卻莫名地產生位元組資料改變。本文將透過Data Scrubbing技術,降低這一類無聲資料毀損風險發生的機率,並確保儲存系統正常運作。

 

資料洗滌(Data Scrubbing)為檢查資料量及修正資料不一致的過程。隨著時間推移,有些資料可能會因為硬體因素或其他原因,因而傷害資料完整性(Data Integrity),更甚者,會在沒有示警的狀況下默默產生資料毀損。

舉例來說,圖1中的兩張圖片,就是原檔和出現位元衰減毀損檔的比較,僅僅幾個位元的改動,也可能發生嚴重的資料損毀。接著所要分享的,即是以Synology的機制為例,說明如何利用Data Scrubbing防止資料毀損。在Synology Data Scrubbing機制中,包含以下兩件事情:RAID Scrubbing和Btrfs Scrubbing。

圖1  原檔與出現位元衰減毀損檔的比較。

在介紹什麼是RAID Scrubbing之前,先說明何謂RAID。RAID的全名是「獨立磁碟冗餘陣列」(Redundant Array of Independent Disks),簡單來說,就是結合多塊獨立的硬碟,組合成一個硬碟組,用於容錯和進行資料冗餘。RAID有多種形態,RAID Scrubbing則在RAID 5/RAID 6系列的RAID上支援,以下簡短介紹RAID 5。

了解RAID 5運作

RAID 5的基本機制仰賴至少三個硬碟,並利用資料區塊的奇偶校驗(Parity Striping)進行寫入與讀取。

如圖2所示,當寫入一塊序列型資料到陣列時,RAID 5會依序寫入A1、A2、A3、B1、B2和B3。同理,RAID也會依序讀取數據。那Pa、Pb和Pc又是做什麼的呢?它們是分布在硬碟的奇偶校驗塊。當寫入A1、A2和A3時,RAID 5會使用下列的XOR位元運算子計算Pa,並寫入對應的區塊:

Pa = A1 (XOR) A2 (XOR) A3 (函數1)

假設其中一個硬碟毀損,RAID 5可以藉由使用Pa和其他兩個硬碟的內容,修復消失的資料。假設包含A2資料的硬碟毀損,那麼可透過下列的XOR計算加以重建資料:

A2 = A1 (XOR) A3 (XOR) Pa (函數2)

這就是RAID 5透過冗餘功能,所提供最多一顆硬碟損毀而資料不受影響的保護。

認識RAID Scrubbing

在初步了解RAID 5的特性後,接著介紹什麼是RAID Scrubbing。RAID Scrubbing可掃描陣列中的所有內容,以確保所有Parity Stripe滿足函數1;若不滿足的話,則會利用函數2予以修復,直到所有的值都達成一致。

「但如果我定時進行RAID Data Scrubbing,我的資料就可以永保完整嗎?」遺憾的是,答案是否定的。因為,無法確保寫入硬碟的資料永遠正確。有些資料毀損會在不知不覺中發生,稱之為無聲資料毀損,亦即某些資料有可能會存在於硬碟上,卻莫名地產生位元組資料改變。這種狀況可能肇因於諸多原因,包括硬碟錯誤和電磁干擾等等。

RAID Scrubbing雖能確保存入的資料一致性,但卻無法防禦無聲資料損毀。假設今天要透過A1、A2和A3(如果圖2的函數1所示)重建Pa,但是如果A1、A2和A3其中一筆毀損,那麼運作函數就會出錯,只會讀取到錯誤的內容,導致整個過程每況愈下。

圖2  RAID 5運作示意圖。

善用Btrfs Data Scrubbing

首先,Btrfs檔案系統可以將兩份中繼資料儲存於一個儲存空間,並計算其相關的檢查碼,而Btrfs Data Scrubbing正是利用這個特性來做到自動的資料修復。Btrfs Data Scrubbing利用檢查碼機制(Checksum Mechanism)檢查儲存在Btrfs檔案系統的資料量。如果監測到任何資料和檢查碼不一致,系統便會試圖使用冗餘備份修復資料。

此項功能僅需要使用者在建立新的共用資料夾時開啟資料檢查碼功能,如圖3所示,Btrfs檔案系統就會為每個寫入的檔案計算資料檢查碼,並用另一組總和檢查碼(Metadata Checksum)保護資料檢查碼。

圖3  開啟資料檢查碼功能。

遏止資料毀損的風險

若使用者無法決定要使用哪一套Data Scrubbing系統也不用太擔心,Synology的Data Scrubbing系統整合Btrfs Data Scrubbing和RAID Scrubbing以確保資料完整性。

在Btrfs環境執行Data Scrubbing時,會先執行Btrfs Data Scrubbing,在保障資料正確性後,接著執行RAID Data Scrubbing,進一步確保資料一致性。這兩項系統的攜手合作,可以降低無聲資料毀損的風險,並確保儲存系統運作無礙。

<本文作者:蔡孟儒,群暉科技產品經理,2014年加入Synology,負責Synology企業儲存技術、檔案協定、Docker技術以及虛擬化產品與解決方案之開發管理。>


 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!