Zfs

ZFS-HA 池因元數據損壞而出現故障

  • November 21, 2017

我按照 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:此選項可能對您的池的健康極為有害,只能作為最後的手段使用。

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