我可以使用 btrfs 子卷来尝试多个 Linux 发行版,而无需提交一定数量的磁盘空间吗?

ahe*_*wer 7 btrfs

对于像 ext4 这样的文件系统,如果我想尝试新的 Linux 发行版,我必须首先缩小现有分区,然后创建一个锁定到特定大小的新分区,以便我可以安装发行版。这有一些缺点:

  • 必须立即向发行版提交一定数量的存储
  • 如果此存储空间未使用,则很难重新分配它
  • 磁盘操作有些棘手,尤其是移动事物以创建连续的可用空间

BTRFS 子卷可以解决这个问题吗?我真的可以将整个磁盘作为卷/分区,然后我的引导分区、交换分区、根分区和主分区可以作为子卷存在并占用它们占用的空间吗?我可以随时创建一个初始化为零大小的新子卷吗?真的是这样吗?

Fré*_*yer 10

我已经部分地做到了。

从 OpenSUSE 安装(btrfs默认使用)中,我有:

  • 创建了一个子卷 ( btrfs subvol create /debian),
  • 安装debootstrap
  • deboostrap --arch=amd64 stable /debian http://deb.debian.org/debian/,
  • 在a中chroot /debian,安装btrfs-tools,然后是内核,并设置密码!
  • 返回 OpenSUSE root shell 修改/boot/grub2/grub.cfg,添加一项。

通常,我会复制一个 OpenSUSE 条目,更改名称 ( Debian),并在行上linux添加rootflags=subvol=@/debian. 我还使用 Debian 内核和 initrd 文件(linux=initrd=行)。注意,GRUB搜索默认根FS,那么这两个文件都在/debian/boot/

重新启动...我有一个 Debian 启动条目,可以从 debian 子卷启动 Debian。默认情况下它不会挂载任何内容,但mount -o subvol=@/home /dev/sda2 /home例如可以挂载 OpenSUSE/home子卷并使其在 Debian 上也可用。当然,编辑/etc/fstab会使事情永久化。(并且使用 UUID 更好)。

此安装并不完全令人满意。在 Suse 上更新内核将删除 GRUB Debian 条目。并且在 Debian 上更新内核不会更新 GRUB 配置。(GRUB os-prober 仅扫描分区,而不扫描子卷)。

但是,我的设置证明我们可以在同一分区上安装多个 Linux btrfs

注意 OpenSUSE 命名根子卷@。我们可以用 来查看它btrfs list /。我不知道其他发行版是否使用其他约定。第一行btrfs subvol show /debian给出了要使用的名称rootlags=subvol=


Aus*_*arn 7

是的你可以。看看每个大牌发行版:

\n
    \n
  • 通过使用几乎任何其他最新发行版的现有安装中的标准 Gentoo 安装过程,可以通过这种方式轻松安装 Gentoo。
  • \n
  • Alpine Linux 可以通过使用其迷你根文件系统之一(而不是 \xe2\x80\x98normal\xe2\x80\x99 安装方法)以这种方式轻松安装,再次从几乎任何发行版的现有安装中进行安装。
  • \n
  • Arch Linux大多数情况下可以使用它\xe2\x80\x99 的正常安装过程轻松安装,但需要对引导加载程序配置进行特殊处理。
  • \n
  • debbootstrap通过使用现有安装(专为从实时系统安装而设计),然后手动配置引导加载程序,可以相对轻松地以这种方式安装 Debian 。
  • \n
  • 理论上,Ubuntu 可以像 Debian 一样使用这种方式安装debbootstrap,但 Ubuntu 开发人员完全不支持 AIUI 这样的安装,因此它可能无法可靠地工作。
  • \n
  • openSUSE、Fedora 和大多数 RHEL 克隆(CentOS、Alma、Rocky、Oracle Linux 等)理论上可以通过这种方式安装,但在设置分区时需要特殊的手动配置。
  • \n
\n

然而,这种方法存在一些实际问题:

\n
    \n
  • 虽然您可以通过这种方式安装大多数发行版,但它们通常对管理此类设置没有很好的支持。特别是,您\xe2\x80\x99 可能会遇到引导加载程序配置问题,特别是如果您选择默认使用不同引导加载程序的发行版。
  • \n
  • 与上述观点相关的是,大多数人并不使用这种类型的设置,因此它\xe2\x80\x99 没有很好的文档记录,没有经过充分的测试,如果遇到问题,你可能很难找到支持。
  • \n
  • BTRFS 子卷依赖于文件系统本身。如果一个发行版破坏了文件系统,您将丢失所有发行版,而不仅仅是破坏文件系统的发行版。
  • \n
  • BTRFS 子卷不是块设备。这与 ZFS zvols 或 LVM 逻辑卷不同。理论上,您可以通过在其上创建交换文件来使用一个交换空间,但无论如何您可能只需要一个共享交换分区(如果您\xe2\x80\x99正在使用多重引导设置,则几乎永远不应该使系统休眠,这是每个发行版需要单独交换分区的唯一原因)。
  • \n
\n

一般来说,最好使用LVM代替平面分区,并为每个发行版\xe2\x80\x99s 根文件系统创建一个逻辑卷(加上一个用于/home交换空间,一个用于交换空间)。您仍然需要为每个发行版设置一些基准空间量,但您可以使用 LVM 轻松地动态调整内容,前提是您拥有可以在线调整大小(并且可以缩小)的文件系统。请注意,在此设置中,您仍然需要 \xe2\x80\x98regular\xe2\x80\x99 引导分区(和 EFI 系统分区)。与您建议的 BTRFS 设置不同,几乎所有主要发行版都很好地支持这一点,并且如果您\xe2\x80\x99 小心初始设置,它基本上只需在初始安装之外无需任何手动操作即可工作

\n