Freebsd

FreeBSD 加密 zfs 鏡像 - 替換故障驅動器,包括加密交換

  • February 27, 2017

我有一台 FreeBSD 11 機器,它在 ZFS 鏡像中有三個物理驅動器,用 GELI 加密。當我第一次建構機器時,所有這些基本上都是由 FreeBSD 安裝程序神奇地設置的,所以我對它的輸入或對它的細節知之甚少。

SMART 已開始報告其中一個驅動器上的一些錯誤。它還沒有死,但我想在鏡像中添加一個新驅動器,然後在它實際發生故障之前移除舊驅動器。經過一番Google搜尋,我想我對如何做大部分事情有了一些了解,但我想把它全部過去,以確保我沒有做錯什麼或遺漏了什麼。另外,更具體地說,我真的不確定交換部分(也是加密的)。

我的三個目前驅動器(ada0、ada1、ada2)中的每一個都如下所示gpart show

=>        40  1953525088  ada0  GPT  (932G)
         40        1024     1  freebsd-boot  (512K)
       1064         984        - free -  (492K)
       2048    50331648     2  freebsd-swap  (24G)
   50333696  1903190016     3  freebsd-zfs  (908G)
 1953523712        1416        - free -  (708K)

zpool status:

 pool: zroot
state: ONLINE
 scan: scrub repaired 0 in 2h7m with 0 errors on Mon Feb 20 14:43:08 2017
config:

   NAME            STATE     READ WRITE CKSUM
   zroot           ONLINE       0     0     0
     mirror-0      ONLINE       0     0     0
       ada0p3.eli  ONLINE       0     0     0
       ada1p3.eli  ONLINE       0     0     0
       ada2p3.eli  ONLINE       0     0     0

/etc/fstab:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/swap.eli            none    swap    sw              0       0

swapinfo:

Device          1K-blocks     Used    Avail Capacity
/dev/mirror/swap.eli  25165820   142220 25023600     1%

gmirror status:

      Name    Status  Components
mirror/swap  COMPLETE  ada0p2 (ACTIVE)
                      ada1p2 (ACTIVE)
                      ada2p2 (ACTIVE)

所以,我想我會做以下事情:

(1) 物理安裝新驅動器。

(2) 也許對它進行 SMART 檢查,也許用隨機數據填充它。

(3) gpart destroy, gpart create, 和gpart add, 使其與gpart show我的其他驅動器的佈局基本相同 - boot, free, swap, zfs, free。一個區別是我有意購買了更大的驅動器,以便隨著我逐漸更換故障驅動器,最終我自然會在池中擁有更多空間。因此,我將 freebsd-zfs 分區設置為比現有驅動器更大,儘管在我最終替換所有目前較小的驅動器之前,其中大部分將無法使用(對嗎?)。而且我應該確保在最後保留一些重要的可用空間,以考慮未來驅動器的驅動器大小略有不同的可能性(對嗎?)。

(4) geli initfreebsd-zfs 分區。 **這裡有一個具體的小問題:**現在,我所有的三個物理驅動器都有相同的 GELI 密碼。當機器啟動時,我只被要求輸入一個密碼,而不是每個驅動器一個密碼。我喜歡這個。如果我再次為新驅動器使用相同的密碼,這會神奇地發生嗎,還是我必須以某種方式告訴 FreeBSD 引導過程也應該嘗試我為這個新驅動器輸入的密碼?

(5)geli attach到freebsd-zfs分區。

(6)zpool attach新的加密分區;就像是zpool attach zroot ada0p3.eli ada3p3.eli

(7) 我知道 FreeBSD 現在會告訴我gpart bootcode在新驅動器上執行。這樣做。

(8) 等待重新同步完成。

(9) 物理移除舊驅動器。重新啟動後,也將其從 zpool 中刪除。

我……我想這就是我所做的?但是,就像我上面所說的,我對交換完全不確定。它會以某種方式神奇地成為 /dev/mirror/swap.eli 的一部分嗎?我必須以某種方式添加它嗎?同樣,舊驅動器的交換空間是否會神奇地消失?我必須以某種方式將其刪除嗎?

提前感謝您的幫助。

回答我自己的問題以供將來參考:

(1) 一般來說,我計劃中的一切都很好。

(2) 對於交換,我最後通過添加新的交換分區gmirror insert,並通過刪除舊的gmirror remove

(3) 關於次要密碼問題:我為新磁碟使用了相同的密碼,並且(沒有做任何進一步的事情)我仍然只需要在啟動時輸入一次。

引用自:https://unix.stackexchange.com/questions/347192