全新安装 linux 时直接配置 btrfs 子卷是实现秒级快照备份最干净可靠的方式,需在安装器中规划子卷结构(@、@home、@snapshots等)、正确挂载并生成含subvol=参数的fstab,首次启动后验证子卷列表与挂载点,再配合snapper/timeshift等工具启用自动快照。

全新安装 Linux 时直接配置 Btrfs 子卷,是实现后续秒级快照备份最干净、最可靠的方式。关键不是装完再折腾,而是在安装器里就规划好子卷结构,并正确挂载——这样系统从第一次启动起就具备快照能力,无需迁移或重挂载。
安装界面中手动分区并创建子卷
主流发行版(Fedora、openSUSE、Arch ISO、Ubuntu 22.04+)的图形或终端安装器均支持 Btrfs 手动分区。进入分区步骤后:
- 选择目标磁盘,新建 Btrfs 分区(通常为整个根分区,如
/dev/nvme0n1p2) - 不直接将该分区挂载到
/,而是先设为“Btrfs”格式,挂载点留空 - 点击“添加子卷”或“Add subvolume”(不同安装器名称略有差异),依次创建以下标准子卷:
@(对应根目录/)
@home(对应/home)
@var_log(可选,隔离日志,便于清理)
@snapshots(专用于存放快照,路径需固定,如/.snapshots) - 为每个子卷指定挂载点:
@→/@home→/home@snapshots→/.snapshots(注意:不是/snapshots)
确保 /etc/fstab 正确生成
安装器会自动写入 fstab,但需确认每行使用 subvol= 参数而非设备路径直挂:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 正确写法:
UUID=xxx / btrfs defaults,subvol=@ 0 1UUID=xxx /home btrfs defaults,subvol=@home 0 2UUID=xxx /.snapshots btrfs defaults,subvol=@snapshots 0 0 - 错误写法(常见陷阱):
直接挂载整块 Btrfs 设备到/(如UUID=xxx / btrfs defaults 0 1),会导致所有子卷混在一起,无法单独快照
验证子卷结构是否生效
首次启动后立即检查:
- 运行
sudo btrfs subvolume list /,应清晰列出@、@home、@snapshots等子卷,ID 不为 5(ID 5 是默认根子卷,应避免直接使用) - 执行
findmnt -t btrfs,确认各挂载点对应的SOURCE是同一设备,但FSTYPE后明确标注subvol=@... - 检查
/.snapshots是否可写(非只读)、是否存在且为空——这是后续快照的落点目录
安装后立即启用快照机制
子卷建好只是基础,还需配套工具让快照真正可用:
- 若用 Snapper:
sudo snapper -c root create-config /(自动基于@子卷)
编辑/etc/snapper/configs/root,打开TIMELINE_CREATE="yes"并设保留策略 - 若用 Timeshift:
首次运行sudo timeshift,选择 “BTRFS Snapshots”,存储位置选/.snapshots,启用每日计划 - 若手动管理:
写个脚本放在/usr/local/bin/backup-snap.sh,内容含:sudo btrfs subvolume snapshot -r /@ /.snapshots/$(date +\%Y\%m\%d_\%H\%M)
再用 cron 每日触发










