Zfs

當 ZFS RAID0 或 RAID1(單磁碟)檢測到數據故障時會發生什麼?

  • February 23, 2021

有很多關於 ZFS 如何保護數據和檢測位損壞等的文章。甚至有一個問題詢問有關單個驅動器上的 ZFS。單個設備上的 zfs:文件損壞時會發生什麼? 但答案是使用copies=2。我想知道的是,如果沒有冗餘會發生什麼。

但是,如果沒有該數據的冗餘副本,我真的無法找到究竟會發生什麼。散佈 FUD 的人似乎在暗示一個比特的錯誤會導致所有的數據失去。然而,ZFS 似乎不太可能設計得如此糟糕。

那麼,當 ZFS 發現有點腐爛並且沒有冗餘數據副本時,從作業系統的角度來看,真正發生了什麼?IO Error訪問文件系統/文件的特定部分時作業系統是否顯示?

也許其餘的事情繼續有效?如果有錯誤的部分被覆蓋,那麼錯誤就會消失?或者 ?

是否有任何關於這些故障模式的明確文件可供您指出?

謝謝!

在數據損壞的情況下,ZFS 將報告損壞的事實以及zpool status poolname -v. 池中的所有文件都不會失去。

在有多個副本可用的情況下,ZFS 會在讀取文件時將好的數據返回給作業系統,但仍然需要修復:可以使用 恢復zpool scrub poolname並手動清除錯誤zpool clear poolname

如果沒有其他副本可用,則 ZFS 將在讀取文件時將損壞的數據返回給作業系統。恢復包括讀取文件的內容(可選)、刪除文件和使用zpool clear poolname.

請注意,池清理應作為例行計劃任務完成,部分是為了盡量減少此類錯誤的影響,並且池狀態應由您的監控系統監控。

此處有關修復損壞的 ZFS 數據的 Oracle ZFS 文件可能對您有所幫助。Linux 上的 ZFS 和 FreeBSD 上的工作幾乎相同。

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