FreeBSD 加密 zfs 镜像 - 更换故障驱动器,包括加密交换

FreeBSD 加密 zfs 镜像 - 更换故障驱动器,包括加密交换

我有一台 FreeBSD 11 机器,它在 ZFS 镜像中具有三个物理驱动器,并使用 GELI 加密。当我第一次构建机器时,所有这些基本上都是由 FreeBSD 安装程序神奇地设置的,所以我对它的投入或对其细节的了解很少。

SMART 已开始报告其中一个驱动器上的一些错误。它还没有死,但我想向镜像添加一个新驱动器,然后在旧驱动器实际出现故障之前将其删除。经过一番谷歌搜索后,我想我已经掌握了如何完成大部分工作,但我想把它全部运行过去,以确保我没有做错什么或遗漏什么。另外,更具体地说,我真的不确定交换部分(它也是加密的)。

我当前的三个驱动器(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 destroygpart 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

回答我自己的问题以供将来参考:

(1) 总体来说,我的计划一切顺利。

(2) 对于交换,我最终通过 添加新的交换分区gmirror insert,并通过 删除旧的交换分区gmirror remove

(3) 关于次要密码问题:我对新磁盘使用了相同的密码,并且(没有进一步执行任何操作)我仍然只需要在启动时输入一次。

相关内容