如何:重建根 zpool
内容提要
本文讲述了作者在重做FreeBSD GPT引导分区时遇到的问题,忘记设置ashift导致ZFS创建了错误的扇区大小的根存储池。为解决问题,作者决定重建根存储池并整体重写数据。文章详细介绍了操作步骤和注意事项。
关键要点
-
作者在重做FreeBSD GPT引导分区时忘记设置ashift,导致ZFS创建了错误的扇区大小的根存储池。
-
由于SSD报告的扇区尺寸为512字节,ZFS创建了一个512字节扇区的根存储池。
-
为了提高性能,作者决定重建根存储池并整体重写数据。
-
作者关闭了加密的swap分区,并调整了swap分区的大小以腾出空间。
-
将新的设备作为mirror插入到根存储池,并拆下原先的设备。
-
修改vfs.zfs.vdev.min_auto_ashift以防止再创建错误的存储池。
-
在新的存储池上创建ZFS文件系统,并进行快照以方便数据复制。
-
将快照从旧存储池复制到新存储池,并在接收时排除压缩属性。
-
更新/etc/fstab和/boot/zfs/zpool.cache以适应新的存储池配置。
-
重启系统确认从新存储池引导后,删除原来的根存储池并恢复加密swap分区。
延伸问答
如何重建FreeBSD的根zpool?
重建根zpool的步骤包括关闭加密的swap分区、调整swap分区大小、将新设备作为mirror插入根存储池、修改vfs.zfs.vdev.min_auto_ashift、创建新的zpool和文件系统、复制快照到新存储池、更新配置文件,最后重启系统确认。
为什么需要重建根存储池?
因为在创建根存储池时忘记设置ashift,导致ZFS创建了错误的512字节扇区大小,影响性能,因此需要重建以提高性能。
在重建根zpool时需要注意哪些事项?
需要注意关闭加密的swap分区、调整swap分区大小、确保备份完整、修改ashift设置以防止错误创建存储池,以及更新/etc/fstab和/boot/zfs/zpool.cache。
如何确保新创建的zpool性能最佳?
通过设置合适的ashift值(如12)和使用支持的块大小的设备来确保新创建的zpool性能最佳。
如何处理旧根存储池的数据?
可以通过创建快照并将其复制到新存储池来处理旧根存储池的数据,确保在接收时排除压缩属性。
重建根zpool后如何恢复加密swap分区?
重建根zpool后,可以通过删除临时分区、调整swap分区大小并重新挂载swap分区来恢复加密swap分区。