如何从 ext4 迁移到具有单独的 ext4 启动分区的 zfs 根文件系统?

如何从 ext4 迁移到具有单独的 ext4 启动分区的 zfs 根文件系统?

我正在尝试将我的根分区从 ext4 更改为 zfs(简单分区,没有 ZFS 卷管理功能),方法是将实时系统(Ubtunu 14.04)中的所有文件从 ext4 分区移动到外部设备,在分区上创建 ZFS 池并将文件移回。

有很多指南解释了如何在根 ZFS 池上设置操作系统(包括 Ubuntu),但我没有找到一个指南解释我想要进行的简单迁移,而无需设置 ZFS 启动分区/数据集(我发现最有用的是http://blog.ls-al.com/ubuntu-on-a-zfs-root-file-system-for-ubuntu-14-04/)。当然,可以从这些指南中抽象出步骤,但我宁愿从专家那里得到一些小指点,而不是自己进行反复试验。

常见问题:目前,我很困惑如何告诉我的系统在/' at boot. Although it is not recommended I guess settingmountpoint=legacy and adding an entry in/etc/fstab 下挂载 ZFS 分区(就像我迁移到另一个文件系统类型后所做的那样)应该足够了,对吧?

实际问题:

  • 如果我使用 创建池zpool create /dev/sdaX,则会收到消息ALERT! /dev/disk/by-uuid/<uuid of my root partition> doesn't exist。当我使用 创建池时,zpool create /dev/disk/by-id/<id>我会收到/usr/sbin/grub-probe: error: failed to get canonical path of/dev/ when I run update-grub in chroot in live system. What Do I have to specify inzpool create`?
  • 我是否必须在实时系统内设置 chroot 系统(导入池、更新 initramfs)?我将文件复制回命名rpool/ROOT/ubuntu-1并添加rpool/ROOT/ubuntu-1到的数据集/etc/fstab(在该数据集中)。

在 initramfs shell 中运行mount -t zfs rpool/ROOT/ubuntu-1 /root && chroot /root zpool import rpool不起作用,因为未加载 zfs 模块。ubuntu-zfs已安装,并且我将其用于数据分区很长时间而没有任何问题。

答案1

内核参数boot=zfsbootfsrpool未被 grub 正确设置(“更新”ppa:zfs-native/grub仅用于 raring),必须添加到/boot/grub/grub.cfglinux选择的语句中,请参阅https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem了解详情。

相关内容