btrfs 可以追蹤/避免壞塊嗎?

btrfs 可以追蹤/避免壞塊嗎?

我有一個我不完全信任的硬碟,但仍然想使用(burstcoin 挖礦,如果我在文件中遇到壞塊,我只會損失幾美分)。

我該如何告訴 btrfs 將某些區塊標記為壞區塊(例如來自badblocks輸出)?

如果我無法將區塊預先標記為壞區塊,btrfs scrub那麼將來如果刪除使用它們的文件,是否可以避免由 標識的任何壞區塊?

答案1

可悲的是沒有。

btrfs 不會追蹤壞區塊,也btrfs scrub不會阻止下一個檔案遇到相同的壞區塊。

此 btrfs 郵件清單帖子建議使用 ext4 與mkfs.ext4 -c(這“建立一個壞塊列表,然後不會使用這些扇區”)。使用建議mdadm 3.1+ 上的 btrfs 和 RAID0 將無法運作

看起來LVM 不支援壞塊重新分配

解決方法是建構一個排除已知不良塊的設備:透過 dmsetup 進行 Btrfs


btrfs 專案想法 wiki說:

未聲明 — 尚無補丁 — 尚未進入內核

目前,btrfs 不追蹤壞塊,這些磁碟區塊很可能會遺失寫入其中的資料。 Btrfs 應該接受 badblocks 輸出格式的列表,將其儲存在新的 btree 中(或可能在當前範圍樹中,使用新標誌),重新定位區塊包含的任何數據,並保留這些區塊,以便它們不能被使用於未來的分配。此外,當發現校驗和錯誤時,可以教導擦洗來測試壞塊。這將使磨砂膏更加有用;校驗和錯誤通常是由磁碟引起的,但是雖然清理檢測到受影響的檔案(在備份情況下提供了重新建立它們的機會),但下一個重複使用壞區塊的檔案將開始出現錯誤。這兩項將與 ext4 功能相符(透過 e2fsck 使用)。

如果狀態發生變化,請發表評論,我將更新此答案。

答案2

這就是我想解決這個限制的方法。一個不完美的解決方案。

  1. 建立不帶日誌記錄的 ext4 作為檔案系統(標記有壞區塊)
  2. 在 ext4 之上建立 btrfs 檔案映像。
  3. 使用循環設備掛載 btrfs 映像。

預計可能會產生一些輕微的額外開銷。

相關內容