Backup

新手 btrfs 使用者:校驗和失敗和大量輸入/輸出錯誤

  • January 10, 2022

一位室友向我建議我應該使用 btrfs 而不是到目前為止我一直在做的事情,即使用帶有複製驅動器的 mdadm,並在陣列中添加一個額外的驅動器來“複製”備份。該系統具有三個驅動器,它們都是物理上不同的型號:

  • /dev/sda:東芝HDWQ140
  • /dev/sdb: HGST HUS724040AL
  • /dev/sdc:WDC WDS250G2B0B

好吧,我已經安裝了 btrfs,但現在它已經執行了將近一年,我發現我應該每週執行一個 cron 作業來“清理”它。我開始嘗試為此設置一個腳本,儘管它看起來像是一個愚蠢的 DIY 系統,需要你在Google上搜尋一個腳本(我發現的熱門腳本來自 2014 年之類的東西)並安裝它以保持你的文件系統執行。

當我在做所有這些管理工作時,我發現了一些需要移動的文件……我將跳過血淋淋的細節,但是將文件從一個 btrfs 文件系統移動到另一個文件系統並再次返回會產生各種“輸入/輸出”錯誤”(在 ext4 中從未見過),甚至這個 gem:

Jan  4 21:19:19 host kernel: [9771285.171522] attempt to access beyond end of device
Jan  4 21:19:19 host kernel: [9771285.171522] sda1: rw=1, want=70370535518208, limit=7814035087
Jan  4 21:19:19 host kernel: [9771285.171529] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 1, rd 0, flush 0, corrupt 5, gen 0

我假設這些是相關的。但這是真正愚蠢的事情。我不僅在已經存在一年的文件上遇到校驗和錯誤,而且在我幾個小時前從字面上複製到不同物理驅動器的文件上也遇到了校驗和錯誤。此外,幾乎所有這些文件都在巨大的文件中(例如 DVD iso 圖像),如果這有任何跡象嗎?

所以是的,我可能會同時看到三重驅動器故障,或者 btrfs 是否只是為我破壞我的文件?

此外,知識淵博的 btrfs 人員的每篇文章都包含一個可愛的小字“嗯,你應該從備份中恢復它……你確實有備份,不是嗎”。所以告訴我,你們到底用什麼來備份 4TB 硬碟?因為我不能確切地,你知道,把它寫到 DVD 上,如果硬碟驅動器這麼不可靠,那麼備份到硬碟驅動器有什麼好處呢?

這麼嚴肅的問題:

  1. 這些校驗和錯誤真的正常嗎?
  2. 為什麼我會在今天才複製的文件上看到它們?
  3. 定期磨砂足以防止這種情況發生嗎?
  4. 我是否應該購買新的硬碟並丟棄機器中目前所有的硬碟,因為它們真的出現故障?
  5. 建議如何備份多 TB 數據驅動器?

2022-01-07 更新:我smartctl在所有驅動器上執行,並且這些驅動器都沒有報告任何問題。所有驅動器的原始 UDMA_CRC_Error_Count 為 0。試圖恢復損壞的文件…複製到機器的 tar 文件在幾個文件出現 I/O 錯誤後失敗。真的不知道這裡發生了什麼:

  • 如果驅動器或電纜壞了,這會出現在 SMART 中,對嗎?
  • 如果CPU或記憶體不好,系統就不會完美執行嗎?(目前 115 天沒有明顯問題)?
  • 如果這是 btrfs 的一個全面的錯誤,它不會遍布整個網際網路嗎?

那麼問題究竟出在哪裡呢?

我正在回答我自己的問題,因為我認為這很有趣,並且可能對某人有用。

TL;DR 報告的問題的根本原因似乎是 DRAM 故障,而不是硬碟驅動器故障。

  1. 不,這些校驗和是不正常的和預期的。另一個執行相同 btrfs 版本的系統執行良好。它們表明有問題,但不一定與磁碟有關。見下一項。
  2. 它們出現在新複製的數據上,因為系統中的 DRAM 發生了重大故障,X86MemTest 證實了這一點。只有兩個棒中的一個壞了,而且它恰好是映射到更高記憶體的棒,所以只有當低記憶體全部使用時(很少,但對於較大的文件更頻繁),故障才會出現。這就是它們不影響核心的原因。
  3. 定期擦洗可能會更早地檢測到問題。當你有一個不屬於鏡像的驅動器(例如 /dev/sdc)時,定期清理沒有幫助,因為雖然它可以看到校驗和錯誤,但它沒有任何糾正它的希望 -基本上是一個btrfs 的限制,他們本可以選擇一個具有更大漢明距離的校驗和函式,而是選擇一個計算速度更快的函式(我相信)。
  4. 我買了新的硬碟驅動器,可以作為備份,但各種 SMART 測試和其他努力表明目前的驅動器可能還可以。“所有驅動器同時出現故障”可能是一個很好的線索,表明問題在於硬碟驅動器。
  5. 如前所述,大型驅動器已經變得便宜……並且鑑於驅動器本身似乎不是故障點,使用硬碟驅動器進行備份的想法似乎仍然有效。

引用自:https://serverfault.com/questions/1089013