[Share Experiences] 使用btrfs文件系统时fstab的妙用
Tofloor
poster avatar
AMZ
deepin
2024-04-03 20:56
Author
UUID=d7d81d36-6cf3-400a-bf9b-6f48c6919b05  /  btrfs subvolid=257,ssd,compross=zstd:1,rw,relatime	0	1

UUID=d7d81d36-6cf3-400a-bf9b-6f48c6919b05 /home btrfs subvolid=258,ssd,compross=zstd:1,rw,relatime	0	2

UUID=7C33-3E9A	/boot/efi	vfat	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro	0	2

UUID=631ad277-8410-4edb-8466-a9a1da1b01ab	 none	 swap	defaults,pri=-2	0	0

以上截图的分区结构,配套的fstab写法

子卷的挂载

子卷是创建在父卷之下,每个 btrfs 文件系统都有一个 ID 为 5 的顶层子卷。它可以挂载为 /(默认情况下),或者可以挂载为另一个子卷。子卷可以在文件系统中移动,它们通过其 ID 而不是路径来标识。

#创建一个子卷

sudo mount /dev/sda3 /mnt  #通过挂载直观的看到父卷
sudo btrfs subvolume create /mnt/@  #创建一个新的子卷

#列出当前路径下的子卷

sudo btrfs subvolume list -p /mnt
alley@mibook:~$ sudo btrfs subvolume list -p /mnt
请输入密码:
验证成功
ID 680 gen 74534 parent 5 top level 5 path @homeuos
ID 681 gen 74534 parent 5 top level 5 path @uos
ID 698 gen 74663 parent 5 top level 5 path @
ID 699 gen 74663 parent 5 top level 5 path @home
ID 766 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-13_09-00-02/@
ID 767 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-13_09-00-02/@home
ID 768 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-13_09-01-21/@
ID 769 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-13_09-01-21/@home
ID 770 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-24_08-26-30/@
ID 771 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-24_08-26-30/@home
ID 772 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-24_08-46-29/@
ID 773 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-24_08-46-29/@home
ID 774 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-25_08-58-13/@
ID 775 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-25_08-58-13/@home
ID 776 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-26_19-05-40/@
ID 777 gen 74534 parent 5 top level 5 path timeshift-btrfs/snapshots/2022-11-26_19-05-40/@home

如上每一个子卷都有一个ID,通过ID即可定位到子卷

在引导启动时在grub.cfg添加内核参数

rootflags=subvol=@,也可以使用rootflags=subvolid=698   #这里指向/目录,进而识别/boot内核

在fstab中UUID将挂载点引用在btrfs父卷,再使用此参数,进一步定位到子卷。这一切都是受内核控制的

因此在父卷一样的UUID下我们得以分别挂载子卷为不同的路径,此处也是和传统文件系统的一个区别

subvolid=698   或者  subvol=@

btrfs支持的透明压缩功能可以加入如下参数

compross=zstd:1   #zstd可以更换为zlib 为压缩算法工具,后面的数字1为指定压缩级别

btrfs已经默认对ssd优化,因此ssd参数可以不填加。

Reply Favorite View the author
All Replies

No replies yet