如何避免因磁碟壞道而導致資料遺失?

如何避免因磁碟壞道而導致資料遺失?

正如標題所說,我關心的是,我們怎麼能避免資料遺失由於硬碟(機械 HDD 或 SSD)壞扇區。

\更多資訊\

問題定義明確。問題到這裡就結束了。讓我嘗試提供更多資訊。儲存設備故障(硬體故障,首先排除病毒的事情)主要分為兩種。

  1. 整個磁碟故障。磁碟內部的任何機械和/或電子問題都會導致磁碟無法存取。

  2. 壞扇區。只有某個部分有問題。整個磁碟似乎運作正常。如果不訪問/檢查某個壞扇區,我們將永遠不會知道存在壞扇區。

\RAID無法避免因壞扇區導致的資料遺失\

RAID1、RAID5或RAID6可以避免情況1導致的資料遺失。的情況。如果第一個磁碟中出現壞磁區,則第一個磁碟中的檔案已損壞。此時,我們在第二個碟中仍然有鏡像檔。但我們不知道有壞扇區。因此,RAID1陣列不會指示磁碟故障,也不會觸發復原。隨著時間的推移,壞道越來越多。 (每個硬體都會磨損,這只是時間問題。)第二個磁碟中的確切鏡像位元/鏡像部分也有可能出現壞磁區。此時,就不再有多餘的副本了。受影響的資料將永遠遺失。同樣,我們也不會立即註意到這一點。只有在存取該資料之前,我們才會發現這種損失。

\是 ZFS(帶有校驗和的檔案系統)一個辦法?\

由於擔心我希望避免因壞扇區導致的資料遺失,我開始研究文件校驗和。似乎沒有太多流行的檔案系統包含每個檔案的校驗和。我對 Gentoo Linux 有一些了解。因此我計劃在 Gentoo Linux 上使用 ZFS。

ZFS「儲存管理應該簡單」和「冗餘應該由檔案系統處理」的想法很好。在我看來,如果 ZFS 磁碟中出現壞磁區,它會默默地恢復它(不是嗎?我還無法確認這一點)。如果ZFS磁碟中出現越來越多的壞磁區,是否表示該ZFS磁碟的大小會縮小?如果沒有,我如何注意到壞扇區發生?我如何知道硬碟壞扇區太多而必須更換另一個健康的硬碟?我想我需要一些 ZFS 監視器和 ZFS 實用程序,但我在 Internet 上找不到太多資訊。

答案1

鑑於您假設資料儲存最終總是會失敗,您只需要保留多份副本數據,偶爾檢查並確保可以成功讀取數據。

使用某種類型的 RAID 聽起來像是擁有至少一個備份副本的好方法,但額外的副本是一個好主意,至少出於不將所有副本保留在同一建築物、房間和機器中的明顯原因。線上備份是讓其他人擔心他們的驅動器故障的好方法。

為了確保資料仍然可讀,只需保留自己的校驗和並定期驗證它們即可。一個基本的 CRC 就可以工作,例如cksumGNU 的核心實用程序,甚至是 md5sum 或 shaXsum(儘管在我看來,它們對於壞扇區來說太過殺傷力了)。

[出於顯而易見的原因,並保留一些校驗和文件的副本。

即使 ZFS 有自己的校驗和,您仍然應該保留自己的副本,以驗證儲存在其他檔案系統或線上的副本。我假設你或 ZFS 無論如何都必須讀取所有檔案來驗證它們(我相信它被稱為ZFS 資料清理,用zpool scrub) 顯式調用。


考慮到許多驅動器(尤其是閃存驅動器)都有自己的壞塊管理(和磨損均衡),將壞塊和邊緣塊替換為新的備用塊,所有(大部分)都是默默地進行,您或操作系統甚至都沒有註意到,這也很有趣。我曾經讀到過有關閃存卡的內容,16GB 的內存中只有足夠好的內存來製作 512MB 或 1G 的卡。

答案2

關於 RAID 5/6

RAID 5/6 有奇偶校驗資料。

如果它可以重建整個磁碟,那麼肯定有足夠的奇偶校驗資料來還原單一磁區。

最糟糕的情況是,您檢測到壞扇區,更換整個驅動器,現在一切都已重建。

因此,如果 RAID 5/6 偵測到壞磁區應該自動使用奇偶校驗資料來修復它。

我的 Adaptec RAID 控制器甚至在 GUI 中具有特殊的「驗證/修復」選項。

另請注意校驗和、sha1、sha2、CRC 等僅提供偵測何時發生錯誤的能力。它確實提供了修復它們的能力。

相關內容