無法替換 raidz 中遺失的磁碟

無法替換 raidz 中遺失的磁碟

更換主機板後,我的 raidz 效能下降 - 找不到磁碟。遺失的磁碟曾經是/dev/sdh,但現在它被命名為/dev/sdg - 這就是問題的原因。

在降級的 zpool 中,我設法使用其 uid(我使用 zdb 命令找到它)來使丟失的磁碟離線。所以現在退化的池子看起來像這樣:

pool: Media
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
    Sufficient replicas exist for the pool to continue functioning in a
    degraded state.
action: Online the device using 'zpool online' or replace the device with
    'zpool replace'.
scrub: scrub completed after 2h10m with 0 errors on Thu May  1 14:02:43 2014 
config:

    NAME                                                      STATE     READ WRITE CKSUM
    Media                                                     DEGRADED     0     0     0
      raidz1-0                                                ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B0_WD-WMAY00171958  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WCAY00424060  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WMAY04082675  ONLINE       0     0     0
      raidz1-1                                                DEGRADED     0     0     0
        sde                                                   ONLINE       0     0     0
        sdf                                                   ONLINE       0     0     0
        sdh                                                   OFFLINE      0     0     0

但是,我沒有成功地將 /dev/sdh 替換為 /dev/sdg:

zpool replace Media 3840188586753206212 /dev/disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M1843609 -f
invalid vdev specification
the following errors must be manually repaired:
/dev/disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M1843609 is part of active pool 'Media'

... 我要怎麼解決這個問題?

答案1

發出命令

sudo blkid

您可能會發現您正在嘗試使用 raidz 1-0 的成員或保留的備用成員來修復 raidz 1-1。 rgardless 你應該確保將來透過 id 而不是 /dev/sdx 組裝你的 raid 陣列

回應有關無視會員資格的評論。這是危險的做法。確保您的備份是最新的且可存取。這不是我最強的套裝但我確實發現:

這顯然已經在這裡被問到並回答了更換 zpool 中的死磁碟

我還在這裡找到了可能相關也可能不相關的資訊:

http://docs.oracle.com/cd/E19253-01/819-5461/gaypw/index.html

刪除 zpool 的成員

zpool remove pool vdev

來源:http://manpages.ubuntu.com/manpages/lucid/man1/zpool.1M.html

答案2

我解決了。雖然不完全確定如何。在這過程中的某個時刻(我認為在導出池並使用不同的名稱再次導入之後),驅動器不是通過其傳統名稱“/dev/sd*”尋址,而是通過其 ID 尋址。我沒有做任何事情來強制使用 ID 尋址方案 - 它只是發生了。

        NAME                                                      STATE     READ WRITE CKSUM
    Media                                                     ONLINE       0     0     0
      raidz1-0                                                ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B0_WD-WMAY00171958  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WCAY00424060  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WMAY04082675  ONLINE       0     0     0
      raidz1-1                                                ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WCAY00788302  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WCAY01088068  ONLINE       0     0     0
        disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M1843609   OFFLINE       0     0   0

每當我嘗試用 /dev/sdg 取代上述故障裝置時,電腦都會回傳裝置 /dev/sdg 正忙錯誤。事實證明,由於 ID 尋址的改變,池在一定程度上自我「治癒」了。

當我意識到 zpool 中的條目已經指向我嘗試設定的裝置 /dev/sdg 的 ID 時,我只需將磁碟機置於線上狀態即可

zpool online Media /dev/disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M1843609 

並且礦池開始重新同步。

順便說一句:我還嘗試擦除驅動器 /dev/sdg 中的數據,以清除所有標籤,並使驅動器忘記它已經是活動池的一部分。我不認為它有幫助,但也許它產生了我不知道的效果。 dd 清除在上面提到的線程中進行了描述。

我希望這可以幫助有類似問題的人。感謝所有花時間閱讀我的問題的人。

相關內容