Linux
數據清理和修復 RAID1 鏡像?
在 Linux 中,如果我有一個具有 N ≥ 1 個活動設備的軟體 RAID1 鏡像,該命令
/dev/md1
的語義是什麼?repair
echo "repair" >/sys/block/md1/md/sync_action
我是否正確地假設
- 如果有 1 個活動設備,該
repair
命令不執行任何操作,- 在有 2 個活動設備的情況下,該
repair
命令搜尋數據差異並用來自第二個設備的不匹配數據覆蓋其中一個設備的不匹配數據,以及- 如果有 3 個(或更多)活動設備,該
repair
命令會搜尋數據差異,找出(如果可能的話)或決定哪些數據內容最普遍,並使用此數據覆蓋其他設備上的不匹配數據?我已經閱讀了 Linux 核心文件中的Documentation/admin-guide/md.rst甚至是Documentation/device-mapper/dm-raid.txt,但目前這些資訊不是很豐富。我也嘗試理解drivers/md/raid1.c但它的評論不是很好,而且我缺乏 Linux 核心內部知識來理解它。
如果程式碼未更改,則 3 路 RAID1 不會為您提供與 BTRFS/ZFS 擦洗相當的智能/更好的恢復。
來自主要 mdraid 開發人員的部落格:
我的立場是,如果存在需要更正的不一致之處,則應以簡單可預測的方式進行更正,任何額外的複雜性都是不合理的。對於 RAID1,這意味著複製到第一個塊而不是所有其他塊
也給看看這裡。摘要:
它已經讀取了所有塊,現在比較它們以查看它們是否相同。如果不是,它將第一個複製到任何不同的地方。