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

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

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

Synology在DSM 6.2後整合Btrfs Data Scrubbing和RAID Data Scrubbing兩種Data Scrubbing,當執行在Btrfs Volume上,會先執行一遍Btrfs Data Scrubbing,藉由Btrfs Checksum確保資料的正確性,之後再執行一遍RAID Data Scrubbing,確保陣列中所有硬碟的資料一致,使用者不須再煩惱該執行哪種Data Scrubbing,就能輕鬆將所有資料修復正確且保持一致。

回報錯誤檔案的路徑

由於Btrfs提供檔案系統層的Checksum,若不幸真的碰到無法修復的錯誤,不像一般硬碟的S.M.A.R.T.資訊僅能提供錯誤的計數,Btrfs能夠定位內容不正確的檔案,Synology DSM在取得這個資訊後,會透過日誌中心或電子郵件推播,告知損壞檔案的路徑,讓使用者可以嘗試從異地備份還原檔案(圖6)。特別是在一些多版本的備份或同步應用中,如果系統不能在第一時間回報錯誤,可能過一段時間後,所有版本都被洗成錯誤的版本,那時即使從備份也無法找回當初正確的內容。

 

▲圖6 Btrfs回報錯誤檔案的路徑。

利用硬體加速Btrfs Checksum運算

Btrfs使用CRC-32C的演算法,為每4KiB的資料附加32bits的Checksum。由於Btrfs預設不管讀或寫都需要進行Checksum運算(寫入時附加Checksum、讀取時驗證Checksum),在近期一些支援SSE4.2指令集的Intel CPU機種上,Synology啟用硬體指令(CRC32、PCLMULQDQ)來加速Btrfs的Checksum運算。

結語

儲存裝置一直在往低成本高容量的方向前進,低價的消費型硬碟盛行,連固態硬碟(SSD)的發展也往這個方向靠攏,使用者可以藉由RAID磁碟陣列的技術輕易組合出又大又快的儲存空間。但隨著儲存空間的增大,資料保護技術卻沒有相對應的提升,其實是提高資料損毀的風險。尤其在一些使用場合,資料內容損毀其實比檔案消失還要可怕,因為使用者可能會根據錯誤的資料,在沒有意識到的情況下做出錯誤的決策。傳統的RAID架構不適合用來主動偵測及定位錯誤,而常見的檔案系統如Ext4僅將Metadata Checksum列為可選的選項且不具備修復功能。新一代的Btrfs檔案系統則藉由完整的Metadata與Data Checksum校驗能力,能夠正確偵測並定位儲存裝置的無聲資料損毀。

<本文作者:連懷恩,群暉科技檔案系統組開發研究員,在群暉科技負責Linux Kernel的開發維護,亦參與開發Btrfs檔案系統的開源項目。>

 


追蹤我們Featrue us

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

我知道了!