利用 snapshots 实现 KVM 备份

目前通行的对 KVM 包括 Xen 之类的 VM 做备份的方法就是使用 LVM 的 snapshots .

这里需要备份一个跑在 KVM 上的 20G 的 CentOS 镜像文件 , 路径位于/var/lib/libvirt/images/centos/centos.img 下 , 该文件是创建在 /dev/vg/centos 上的 .

悲剧的是我的 / 目录已经划分不出这么大的空间了 , 喜剧的是我的硬盘还有没有被划分的空间 . 所以接下来要做的是先划分一块硬盘空间 /dev/sda8 .

# vgextend vg /dev/sda8
# lvcreate -n backup  -L 20G vg
# mkfs.ext3 /dev/vg/backup

新建一个用来存储备份文件的目录 /backup
# mkdir /backup

将文件系统挂载至 backup
# mount /dev/vg/backup /backup

可以修改 /etc/fstab 使得每次开机自动挂载 .

下面开始创建一个 /var/lib/libvirt/images/centos-5.2/centos-5.2.img 的 LVM snapshots
# lvcreate -L 20G -s -n centos-snapshots  /dev/vg/centos

在 # lvdisplay 下就会多出来一个 /dev/vg/centos-snapshots 的信息列表 .

创建 /mnt/backup 用于挂载该 snapshots
# mkdir /mnt/backup

挂载
# mount /dev/vg/centos-snapshots /mnt/backup

开始备份 , 备份的方式有两种 , 一种使用 tar 压缩备份 , 还有一种是通过 dd 对拷 .
# tar -pczf /backups/centos.tar.gz /mnt/backup

或者
# dd if=/dev/vg/centos-snapshots of=/backup/centos.dd

接着就可以释放 centos-snaphosts 了
# umount /mnt/backup
# lvremove /dev/vg/centos-snapshots

看不懂上面的可以看他的鸟文输出 , 这里是他的超详细过程 .
这里是一篇 <<Resize a KVM Virtual Machine Image>> 的博客 , 关于如何改变 KVM 镜像大小, Jasey 没有亲自尝试 , 有兴趣的可以尝试一下 .

  • http://www.freetstar.com freetstar

    比较给力..lz应该是在翻墙之前已经写完了的吧