Zfs

儘管有足夠的副本可用,zpool 仍無法導入 raidz3 池

  • February 22, 2020

一些使用者在連接到該伺服器在池中的共享時遇到問題,而其他使用者似乎很好。安排重新啟動後,一旦系統啟動,池就無法導入。

在重新啟動期間,我注意到在 POST 期間驅動器出現故障,由擋板上的橙色燈指示,在zpool import.

池中有足夠的設備可以聯機,但無法成功導入。

$ zpool import
  pool: darkpool
    id: 5743344949875332602
 state: DEGRADED
status: One or more devices contains corrupted data.
action: The pool can be imported despite missing or damaged devices.  The
   fault tolerance of the pool may be compromised if imported.
  see: http://zfsonlinux.org/msg/ZFS-8000-4J
config:

   darkpool                      DEGRADED
     raidz3-0                    DEGRADED
       wwn-0x5000c5008581aafb    ONLINE
       wwn-0x5000c5008581b61b    ONLINE
       wwn-0x5000c5008581b79f    ONLINE
       wwn-0x5000c5008581b933    ONLINE
       wwn-0x5000c5008581b953    ONLINE
       wwn-0x5000c5008581bdf7    ONLINE
       wwn-0x5000c50085825ec7    ONLINE
       wwn-0x5000c5008581cc03    ONLINE
       wwn-0x5000c5008581e423    UNAVAIL
       wwn-0x5000c5008581fd3f    ONLINE
       wwn-0x5000c50085820b93    ONLINE
       wwn-0x5000c500858211b3    ONLINE
       wwn-0x5000cca267ab0de4    ONLINE
       spare-13                  DEGRADED
         11992420879588183985    FAULTED  corrupted data
         wwn-0x5000c500858252ef  ONLINE
   spares
     wwn-0x5000c500858252ef

$ zpool status
no pools available

$ zpool import darkpool
cannot import 'darkpool': I/O error
   Destroy and re-create the pool from
   a backup source.

$ zpool import -f darkpool
cannot import 'darkpool': I/O error
   Destroy and re-create the pool from
   a backup source.

$ zpool import -fFn darkpool

$ zpool import -F darkpool
cannot import 'darkpool': I/O error
   Destroy and re-create the pool from
   a backup source.

$ zpool import -fFX darkpool
cannot import 'darkpool': I/O error
   Destroy and re-create the pool from
   a backup source.

有沒有人見過這樣的東西?我不確定在銷毀池並從備份恢復之前要嘗試什麼(我想避免這種情況,因為它需要很長時間)。

看起來備份在幾週前開始失敗。有什麼方法可以知道維修故障驅動器是否會讓游泳池開心?

該系統是帶有 zfsutils-linux_0.7.5-1ubuntu16.7_amd64 的 Ubuntu 18.04.2 LTS。

我最終註冊了 LinkedIn Premium,這樣我就可以給 ZFS 開發人員發消息(實際上他很友好地回復了!)。他建議我將池移動到具有 ZFS 0.8 的系統,他在 Github 上的相關送出包含在 Ububtu 19.10 和其他發行版中。

在只讀模式下,我們可以通過禁用選項來載入池spa_load_verify_metadata。這也跳過了池的掃描,因此您不必等待幾分鐘或幾小時,具體取決於池的大小。

載入池後,我開始將所有內容備份到另一台伺服器,併計劃銷毀池和伺服器(戴爾進行了太多現場旅行,更換 CPU、記憶體、主機板等……),然後開始新鮮的新系統。


切換選項(Ubuntu 19.10):

$ cat /sys/module/zfs/parameters/spa_load_verify_metadata
1
$ echo 0 >/sys/module/zfs/parameters/spa_load_verify_metadata
$ cat /sys/module/zfs/parameters/spa_load_verify_metadata
0

載入池

zpool import -o readonly=on darkpool -f

該標誌將在重新啟動後重置,因此在啟動過程中不會載入池。但實際上你想複製數據並停止使用池。

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