我正在尝试将我的根分区从 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 setting
mountpoint=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 in
zpool 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=zfs
、bootfs
和rpool
未被 grub 正确设置(“更新”ppa:zfs-native/grub
仅用于 raring),必须添加到/boot/grub/grub.cfg
您linux
选择的语句中,请参阅https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem了解详情。