在未挂载的文件系统上创建 btrfs 子卷

在未挂载的文件系统上创建 btrfs 子卷

我正在致力于在云中自动创建 BTRFS 文件系统以实现我的目的。老实说,这个过程有点烦人,我想删掉这个过程中的几个步骤。

我的流程目前如下所示:

  1. parted /dev/sdX mklabel gpt
  2. parted /dev/sdX mkpart primary 2048s 100%
  3. 要么mkfs.btrfs /dev/sdXY进行LVM hack:
    1. pvcreate /dev/sdXY
    2. vgcreate mygroup /dev/sdXY
    3. lvcreate -l 100%FREE -n mylv mygroup
  4. MOUNTDIR="$(mktemp -d)"
  5. mount -t btrfs -o defaults,ssd,compress=lzo /dev/sdXY $MOUNTDIR
  6. btrfs subvolume create $MOUNTDIR/root
  7. umount $MOUNTDIR
  8. echo "UUID=$(blkid -s UUID -o value /dev/sdXY) /mount/dir btrfs defaults,ssd,compress=lzo,subvol=root 0 0" >> /etc/fstab

这个过程很丑陋,但是很有效。

有没有一种方法可以通过创建子卷而不安装文件系统来摆脱步骤 4-7?

答案1

我不这么认为。

Btrfs 旨在在线执行许多不同的操作,即安装文件系统。这是避免对所有内容进行两次编码的好方法,一次在内核驱动程序中进行在线操作,一次在用户空间工具中进行离线操作。不对这些东西进行两次编码可以减少错误,并且内核和用户空间功能以某种方式出现分歧的可能性也较小。

我想到的另一种方法是创建一个小型 Btrfs 文件系统,其中包含您想要的所有设置和子卷,卸载它,并获取它的块级映像。然后将该图像千篇一律的样式部署到许多新的块设备上。但这对您没有任何帮助,因为现在您必须安装文件系统才能将其大小调整(增长)到底层块设备的大小。

相关内容