Zfs

故障 zpool 恢復 - 我可以將一些磁碟添加到新磁碟以允許我清理捐助者嗎?

  • October 4, 2018

我正在嘗試恢復已降級和被忽視的池,然後第二個鏡像成員出現故障,從而導致池出現故障。無論出於何種原因,即使為該池設置了該選項,備件也從未自動更換,但這無關緊要。

這是在 OmniOS 伺服器上。池資訊如下:

 pool: dev-sata1
state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
  see: http://illumos.org/msg/ZFS-8000-JQ
 scan: resilvered 1.53T in 21h6m with 0 errors on Sat Jun 17 13:18:04 2017
config:

       NAME                       STATE     READ WRITE CKSUM
       dev-sata1                  UNAVAIL    227   623     0  insufficient replicas
         mirror-0                 ONLINE       0     0     0
           c1t5000C5003ECEEC42d0  ONLINE       0     0     0
           c1t5000C5003ED6D008d0  ONLINE       0     0     0
         mirror-1                 ONLINE       0     0     0
           c1t5000C500930358EAd0  ONLINE       0     0     0
           c1t5000C500930318E1d0  ONLINE       0     0     0
         mirror-3                 ONLINE       0     0     0
           c1t5000C5003F362DA7d0  ONLINE       0     0     0
           c1t5000C5003F365D94d0  ONLINE       0     0     0
         mirror-4                 ONLINE       0     0     0
           c1t5000C50064D11652d0  ONLINE       0     0     0
           c1t5000C500668EC894d0  ONLINE       0     0     0
         mirror-5                 ONLINE       0     0     0
           c1t5000C5007A2DBE23d0  ONLINE       0     0     0
           c1t5000C5007A2DF29Cd0  ONLINE       0     0     0
         mirror-6                 UNAVAIL    457 1.22K     5  insufficient replicas
           15606980839703210365   UNAVAIL      0     0     0  was /dev/dsk/c1t5000C5007A2E1359d0s0
           c1t5000C5007A2E1BAEd0  FAULTED     37 1.25K     5  too many errors
         mirror-7                 ONLINE       0     0     0
           c1t5000C5007A34981Bd0  ONLINE       0     0     0
           c1t5000C5007A3929B6d0  ONLINE       0     0     0
       logs
         mirror-2                 ONLINE       0     0     0
           c1t55CD2E404B740DD3d0  ONLINE       0     0     0
           c1t55CD2E404B7591BEd0  ONLINE       0     0     0
       cache
         c1t50025388A0952EB0d0    ONLINE       0     0     0
       spares
         c1t5000C5002CD7AFB6d0    AVAIL

磁碟“c1t5000C5007A2E1BAEd0”目前在數據恢復設施中,但他們已經用盡了替換磁頭的供應,包括我們提供的供體磁碟。最終找到了標記為失去的磁碟,並且可能會恢復,但這是最後一個結果,因為我不知道它與其他磁碟相比有多過時,以及這對一致性意味著什麼。要被視為捐贈者,序列的前 3 個字母需要匹配,以及站點程式碼。我在池中有 4 個其他磁碟符合該標準並且在池關閉時執行良好。

所以,關於我的問題:在使用 dd 將整個供體磁碟複製到每個新磁碟後,我是否可以用 4 個新磁碟替換其他 4 個可能與供體兼容的磁碟(基於序列號)?

我不清楚池在導入磁碟時是否需要 WWN 或序列號來匹配它儲存的內容(如果它儲存除了記憶體之外的任何內容),或者它是否掃描每個磁碟上的元數據以確定它是否可以導入池. 如果後者是真的,我再獲得 4 個供體磁碟的策略是否可行?

絕對不要用dd!ZFS 對此有一個內置命令,Oracle 的文件中對此進行了很好的描述。您應該能夠用於zpool replace tank <old device> <new device>執行操作的主要部分,但還有一些其他輔助命令:

以下是更換磁碟的基本步驟:

  • 如有必要,使用zpool offline命令使磁碟離線。
  • 取出要更換的磁碟。
  • 插入替換磁碟。
  • 執行zpool replace命令。例如: zpool replace tank c1t1d0
  • 使用命令使磁碟聯機zpool online

手冊頁還有一些附加資訊:

zpool replace [-f]  pool device [new_device]

Replaces old_device with new_device.  This is equivalent to attaching
new_device, waiting for it to resilver, and then detaching
old_device.

The size of new_device must be greater than or equal to the minimum
size of all the devices in a mirror or raidz configuration.

new_device is required if the pool is not redundant. If new_device is
not specified, it defaults to old_device.  This form of replacement
is useful after an existing disk has failed and has been physically
replaced. In this case, the new disk may have the same /dev path as
the old device, even though it is actually a different disk.  ZFS
recognizes this.

-f  Forces use of new_device, even if its appears to be in use.
    Not all devices can be overridden in this manner.

當然,最好先在具有類似配置的 zpool 中的虛擬磁碟的 VM 上嘗試此操作,而不是第一次在包含您關心恢復的數據的池上嘗試此操作。

順便說一句,文件的其他部分解釋了更多關於熱備件的資訊,並且可能包括解釋為什麼你的沒有被使用的指針。稍微戳一下以確保它下次不會再次崩潰可能很有價值:(。

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