Get the FREE Ultimate OpenClaw Setup Guide →
npx machina-cli add skill chaterm/terminal-skills/snapshot --openclaw
Files (1)
SKILL.md
3.7 KB

快照管理

概述

LVM 快照、文件系统快照、云快照管理技能。

LVM 快照

创建快照

# 查看逻辑卷
lvs
lvdisplay

# 创建快照
lvcreate -L 10G -s -n snap_data /dev/vg0/data

# 创建薄快照
lvcreate -s -n snap_data /dev/vg0/thin_data

# 查看快照
lvs -a
lvdisplay /dev/vg0/snap_data

挂载快照

# 挂载只读
mount -o ro /dev/vg0/snap_data /mnt/snapshot

# 挂载读写
mount /dev/vg0/snap_data /mnt/snapshot

恢复数据

# 从快照恢复
lvconvert --merge /dev/vg0/snap_data

# 恢复前需卸载原卷
umount /dev/vg0/data
lvconvert --merge /dev/vg0/snap_data
mount /dev/vg0/data /data

删除快照

# 卸载并删除
umount /mnt/snapshot
lvremove /dev/vg0/snap_data

Btrfs 快照

创建快照

# 创建只读快照
btrfs subvolume snapshot -r /data /snapshots/data_$(date +%Y%m%d)

# 创建可写快照
btrfs subvolume snapshot /data /snapshots/data_writable

# 查看子卷
btrfs subvolume list /

管理快照

# 删除快照
btrfs subvolume delete /snapshots/data_20240101

# 发送快照(备份)
btrfs send /snapshots/data_readonly | btrfs receive /backup/

# 增量发送
btrfs send -p /snapshots/old /snapshots/new | btrfs receive /backup/

ZFS 快照

创建快照

# 创建快照
zfs snapshot pool/dataset@snap_$(date +%Y%m%d)

# 递归创建
zfs snapshot -r pool/dataset@snap_name

# 查看快照
zfs list -t snapshot

管理快照

# 回滚
zfs rollback pool/dataset@snap_name

# 克隆
zfs clone pool/dataset@snap_name pool/clone_dataset

# 删除
zfs destroy pool/dataset@snap_name

# 发送/接收
zfs send pool/dataset@snap | zfs receive backup/dataset

云快照

AWS EBS

# 创建快照
aws ec2 create-snapshot \
    --volume-id vol-1234567890abcdef0 \
    --description "Backup $(date +%Y%m%d)"

# 查看快照
aws ec2 describe-snapshots --owner-ids self

# 从快照创建卷
aws ec2 create-volume \
    --snapshot-id snap-1234567890abcdef0 \
    --availability-zone us-east-1a

# 删除快照
aws ec2 delete-snapshot --snapshot-id snap-1234567890abcdef0

阿里云

# 创建快照
aliyun ecs CreateSnapshot --DiskId d-xxx --SnapshotName backup

# 查看快照
aliyun ecs DescribeSnapshots

# 删除快照
aliyun ecs DeleteSnapshot --SnapshotId s-xxx

常见场景

场景 1:数据库一致性快照

#!/bin/bash
# MySQL + LVM 快照
mysql -e "FLUSH TABLES WITH READ LOCK;"
lvcreate -L 10G -s -n db_snap /dev/vg0/mysql_data
mysql -e "UNLOCK TABLES;"

# 备份快照
mount -o ro /dev/vg0/db_snap /mnt/snap
tar -czvf /backup/mysql_$(date +%Y%m%d).tar.gz /mnt/snap
umount /mnt/snap
lvremove -f /dev/vg0/db_snap

场景 2:自动快照脚本

#!/bin/bash
# Btrfs 自动快照
SNAP_DIR="/snapshots"
MAX_SNAPS=7

# 创建快照
btrfs subvolume snapshot -r /data ${SNAP_DIR}/data_$(date +%Y%m%d_%H%M)

# 清理旧快照
ls -1d ${SNAP_DIR}/data_* | head -n -${MAX_SNAPS} | xargs -r btrfs subvolume delete

场景 3:快照前后钩子

#!/bin/bash
# 快照前
systemctl stop application
sync

# 创建快照
lvcreate -L 5G -s -n app_snap /dev/vg0/app_data

# 快照后
systemctl start application

故障排查

问题排查方法
快照空间满扩展快照、减少变更
快照失效检查 COW 空间
恢复失败检查卷状态、依赖
性能下降减少快照数量
# LVM 快照状态
lvs -a -o +snap_percent

# Btrfs 空间
btrfs filesystem df /
btrfs filesystem usage /

# ZFS 空间
zfs list -o space

Source

git clone https://github.com/chaterm/terminal-skills/blob/main/backup/snapshot/SKILL.mdView on GitHub

Overview

本技能覆盖从本地存储到云端的快照管理,包括 LVM 快照、文件系统快照(Btrfs、ZFS)以及云快照的创建、挂载、恢复、删除和发送/接收。针对数据库一致性、自动化脚本和钩子场景提供实操思路,帮助快速建立可靠的备份与回滚机制。

How This Skill Works

通过对不同存储子系统使用对应命令来创建快照:LVM 使用 lvcreate、Btrfs 使用快照子卷、ZFS 使用 zfs snapshot;云端通过云服务的快照 API(如 AWS EBS、阿里云)来创建和管理。随后通过挂载、lvconvert --merge、zfs rollback、zfs clone、btrfs send/receive 等方式实现数据恢复、克隆和增量备份,并在必要时删除或清理快照。

When to Use It

  • 数据库或关键应用的一致性快照(如 MySQL 场景中的锁表/解锁与快照整合)
  • 自动化快照脚本与轮换清理,实现定期备份
  • 快照前后钩子实现最小停机的保护与平滑切换
  • 跨云环境的快照管理与云盘备份(AWS EBS、阿里云等)
  • 快速恢复、回滚与克隆演示,以及增量备份发送/接收

Quick Start

  1. Step 1: 识别目标卷并创建快照(如查看逻辑卷、创建 LV 快照、或 Btrfs/ZFS 快照)
  2. Step 2: 挂载快照进行备份或执行发送/接收实现增量备份(如 mount -o ro;btrfs send/receive;zfs send/receive)
  3. Step 3: 根据需要恢复或清理快照(如 lvconvert --merge、挂载原卷恢复数据、zfs rollback、zfs destroy、btrfs subvolume delete)

Best Practices

  • 在创建快照前对数据库执行一致性保护(如执行 FLUSH TABLES WITH READ LOCK),并在快照后解除锁定
  • 优先使用只读快照以减少数据变更风险;必要时在维护期允许写入并做好恢复路径
  • 区分 LVM、Btrfs、ZFS 的快照语义与恢复流程,确保后续的一致性与可用性
  • 使用发送/接收(send/receive)实现增量备份,降低带宽与存储开销
  • 创建后尽快进行备份、传输或清理过期快照,避免快照堆积影响性能

Example Use Cases

  • 使用 LVM 快照进行数据恢复:创建快照、挂载只读、从快照恢复数据、删除快照的完整流程
  • Btrfs 快照管理:创建只读/可写快照、查看子卷、通过 btrfs send/receive 实现增量备份
  • ZFS 快照管理:创建快照、回滚、克隆以及通过 zfs send/receive 进行远端备份
  • AWS EBS 快照:创建快照、描述、从快照创建卷、删除快照的典型操作
  • 阿里云快照:创建、描述、删除快照的基本使用流程

Frequently Asked Questions

Add this skill to your agents

Related Skills

Sponsor this space

Reach thousands of developers