我正在致力于在云中自动创建 BTRFS 文件系统以实现我的目的。老实说,这个过程有点烦人,我想删掉这个过程中的几个步骤。
我的流程目前如下所示:
parted /dev/sdX mklabel gpt
parted /dev/sdX mkpart primary 2048s 100%
- 要么
mkfs.btrfs /dev/sdXY
进行LVM hack:pvcreate /dev/sdXY
vgcreate mygroup /dev/sdXY
lvcreate -l 100%FREE -n mylv mygroup
MOUNTDIR="$(mktemp -d)"
mount -t btrfs -o defaults,ssd,compress=lzo /dev/sdXY $MOUNTDIR
btrfs subvolume create $MOUNTDIR/root
umount $MOUNTDIR
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 文件系统,其中包含您想要的所有设置和子卷,卸载它,并获取它的块级映像。然后将该图像千篇一律的样式部署到许多新的块设备上。但这对您没有任何帮助,因为现在您必须安装文件系统才能将其大小调整(增长)到底层块设备的大小。