在 OpenWrt 上使用 LXC 创建快照时出现的问题是因为你的容器配置存储在非标准路径 (/mnt/sdb/lxc/ubuntu22/),而 lxc-snapshot 默认查找 /var/lib/lxc/ 下的容器。以下是完整的解决方案:
正确创建快照的方法
1. 指定容器路径创建快照
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/
2. 列出已有快照
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/ -L
3. 恢复快照
lxc-stop -n ubuntu22
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/ -r snap0
lxc-start -n ubuntu22 -d
永久解决方案(修改默认路径)
方法1:创建符号链接
mkdir -p /var/lib/lxc/
ln -s /mnt/sdb/lxc/ubuntu22 /var/lib/lxc/ubuntu22
方法2:设置环境变量
export LXC_PATH=/mnt/sdb/lxc
方法3:修改全局配置
echo "lxc.lxcpath = /mnt/sdb/lxc" >> /etc/lxc/lxc.conf
高级用法示例
- 创建带注释的快照:
echo "Before software update" > /tmp/comment
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/ -c /tmp/comment
- 克隆快照为新容器:
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/ -r snap0 -N ubuntu22-backup
- 删除所有快照:
lxc-snapshot -n ubuntu22 -P /mnt/sdb/lxc/ -d ALL
注意事项
- 确保容器已停止再执行恢复操作
- 快照会占用存储空间,定期清理
- 对于生产环境,建议使用
rsync做额外备份:
rsync -a /mnt/sdb/lxc/ubuntu22/ /mnt/backup/ubuntu22-$(date +%Y%m%d)/
故障排查
如果仍然报错,尝试:
lxc-checkconfig # 检查LXC支持情况
ls -l /mnt/sdb/lxc/ubuntu22/ # 检查权限
df -h /mnt/sdb # 检查存储空间
通过以上方法,你应该能成功管理存储在非标准路径下的LXC容器快照。