我有一台 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 destroy
、gpart create
、 和gpart add
,使其gpart show
与我的其他驱动器显示的布局基本相同 - boot、free、swap、zfs、free。一个区别是,我特意购买了一个更大的驱动器,这样当我逐渐更换故障驱动器时,最终我自然会在池中拥有更多空间。因此,我使 freebsd-zfs 分区比现有驱动器上的分区更大,尽管其中大部分将无法使用,直到我最终更换所有当前较小的驱动器(对吗?)。我应该确保在最后保留一些重要的可用空间,以考虑到未来驱动器的驱动器大小可能略有不同(对吗?)。
(4) geli init
freebsd-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) 关于次要密码问题:我对新磁盘使用了相同的密码,并且(没有进一步执行任何操作)我仍然只需要在启动时输入一次。