Raid
BTRFS 自我修復是否僅通過軟體 RAID 起作用?
AFAIK。RAID 有 3 種類型:
- 硬體 - 例如昂貴的 PCIE RAID 卡/或很少有板載 RAID,它有一個專用的 CPU,可能帶有寫記憶體和 BBU
- 軟體 - 例如 ZFS、MD、BTRFS 軟體 RAID
- 假的 - 例如便宜的 PCIE RAID 卡/或大多數使用主機板上的 RAM 和 CPU 的板載 RAID。
通過使用 BTRFS 軟體 RAID,文件系統了解驅動器,當它發現校驗和錯誤的塊時,它可以使用複製 (RAID1/10) 或奇偶校驗 (RAID5/6) 來恢復受影響的塊並修復錯誤. 所以我們的文件不會隨著時間的推移而降級。
問題是相同的自我修復機制是否適用於硬體或 BTRFS 的假 RAID?
我想應該有一個 API,BTRFS 可以使用它來訪問受影響塊的複製/奇偶校驗並修復它。我認為板載 RAID 更有可能獲得類似的東西,但我不知道這樣的事情是否存在,或者每個 RAID 的實現方式都不同,並且 BTRFS 沒有可以使用的標準 API。
努力從這個問題中弄清楚,但我想我還是可以回答的。
BTRFS 是軟體 RAID,由 Linux 內置的 BTRFS 軟體處理。為了對陣列進行任何類型的維護,您需要在作業系統中使用 btrfs 命令。
就您的硬體而言,包括任何 RAID 控制器,磁碟只是基本的塊設備。除了 Linux* 中的 BTRFS 軟體之外,沒有任何東西知道磁碟是陣列的一部分。
*其他作業系統也有可能實現 BTRFS,但我認為這不太可能,至少目前是這樣。
更新:在現有 RAID 陣列上使用 BTRFS。
在這種情況下,RAID 和 BTRFS 是完全分開的。以硬體鏡像為例:
- BTRFS 不知道它在鏡像上,並將數據寫入單個設備(
/dev/raid
在本例中呼叫它)。由 RAID 控制器在兩個磁碟上進行鏡像。- 如果設備發生故障,BTRFS 將照常讀取數據,並且不知道磁碟發生故障。由 RAID 控制器負責保持
/dev/raid
功能和讀/寫數據到剩餘磁碟。更換磁碟時,還要由 RAID 控制器來重建陣列。無論如何提供 RAID(硬體/“假”或軟體),情況都是如此
我認為我解釋得不是很好,但這是一個非常簡單的概念……如果單獨的設備(或軟體)正在處理 RAID,則修復 RAID 數據不取決於 BTRFS。它在單個磁碟上看到單個文件系統,就像在 RAID 陣列上執行的任何其他文件系統一樣。