
我在一台可愛的小型 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 感到困惑。 這個連結,(部分德語)非常有幫助。這只是一個不完整的提示──這樣考慮吧。