故障 zpool 恢復 - 我可以將一些磁碟添加到新磁碟以允許我清理捐助者嗎?
我正在嘗試恢復已降級和被忽視的池,然後第二個鏡像成員出現故障,從而導致池出現故障。無論出於何種原因,即使為該池設置了該選項,備件也從未自動更換,但這無關緊要。
這是在 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 上嘗試此操作,而不是第一次在包含您關心恢復的數據的池上嘗試此操作。
順便說一句,文件的其他部分解釋了更多關於熱備件的資訊,並且可能包括解釋為什麼你的沒有被使用的指針。稍微戳一下以確保它下次不會再次崩潰可能很有價值:(。