ZFS-HA 池因元數據損壞而出現故障
我按照 Github 的出色描述設置了 ZFS-HA(參見此處)。經過廣泛的測試後,我使用 RAIDZ3 中的 5x12 磁碟將設置推廣到生產環境,該磁碟使用 HBA 控制器連接到兩個節點。直到昨晚兩個儲存池中的一個突然出現“池元數據已損壞”故障時,這一直執行得很順利。在一個
scrub
跑。在這一點上,我只能推測是什麼原因造成的,兩個池都在起搏器中設置了 SCSI 防護,並且在我投入生產之前測試的所有故障場景中,磁碟預留都可以完美地工作。最近發生的唯一重大事件是在沒有 UPS 支持的情況下兩次完全停電(閱讀:電源從一個時刻到下一個時刻都消失了)。但是,腐敗的真正原因也可能完全不同。現在的情況是我不能再
import
使用游泳池了(請參閱zpool import
本問題末尾的輸出)。到目前為止,我所有拯救游泳池的意圖都失敗了:# zpool import -f tank cannot import 'tank': one or more devices is currently unavailable # zpool import -F tank cannot import 'tank': one or more devices is currently unavailable
這讓我有點困惑,因為它並沒有真正說唯一的選擇是銷毀池(這將是對致命損壞的池的預期響應)。
# zpool clear -F tank cannot open 'tank': no such pool
我還手動刪除了所有 SCSI 預留,例如:
# DEVICE=35000c5008472696f # sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE # sg_persist --in --no-inquiry --read-key --device=/dev/mapper/$DEVICE # sg_persist --out --no-inquiry --register --param-sark=0x80d0001 --device=/dev/mapper/$DEVICE # sg_persist --out --no-inquiry --clear --param-rk=0x80d0001 --device=/dev/mapper/$DEVICE # sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE
我進一步嘗試從磁碟架上移除 A/C,以清除可能保留在辦公桌上的任何臨時資訊。
坦率地說,我缺乏選擇。我的清單上唯一剩下的就是
-X
選項zpool import
- 在所有其他措施都失敗後我會嘗試。所以我的問題是,你之前有沒有遇到過這樣的事情——更重要的是——你找到解決這個問題的方法了嗎?如果您有任何建議,我將不勝感激。
=========
泳池佈局/配置:
pool: tank id: 1858269358818362832 state: FAULTED status: The pool metadata is corrupted. action: The pool cannot be imported due to damaged devices or data. The pool may be active on another system, but can be imported using the '-f' flag. see: http://zfsonlinux.org/msg/ZFS-8000-72 config: tank FAULTED corrupted data raidz3-0 FAULTED corrupted data 35000c5008472696f ONLINE 35000c5008472765f ONLINE 35000c500986607bf ONLINE 35000c5008472687f ONLINE 35000c500847272ef ONLINE 35000c50084727ce7 ONLINE 35000c50084729723 ONLINE 35000c500847298cf ONLINE 35000c50084728f6b ONLINE 35000c50084726753 ONLINE 35000c50085dd15bb ONLINE 35000c50084726e87 ONLINE raidz3-1 FAULTED corrupted data 35000c50084a8a163 ONLINE 35000c50084e80807 ONLINE 35000c5008472940f ONLINE 35000c50084a8f373 ONLINE 35000c500847266a3 ONLINE 35000c50084726307 ONLINE 35000c50084726897 ONLINE 35000c5008472908f ONLINE 35000c50084727083 ONLINE 35000c50084727c8b ONLINE 35000c500847284e3 ONLINE 35000c5008472670b ONLINE raidz3-2 FAULTED corrupted data 35000c50084a884eb ONLINE 35000c500847262bb ONLINE 35000c50084eb9f43 ONLINE 35000c50085030a4b ONLINE 35000c50084eb238f ONLINE 35000c50084eb6873 ONLINE 35000c50084728baf ONLINE 35000c50084eb4c83 ONLINE 35000c50084727443 ONLINE 35000c50084a8405b ONLINE 35000c5008472868f ONLINE 35000c50084727c6f ONLINE raidz3-3 FAULTED corrupted data 35000c50084eaa467 ONLINE 35000c50084e7d99b ONLINE 35000c50084eb55e3 ONLINE 35000c500847271d7 ONLINE 35000c50084726cef ONLINE 35000c50084726763 ONLINE 35000c50084727713 ONLINE 35000c50084728127 ONLINE 35000c50084ed0457 ONLINE 35000c50084e5eefb ONLINE 35000c50084ecae2f ONLINE 35000c50085522177 ONLINE raidz3-4 FAULTED corrupted data 35000c500855223c7 ONLINE 35000c50085521a07 ONLINE 35000c50085595dff ONLINE 35000c500855948a3 ONLINE 35000c50084f98757 ONLINE 35000c50084f981eb ONLINE 35000c50084f8b0d7 ONLINE 35000c50084f8d7f7 ONLINE 35000c5008539d9a7 ONLINE 35000c5008552148b ONLINE 35000c50085521457 ONLINE 35000c500855212b3 ONLINE
編輯:
伺服器是 2x Dell PowerEdge R630,控制器是 Broardcom SAS HBA 的 DELL OEM 版本(應該類似於 SAS 9300-8e),並且該池中的所有 60 個磁碟都是 Seagate ST6000NM0034。機箱是廣達 MESOS M4600H。
編輯2:
作業系統是 CentOS 7
ZFS 是 zfs-0.7.3-1.el7_4.x86_64
最後我求助於
-X
使用import
. 這通過以 2GB/s 的速度讀取大約 36 小時來鍛煉所有磁碟。之後,沒有給出錯誤消息,文件系統已安裝並且現在可以再次完全訪問。到目前為止,沒有檢測到數據不一致(zfs scrub
仍在執行)。感謝您的回复。但是,對於未來的讀者,我想從手冊頁傳遞有關該選項的警告
-X
:此選項可能對您的池的健康極為有害,只能作為最後的手段使用。