更改 ZFS 磁碟引用以使用 GPTID 而不是 GEOM 名稱?

更改 ZFS 磁碟引用以使用 GPTID 而不是 GEOM 名稱?

我在一台可愛的小型 HP ProLiant MicroServer 上建置了一個 FreeNAS 裝置。

在儲存方面,我使用 RAIDZ1 建立了一個 3 磁碟 ZFS 池。我從 3 個小磁碟開始,同時熟悉了 FreeNAS,但最終決定用它取代我的家庭 NAS。

因此,我購買了新的 2 TB 磁碟,並每次更換一個更大的磁碟,讓池在每次更換後重新同步。

透過 GUI 建立的原始池使用 GPTID 引用。zpool status會顯示類似這樣的內容:

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

        NAME                                          STATE     READ WRITE CKSUM
        vol2                                          ONLINE       0     0     0
          gptid/96857d85-6c2f-11e3-9387-78acc0f794bd  ONLINE       0     0     0

當我用 替換池中的磁碟時zpool replace,我最終使用了 GEOM 名稱(阿達N) 反而。老實說,我發現這種方式更容易、更直覺。

但似乎使用 GEOM 名稱引用磁碟會帶來磁碟機在重新啟動時重新標記的風險,令人困惑的 ZFS並可能在此過程中損壞您的 ZFS 池。

我想我可以「離線」每個磁碟並zpool replace使用它們的 GPTID 替換它們,我認為這將需要重新同步,從而使我的資料在發生時面臨風險。

但是,我似乎找不到我的“ada”磁碟的任何 GPTID。ls /dev/gptid僅列出我的第四個目前未使用的磁碟。glabel list傳回相同的磁碟/GPTID 和不同的 FreeNAS 分割區。

  • 用 GPTID 取代引用的 GEOM 名稱其實有什麼意義嗎?
  • 為什麼我看不到新磁碟的 GPTID?在分配 GPTID 並glabel list返回其名稱之前,我需要做些什麼嗎?
  • 有沒有更安全的方法來做到這一點,而不涉及重新同步?

謝謝!

答案1

• 用 GPTID 取代引用的 GEOM 名稱其實有意義嗎?

GEOM 名稱是從控制器插槽產生的,因此如果交換磁碟的連接器,它們的 GEOM 名稱也會交換。 GPTID 名稱基於磁碟序號,並且在任何地方都是相同的。

•為什麼我看不到新磁碟的GPTID?在分配 GPTID 並且 glabel list 將返回它們的名稱之前,我需要做些什麼嗎?

當磁碟被一個 id(在您的情況下為 zpool 中的 GEOM)使用時,其他 id(包括 GPTID)將被封鎖。因此,當您從 zpool 中分離磁碟或將其離線時 - /dev/gptid 中會出現缺少 gptid

•是否有更安全的方法來做到這一點,而不涉及重新同步?

唯一的方法是分離磁碟並使用另一個名稱將其再次附加到池中。重新同步並沒有你想像的那麼危險,因為它只是一個鏡像驗證和同步的過程。它僅複製不同步的數據,因此您只需承擔在磁碟分離和重新連接之間進行更改的風險。

答案2

ZFS 的設計具有數據有效性目標:它不會提供損壞的數據,但如果無法產生正確的數據(可配置的預設行為),則不會提供任何數據。只要 ZFS 能夠找到它們,移動池磁碟就不會令 ZFS 感到困惑。 這個連結,(部分德語)非常有幫助。這只是一個不完整的提示──這樣考慮吧。

相關內容