Linux檔案系統 Btrfs 資料損毀 檔案系統

「無聲資料損毀」難防 Btrfs檔案系統來保護

2019-01-22
Btrfs是下一世代的Linux檔案系統,實際採用的案例越來越多,有必要加以理解,本文將先著墨於無聲資料損毀,再解說Btrfs檔案系統如何使用Data Checksum抵抗無聲資料損毀,以及對於損毀檔案的修復方式,也將介紹Synology怎樣在DSM中運用Btrfs來保護使用者資料的正確性。

新世代檔案系統Btrfs最早是由Oracle在Linux上所開發,是一個基於寫入時複製(Copy-on-Write)的檔案系統。它採用GPLv2的授權方式,於Linux Kernel 2.6.29時合併入Linux Kernel主線,並在2014年時宣佈它的磁碟格式進入穩定版本。

但其實它最早的發展歷程,要從2008年由當時任職IBM實驗室的Ohad Rodeh的一篇開創性論文開始(Ohad Rodeh. (2008, February). B-trees, Shadowing, and Clones. ACM Transactions on Storage (TOS), Volume 3 Issue 4, Article No. 2.)。

該論文參考了當時幾個最先進的檔案系統如WAFL及ZFS上的寫入時複製(Copy-on-Write)技術,並將之套用在檔案系統常見的B-tree資料結構中。當時在Oracle服務的Chris Mason便根據這篇論文的研究成果開發出Btrfs,而他也從此成為Btrfs的主要開發者一直到現在。

目前參與Btrfs開發的主要廠商包括Facebook、SUSE、Fujitsu及Oracle。從2015年開始,Btrfs成為SUSE Linux Enterprise的預設檔案系統。Ext4的主要開發者Theodore Ts'o曾表示:「雖然Ext4已經添加了不少新特性,不過那只是之前舊科技的延續,考慮到Btrfs所帶來在擴展性、可靠性、與管理便利性的進步,它將是檔案系統發展的下一步」。

無所不在的無聲資料損毀(Silent Data Corruption)

隨著儲存技術的進步,單位面積╱體積的儲存容量不斷提高,儲存成本持續地下降,為這個產業帶來前所未見的榮景。但隨著資料量不斷的成長,如何將它們長久且正確地保留下來,一直是個很有挑戰性的問題。

造成儲存裝置資料錯誤的原因很多,例如硬碟運作時的震動、資料當初就到寫入錯誤的位置(Misdirected Write)或不完全寫入(Torn Write)、儲存單元不斷縮小造成的訊噪比下降、同時又要求高速讀寫,使得越來越難保證資料儲存的正確性。

其實儲存裝置的韌體(Firmware)本身就具有一定的容錯能力,例如大多數硬碟都具備將壞軌重新映射到備用磁軌的能力。以現代常見的NAS專用硬碟來說,大約每11TiB的資料讀取,才會發生一次韌體無法修復的讀取錯誤。不過,使用這類修復機制的前提是,必須依賴儲存裝置能在讀寫時就察覺錯誤。在某些類型的錯誤中,硬體的讀寫操作其實有順利完成,但部分資料內容悄悄發生變化而損毀,以致於儲存裝置無法套用原本的修復機制,這類型的錯誤就稱為無聲資料損毀(Silent Data Corruption)。

圖1即為一張照片發生無聲資料損毀後,翻轉一個Bit的結果(Bit rot、Bit flip)。雖然類似的無聲資料損毀並不是天天發生,但在資料量大的情況下,或是資料本身具有高價值,即使很低比例的無聲資料損毀,也會成為系統管理員必須認真考慮的一部分。事實上,無聲資料損毀有可能發生在系統的任何一地方。

 

▲圖1 JPEG圖檔翻轉一個Bit的結果。

一項由威斯康辛大學麥迪遜分校和NetApp合作的大型研究計畫,使用NetApp實際部署在客戶端的檔案伺服器,藉由軟體層為每個資料區塊(Data Block)記錄額外的Checksum來捕捉硬碟韌體所無法處理的資料損毀事件。研究結果顯示,150萬顆硬碟在41個月的運作期間,總計偵測到超過四十萬次的Checksum不一致事件。另一項由歐洲核子研究組織CERN資料中心所做的統計顯示,在約100PiB的資料流量中,有192MiB的資料發生無聲損毀。

傳統RAID架構的限制

一些對可靠度要求較高的儲存系統,經常會將數個儲存裝置組成RAID的架構,圖2所示即為一個常見含四顆硬碟的RAID-5陣列。當Disk A出現壞軌或是硬碟故障,即可用Disk B、C、D將資料復原,此架構已證實對一般明確的壞軌或是硬碟故障所造成的資料損毀非常有用。但對於硬體沒有回報錯誤的無聲資料損毀,這種傳統的RAID架構往往力不從心,主要的問題來自偵錯代價大、難以定位錯誤兩個方面。

 

▲圖2 RAID-5具有單顆硬碟的容錯能力。


追蹤我們Featrue us

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

我知道了!