单个驱动器上的 btrfs 子卷策略

单个驱动器上的 btrfs 子卷策略

我刚刚在单个 SSD 驱动器上安装了 Ubuntu 21.04(这是我第一次安装),在 EFI 之外还有一个 BTRFS 格式的分区。过去运行 Windows 时,我通常会将驱动器划分为一个系统分区,操作系统和程序将存放在该分区中,然后是数据分区,数据将存放在该分区中。这样,操作系统的重新安装就不会影响我的数据,而且我可以为两者制定不同的备份策略。

据我所知,使用 ext4 的 Linux 用户经常会做同样的事情,将 /home 放在单独的分区上。但是,我认为 btrfs 提供了一种更好的方法,即使用子卷。如果我有子卷,那么我就不必担心调整分区大小——它们都共享单个驱动器的全部空间。

当我安装 Ubuntu 并选择 btrfs 格式时,它为我创建了“@”和“@/home”子卷,并安装在 / 和 /home 上。

这引出了我的问题:

如果我重新安装操作系统,“@/home”中的任何内容都不会被删除,这是真的吗?

我应该在哪里(以及如何)创建其他子卷,这些子卷也以这种方式受到保护,以免被重新安装?例如,假设我想创建一个名为“sdata”的子卷(它将有自己的文件夹结构)。在哪里/如何创建它,以保证它的安全?

  • 如果我这样做,sudo btrfs subvolume create sdata它将在“@/home/username/sdata”中创建一个子文件夹

  • 如果我这样做,sudo btrfs subvolume create /mnt/@sdata它将在 mnt/@sdata 中创建一个子文件夹。

  • 如果我这样做,sudo btrfs subvolume create /sdata它将在 ?? 中创建一个子文件夹

我想我的问题与在单驱动器系统上使用 btrfs 的“最佳”实践有关。我喜欢将我的数据与操作系统隔离开来,并为它们甚至我的数据的不同子集采用不同的备份/快照策略。

答案1

假设您想要在与 root 和 home 相同的位置创建子卷:

  1. 将驱动器临时安装到某个新文件夹

    sudo mkdir /my_disk
    sudo mount /dev/sda1 /my_disk  # sda1 will need to be your partition name
    sudo ls -la /my_disk
    # you should see your subvolumes now
    
  2. 现在您可以在已安装的磁盘内创建新的子卷

    sudo btrfs subvolume create /my_disk/sdata
    sudo ls -la /my_disk
    # you should see sdata here now
    
  3. 启动时挂载 sdata 需要编辑 /etc/fstab 文件

    blkid    # use this to get the needed UUID for your disk
    sudo nano /etc/fstab
    
  4. 添加有关磁盘、挂载点和标签的必要信息。下面是将 sdata 挂载到根目录的示例,其中还包含了用于挂载 btrfs 的选项。

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system>  <mount point>  <type>  <options>  <dump>  <pass>
    
    UUID=????  /sdata  btrfs  defaults,subvol=sdata,ssd,noatime,space_cache,commit=120,compress=zstd  0  0
    

我从Willi Mutschler 的 btrfs + luks 安装指南其中有许多不同操作系统的安装步骤。这些指南中的一个建议是将根子卷重命名为“@”,以便应用程序时间移位工作正常。

尽管如此,我的回答并没有涵盖重新安装相同或新操作系统的过程,以及如何使用 btrfs 子卷来处理。我自己也不确定。无论如何,我希望这能有所帮助。

相关内容