我这里遇到了一点麻烦。我将尝试尽可能简洁地描述我的目标:
我正在为我的雇主设置存储服务器,使用两个 Intel DC S3500 系列 120GB 固态驱动器(以及 12 个 2TB SAS 驱动器用于存储)。我想在这些驱动器上安装带有 root-on-zfs 的 freebsd10,但仅使用一个小(12GB)分区为操作系统创建 zfs 镜像。剩余空间,我想用于 ZIL/SLOG (24GB),其余空间用于 L2ARC(条带化,两个驱动器上剩下的所有空间)。
我不知道如何告诉 freebsd10 安装程序仅使用“ada0p2”和“ada1p2”作为安装操作系统的镜像。我只能选择使用整个驱动器。
此外,我尝试正常安装,然后使用 zfs send 和 receive 进行备份,使用 gpart 调整分区大小,然后恢复我的 zroot 池的副本流...当我这样做时,系统拒绝启动。
我该如何实现这个目标?任何对此的帮助将不胜感激。
答案1
我认为安装程序还不能完成您想要的操作(尽管随着时间的推移它会变得更好),因此您可以尝试启动安装映像,并从初始菜单运行 root shell。然后,您可以使用gpart
、zpool
和zfs
手动配置磁盘并从映像上的存档安装系统。
网上有很多指南,但我发现马修·西曼的是最适合我的需求的。它描述了支持引导环境的镜像 root-on-zfs 设置(我使用稍微修改的端口版本sysutils/beadm
来管理我的引导环境)。它没有讨论配置日志和缓存设备,但它应该为您提供足够的信息来根据需要安装操作系统,然后您可以在事后添加日志记录和缓存设备。
还有一些很好的资源链接自根ZFSFreeBSD wiki 上的页面。
无论您决定遵循哪个指南,个人经验建议您在将盒子提交到生产环境之前,给自己一些时间运行几次,以感受它并确保您理解您的配置。
答案2
我还没有使用新的安装程序,但我已经将 mfsbsd 与 9.x 一起使用,完全按照您的描述进行操作。
mfsbsd 上的 zfsinstall 有一个选项:
-z zfs_part_size : create zfs parition of this size (default: all space left)
MFBSD使用起来确实简单快捷。
答案3
以下是我针对该问题所使用的解决方案,以供将来参考:
我使用“stock”disc1 ISO 安装了 freebsd 10.0-RELEASE,选择了 root-on-zfs 并定位了我想要使用的两个 SSD。我完成了安装,然后启动到 live-cd 环境,插入一个小 USB 闪存驱动器,在上面创建一个文件系统,制作一个 zroot@fresh 快照,并用于zfs send -R zroot@fresh > /path/to/removable/zroot.bin
创建该快照的副本流备份。为了更好地衡量,我还使用 保存了所有 zroot 池属性的副本zpool get all zroot > /path/to/removable/pool.txt
,因为这不包含在 zfs send/recv 过程中。
下一步是导出(或销毁)zroot,使其不再存在,这让我们可以用来gpart
缩小分区。然后在缩小的分区上创建一个新池,将 altroot 指定为 livecd 环境中可写的位置,例如 /mnt 或 /tmp。接下来,recv
副本流返回到重新创建的 zroot 池:zfs recv -Fdv zroot < /path/to/removable/zroot.bin
我遇到的关键问题是所有在线指南都指导您告诉 zfs 如何从池使用zpool set bootfs=zroot/boot
或类似的东西启动。然而,这是错误的启动数据集(它不存在)。 bsdinstall 自动 root-on-zfs 进程创建zroot/ROOT/default
为 bootfs。如果您需要复制任何其他设置,请检查您保存的 zroot 池属性副本。使用:标记正确的 bootfs,zpool set bootfs=zroot/ROOT/default zroot
之后一切都应该是肉汁。