插入驅動器時 Zpool 會降級

插入驅動器時 Zpool 會降級

為了測試新增 ZFS 日誌設備會對 ZFS 陣列產生什麼影響,我決定建立一個 zpool 並執行一些基準測試,然後插入 SSD 充當 ZIL。

不幸的是,每當我在創建 zpool 後插入 SSD,或在創建池後拔出 SSD(任何導致創建池後驅動器號發生更改的情況),然後重新啟動,我的池都會降級通過運行顯示sudo zpool status

  pool: zpool1
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: none requested
config:

    NAME                     STATE     READ WRITE CKSUM
    zpool1                   DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        sda                  ONLINE       0     0     0
        1875547483567261808  UNAVAIL      0     0     0  was /dev/sdc1

我懷疑問題源於我使用驅動器號創建池的事實,如下所示:

sudo zpool create -f zpool1 mirror /dev/sdb /dev/sdc

問題

對我來說幸運的是,這只是一個測試,沒有丟失資料的風險,但如果在現實場景中發生這種情況,從這個問題中恢復的最佳方法是什麼?顯然驅動器仍然存在並且準備就緒。

有沒有更好的方法來建立 zpool 而不使用磁碟機號碼來/dev/sda避免將來出現此問題?我注意到Ubuntu 文件指出以與我相同的方式建立 zpool。

額外資訊

  • 作業系統:Ubuntu 16.04 伺服器 4.10
  • zfsutils-linux從安裝套件安裝zfs

答案1

在獲得 Dexter_Kane 的幫助後1 級技術論壇,答案是/dev/disk/by-id/...在創建池時使用路徑。

例如

sudo zpool create zpool1 mirror \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H

轉換和修復現有池

好消息是,您可以將現有的 ZFS RAID 陣列「轉換」為使用這些標籤,從而防止將來發生這種情況,如果這種情況已經發生在您身上,甚至可以解決降級的陣列。

sudo zpool export [pool name]
sudo zpool import -d /dev/disk/by-id [pool name]

您只需確保池資料集未在使用中即可。例如,不要在池內執行命令,並確保它們不會透過 NFS 等共享。

執行轉換後,輸出sudo zpool status應類似:

  pool: zpool1
 state: ONLINE
  scan: none requested
config:

        NAME                                          STATE     READ WRITE CKSUM
        zpool1                                        ONLINE       0     0     0
          mirror-0                                    ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H  ONLINE       0     0     0

已進行測試

我確保測試一下:

  • 使用 by-id 路徑確實防止了問題的發生。
  • 在池處於降級狀態時寫入一些資料後,在執行匯出/匯入後我仍然可以讀取所有文件,並且sudo zpool status沒有報告任何錯誤。

相關內容