無法匯入 zpool 磁碟區:I/O 錯誤

無法匯入 zpool 磁碟區:I/O 錯誤

這是在 nexenta 開放式儲存上。我有一個 zpool 由於某些磁碟而處於 UNAVAIL 狀態。

# zpool import -F
  pool: delta
    id: XYAZA
 state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
config:

        delta                        UNAVAIL  insufficient replicas
          raidz2-0                   UNAVAIL  insufficient replicas
            c0t5000C500573978EBd0    ONLINE
            c0t5000C50057397933d0    ONLINE
            c0t5000C50057397C47d0    UNAVAIL  cannot open
            c0t5000C5005739997Fd0    UNAVAIL  cannot open
            c0t5000C50057399F87d0    ONLINE
            c0t5000C5005739A90Bd0    ONLINE
            c0t5000C5005739ABC7d0    UNAVAIL  cannot open
            c0t5000C5005739AC0Fd0    ONLINE
          raidz2-1                   DEGRADED
            c0t5000C50057398657d0    ONLINE
            c0t5000C50057398E03d0    ONLINE
            c0t5000C50057398EF7d0    ONLINE
            c0t5000C50057398FAFd0    ONLINE
            c0t5000C5005739A39Fd0    UNAVAIL  cannot open
            c0t5000C5005739AAFFd0    ONLINE
            spare-6                  DEGRADED
              c0t5000C5005739AC3Fd0  UNAVAIL  cannot open
              c0t5000C50057398EDBd0  ONLINE
            c0t5000C5005739AE9Bd0    ONLINE


~# zpool import -FXf delta
cannot import 'delta': I/O error
        Destroy and re-create the pool from
        a backup source.
  1. 我怎麼能讓 zpool import 正常工作?
  2. 是否指出“UNAVAIL”的磁碟,如何修復/更換它們?

更新:2018 年 9 月 7 日

在Nexenta 上找到磁碟到插槽的對應後,重新安裝增量磁碟區中的磁碟後,我可以讓raidz2-1 群組中的磁碟聯機,但raidz2-0 群組中的3 個磁碟仍繼續顯示為UNAVAIL 。

# zpool import -F
  pool: delta
    id: XYAZA
 state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
config:

        delta                        UNAVAIL  insufficient replicas
          raidz2-0                   UNAVAIL  insufficient replicas
            c0t5000C500573978EBd0    ONLINE
            c0t5000C50057397933d0    ONLINE
            c0t5000C50057397C47d0    UNAVAIL  cannot open
            c0t5000C5005739997Fd0    UNAVAIL  cannot open
            c0t5000C50057399F87d0    ONLINE
            c0t5000C5005739A90Bd0    ONLINE
            c0t5000C5005739ABC7d0    UNAVAIL  cannot open
            c0t5000C5005739AC0Fd0    ONLINE
          raidz2-1                   DEGRADED
            c0t5000C50057398657d0    ONLINE
            c0t5000C50057398E03d0    ONLINE
            c0t5000C50057398EF7d0    ONLINE
            c0t5000C50057398FAFd0    ONLINE
            c0t5000C5005739A39Fd0    ONLINE
            c0t5000C5005739AAFFd0    ONLINE
            spare-6                  DEGRADED
              c0t5000C5005739AC3Fd0  UNAVAIL  cannot open
              c0t5000C50057398EDBd0  ONLINE
            c0t5000C5005739AE9Bd0    ONLINE

online我在設備上為另一個池找到了一個備用磁碟。現在的問題是 1. 我是否應該將備件分離/附加到 raidz2-1 組,該組在 spare-6 的子類別下只有一個磁碟 UNAVAIL ?或 2. 我是否應該將備用磁碟分離/附加到仍有 3 個磁碟 UNAVAIL 的 raidz2-0 組?

鑑於該池已離線(匯出後)並且現在不可匯入。

我查看了有關如何建立此池的一些歷史記錄,它是過去使用以下命令建立的

zpool create -m /volumes/delta -o autoreplace=on delta raidz2 c0t5000C500573978EBd0 c0t5000C50057397933d0 c0t5000C50057397C47d0 c0t5000C5005739997Fd0 c0t5000C50057399F87d0 c0t5000C5005739A90Bd0 c0t5000C5005739ABC7d0 c0t5000C5005739AC0Fd0 raidz2 c0t5000C50057398657d0 c0t5000C50057398E03d0 c0t5000C50057398EF7d0 c0t5000C50057398FAFd0 c0t5000C5005739A39Fd0 c0t5000C5005739AAFFd0 c0t5000C5005739AC3Fd0 c0t5000C5005739AE9Bd0

這是否表明 raidz2-0 和 raidz2-1 是兩個 RAIDZ 鏡像池?

如果是,我是否應該優先修復 raidz2-1 組磁碟以使其聯機,而不是 raidz2-0(有 3 個磁碟故障)?

答案1

  1. 我是否應該將備件分離/附加到 raidz2-1 組,該組在 Spare-6 的子類別下只有一個磁碟 UNAVAIL ?

您的備用磁碟已自動附加raidz2-1並已重新同步。通常,您現在可以將c0t5000C5005739AC3Fd0其從系統中分離並刪除,因為它曾經失敗過一次(或將其重新用於另一個系統,並希望獲得最好的結果,如果您沒有任何空閒資源)。

但這對你沒有幫助,因為raidz2-0仍然處於下降狀態。如果任何zpool 中的 vdev 失敗,整個池及其上的所有資料都會遺失。如果無法維持配置的奇偶校驗,每個 vdev 都會失敗,因為其中有足夠的磁碟發生故障。在您的情況下,每個 Z2 vdev 可以承受兩個磁碟的遺失,但其中一個遺失了三個磁碟。

  1. 我是否應該將備用磁碟分離/附加到仍然有 3 個磁碟 UNAVAIL 的 raidz2-0 組?

首先,你現在沒有真正的空閒時間。即使您從中刪除了工作磁碟raidz2-1(不建議!),在修復raidz2-0.奇偶校驗資料必須來自某個地方,在這種情況下,它必須來自故障磁碟。如果您至少無法讓其中一個正常工作,那麼最好的選擇就是從備份中還原。

我查看了有關如何建立此池的一些歷史記錄,過去它是使用以下命令創建的 zpool create -m /volumes/delta [...] 這是否表明 raidz2-0 和 raidz2-1 是兩個 RAIDZ 鏡像池?

不,這表示您的池由兩個條帶化 vdev 組成,每個 vdev 都配置有 raidz2 冗餘和 8 個磁碟。每個 vdev 中最多可以遺失 2 個磁碟。如果您在任何一場比賽中輸掉 3 場,比賽就結束了。

在 ZFS 中,所有冗餘都是在 vdev 層級處理的。該池始終在所有現有 vdev 上進行條帶化。如果任何 vdev 發生故障,池就會發生故障。鏡像是vdev 的一種冗餘類型,與raidz1/z2/z3 不相容(您可以混合和匹配具有不同冗餘類型的vdev,但最弱的冗餘類型將定義池的強度,並且性能會受到影響,因此這是不建議)。

如果是,我是否應該優先修復 raidz2-1 組磁碟以使其聯機,而不是 raidz2-0(有 3 個磁碟故障)?

不,你必須先修復raidz2-0


它們都屬於 Seagate,有 SEAGATE,Rev. A001 和 SEAGATE,Rev. 0002 的混合,大小 1.82TB

這現在對您沒有幫助,但也許在將來:建議混合和匹配製造商和型號,甚至製造日期,以平衡“一批壞驅動器”的情況。例如,如果您購買了4 個主要製造商(Seagate、Western Digital、Hitachi、Toshiba)中的每一個的4 個磁碟,並將它們在您的vdev 上分成2-2 個,即使一個製造商的所有磁碟同時發生故障,您仍會有一個工作池。

相關內容