btrfs子卷管理和TimeShift踩坑日记

起因

高中时代曾经购入过一台ThinkPad并安装了LinuxMint系统,历尽磨难 久经沙场后软件环境已不知道被折腾成什么样子。今晚误触打开TimeShift后几行猩红的刺目提示就冒了出来:

系统分区存在无法支持的子卷布局。目前只支持具有 @ 和 @home 子卷的Ubuntu类型布局。

应用将会退出。

这是使用btrfs快照模式的timeshift-gtk(即为LinuxMint预装的快照系统管理备份软件) 在非标准btrfs字卷下的错误提示,这台老ThinkPad的系统根目录是从ZFS迁移到btrfs的,有不妥善之处也在意料之中,之前遇到此类问题在网上基本找不到有用资料,故写下本篇博客记录下btrfs子卷的管理过程和TimeShift的一些坑点。

问题分析

关于btrfs子卷(subvolume)的概念在此不再赘述,有需要的读者请自行到: Btrfs - ArchWiki了解。

使用btrfs命令获取字卷列表:

sudo btrfs subvolume list /

ID 256 gen 124164 top level 5 path @

可以看到笔者之前的配置中尚未创建@home子卷,/home目录是在@子卷下的,这样TimeShift无法对@home单独拍快照,而这也是btrfs文件系统快照的限制。

故我们需要:

  1. 创建 @home 子卷

  2. /home下的文件迁移到 @home 子卷

  3. 调整 /etc/fstab 挂载配置

  4. 配置 TimeShift 以创建系统快照

btrfs子卷操作

先在根目录下创建@home子卷:

sudo btrfs subvolume create /@home

随后查询当前块设备列表:

sudo lsblk

NAME   MA:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 238.5G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/grub
│                                /boot/efi
└─sda2   8:2    0   238G  0 part /

把刚创建好的子卷挂载到文件树上:

sudo mkdir /mnt/temp_home
sudo mount /dev/sda2 /mnt/temp_home -o subvol=@home

然后复制文件到子卷下:

sudo rsync -aHAX /home/ /mnt/temp_home/

最后编辑fstab,添加这一行,使得系统能自动挂载@home子卷:

UUID=<换成你的UUID> /home btrfs defaults,subvol=@home 0 0

# 挂载和文件系统问题

在仅仅做了以上操作,把/home迁移出来到@home子卷,并不能让Timeshift觉得这是个正常的分区,它依旧不认可这个子卷!

系统分区存在无法支持的子卷布局。目前只支持具有 @ 和 @home 子卷的Ubuntu类型布局。

应用将会退出。

经过数小时的尝试之后,笔者发现主要是挂载配置和btrfs默认子卷的问题。

设置@为默认子卷

用以下命令查看并设置@为默认子卷:

sudo btrfs subvolume list /

ID 256 gen 124164 top level 5 path @
ID 257 gen 124164 top level 5 path @home

sudo btrfs subvolume set-default 256 /

修复根目录挂载配置

笔者原来的fstab配置是这样的:

UUID=<我的磁盘的UUID> / auto defaults 0 0
UUID=<我的磁盘的UUID> /home btrfs defaults,subvol=@home 0 0

这样子挂载,根分区并没有被TimeShift正确的识别为 @卷

我们需要修改成这样:

UUID=<我的磁盘的UUID> / btrfs defaults,subvol=@ 0 0
UUID=<我的磁盘的UUID> /home btrfs defaults,subvol=@home 0 0

完成

完成以上所有配置后,重启系统让新的挂载配置生效。此时再次打开TimeShift,应该就能正常识别btrfs的子卷布局了。可以在设置中确认快照位置和配置,然后正常创建系统快照。


btrfs子卷管理和TimeShift踩坑日记
https://featherp.com/2025/10/20/btrfs子卷管理和TimeShift踩坑日记/
作者
羽毛P
发布于
2025年10月20日
许可协议