Sound! Euphonium
529 words
3 minutes
Btrfs-snap自动快照
为了防止我的赛博arch灵车开炸了,使用 btrfs
+snap-pac
+snapper
+grub-btrfs
安装包前后、定期创建快照,并且在grub引导使用快照启动
# 我的文件系统Btrfs 文件系统 (top level 5)├── @ (ID 256) # 根目录 /│ ├── var/lib/portables # 系统服务目录(与本文无关)│ └─── var/lib/machines # 容器目录(与本文无关)└── @home (ID 257) # /home 目录 子卷
snap组件
组件 | 服务类型 | 功能 |
---|---|---|
snap-pac | pacman hooks | 在pacman操作前后创建快照 |
snapper | systemd timer | 定期清理/创建时间线快照 |
grub-btrfs | systemd service | 更新GRUB中的快照启动项 |
sudo pacman -S snapper snap-pac grub-btrfs
根分区、home分区创建配置:
sudo snapper -c root create-config /sudo snapper -c home create-config /home
编辑配置文件:
sudo vim /etc/snapper/configs/rootsudo vim /etc/snapper/configs/home
主要编辑以下内容
TIMELINE_CREATE="yes" #启用时间线快照创建TIMELINE_CLEANUP="yes" #启用时间线快照清理TIMELINE_MIN_AGE="1800" #快照的最小保留时长,1800秒即不足30分钟的新快照不会被自动删除TIMELINE_LIMIT_HOURLY="5" #每小时最多保留的时间线快照数量TIMELINE_LIMIT_DAILY="7" #限制每天最多保留的时间线快照数TIMELINE_LIMIT_WEEKLY="0" #同上TIMELINE_LIMIT_MONTHLY="0" #同上TIMELINE_LIMIT_YEARLY="0" #同上
启动服务
# 启用snapper的自动清理服务(不是snap-pac.cleanup)sudo systemctl enable snapper-cleanup.timersudo systemctl start snapper-cleanup.timer
# 启用时间线快照服务sudo systemctl enable snapper-timeline.timersudo systemctl start snapper-timeline.timer
# 启用启动时快照服务sudo systemctl enable snapper-boot.timersudo systemctl start snapper-boot.timer
测试
#测试快照创建
sudo snapper -c root list # 查看快照sudo pacman -S --needed --noconfirm fastfetchsudo snapper -c root list # 查看快照
查看快照前后差异sudo snapper -c root status 0..1
grub检查
# 更新 GRUB 菜单sudo grub-mkconfig -o /boot/grub/grub.cfg
# 验证快照项sudo grep -A 5 "submenu" /boot/grub/grub.cfg
注:snapper
默认创建只读快照不能直接引导启动,通过配置 grub-btrfs
钩子可以将其挂载为可读写可以正常启动。
sudo vim /etc/mkinitcpio.conf
# 在HOOKS中添加grub-btrfs-overlayfsHOOKS=(plymouth base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck grub-btrfs-overlayfs)
注:systemd 钩子与 grub-btrfs-overlayfs 钩子不兼容 详见 [SOLVED] btrfs snapshots are read-only despite using grub-btrfs grub-btrfs-overlayfs hook fails if the systemd hooks are used (instead of udev) · Issue #199 · Antynea/grub-btrfs
Btrfs-snap自动快照
https://kmk.moe/posts/linux/btrfs-snap/