2017-04-04 35 views
2

我的機器從兩個USB設備的鏡像zfs池引導。看慣了這樣的池:修復配置不當的鏡像zfs池

sudo zpool status 
pool: freenas-boot 
state: ONLINE 
scan: resilvered 891M in 15h19m with 0 errors on Wed Mar 29 03:29:55 2017 
config: 

    NAME  STATE  READ WRITE CKSUM 
    freenas-boot ONLINE  0  0  0 
     mirror-0 ONLINE  0  0  0 
     da0p2 ONLINE  0  0  3 
     da1p2 ONLINE  0  0  0 

errors: No known data errors 

我試圖與校驗和錯誤更換介質,而是通過一系列正確使用命令我結束了「並稱」在新的驅動器,而不是「附加」了。池現在是兩個設備的級聯,不再鏡像:

NAME  STATE  READ WRITE CKSUM 
    freenas-boot ONLINE  0  0  0 
     da0p2  ONLINE  0  0  0 
     da1p2  ONLINE  0  0  0 

我才知道,我不能從池中的任何更多的刪除該設備,明顯

zpool attach -f pool device new_device 

命令不起作用。我計劃將所有數據鏡像到(足夠大的)第三和第四個驅動器上,然後擺脫第一個和第二個連接的級聯。但是,鏡像似乎只能在設備的基礎上工作。我需要四個設備進行鏡像配置,這是不利的,因爲只有兩個USB端口位於機器外殼內。

什麼是移動到兩個設備的可啓動鏡像池的好方法?請記住,所涉及的機器是服務器,其啓動失敗會讓多個用戶感到不快。

回答

1
  1. 遞歸zfs snapshot根池
  2. zfs send/recv該快照到另一棒或相同大小的體積,配置爲單獨的根池
  3. 用已複製的數據可引導
  4. 重啓將此單獨的根池中的系統並從您的新根池中啓動
  5. 將這兩個枝條作爲鏡像添加到新池中,從而銷燬舊池
  6. 如果重新同步完成, e初始棒或音量並銷燬它

您現在擁有一個正確鏡像的池,其中都有兩個初始棒。

+0

聽起來不錯,但我如何快照啓動設備的文件系統?它的掛載點是/,不是嗎? – patmin

+0

@patmin您可以使用'zfs list -o name,mountpoint'顯示所有池的所有文件系統的所有掛載點,然後查找'/'。我完全不知道Linux系統上的佈局,所以我不能更具體,對不起。 – user121391

+0

我試過用zfs發送freenas-boot | sudo zfs recv -F newpool – patmin