将 14.04 服务器安装到现有的 btrfs 子卷

将 14.04 服务器安装到现有的 btrfs 子卷

我有一个由 4 个磁盘组成的现有 btrfs raid1 卷。它已经包含几个子卷,我希望将 Ubuntu 安装到其中一个子卷。我已完成以下操作:

mount -o subvolid=0 /dev/sda1 /btrfsroot
btrfs subvol create rootsfs /btrfsroot
btrfs subvol set-default 376 /btrfsroot
mount /dev/sda1 /rootfs   (to ensure I've set the correct id)

但是安装程序在分区程序之后崩溃了(说它无法从中删除所需的文件/target/)。我已将其设置为使用分区而不/dev/sda1进行格式化。btrfs/

我做了大量研究,但乍一看很难说出将 Ubuntu 安装到现有btrfs子卷的最佳做法是什么。我也尝试过:

  • /dev/sd[a-d]根本不进行分区并将它们添加到btrfs卷中。当我以这种方式安装时,它可以工作(我必须手动安装/dev/sda/target/),但随后我grub在重新启动时卡在调试 shell中。
  • 为每个磁盘划分 100 MB 空间(作为/dev/sda1)并创建一个mdadm阵列以用作/boot/btrfs分区为/dev/s[a-d]2)。分区后安装程序再次崩溃,提示无法删除所需文件,但/target/实际上什么都没有。

我已阅读信息在 Ubuntu 维基文章中我猜我遇到了他们提到的 set-default 破坏 Ubuntu 布局的问题。虽然我的理解是这只是安装后的问题 - 我甚至无法做到这一点。

最佳做法是什么?我想要安装到单独的子卷上的原因是为了使我的 Ubuntu 安装与驱动器上的其他所有内容区分开来。在不冒数据丢失风险的情况下,将安装到根子卷中是否安全?

答案1

免责声明

我从未使用过 btrfs RAID。该解决方案仅在单卷 btrfs 根分区上进行了测试


  1. 确保根候选上没有/@和子卷。/@home

  2. 启动 Ubuntu 安装程序,然后选择其他东西当它询问您有关磁盘分区的问题时。

  3. 将您的 btrfs 分区标记为根文件系统,但是不要让安装程序重新格式化它

  4. 按照您的喜好排列所有其他分区。我总是选择在系统上使用外部/boot分区gpt,这样以后就可以迁移到更高级的分区(例如bcache)或其他分区。(在 上,gpt您可以拥有任意数量的分区,因此我认为使用专用分区没有什么真正的缺点/boot。)

  5. 完成安装。

安装程序将为您创建@@home子卷。稍后您可以将它们重命名为其他名称 - 只需确保您也在/etc/fstab和上更新新名称即可/boot/grub/grub.cfg

在 Ubuntu 14.04、Mint 16、Mint 15、Ubuntu 13.10 和 Ubuntu 13.04 上进行了测试。

相关内容