如何:重建根 zpool

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

本文讲述了作者在重做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分区。

🏷️

标签

➡️

继续阅读