前几天玩玩kvm感觉挺有意思的,于是乎就想像vmarve中那样给kvm虚拟机来个快照,这样今后自己实验就很方便了。对于整个虚拟机的迁移也是很有意义的。
由于使用的是ubuntu9.10平台,接下来就在ubuntu中做相关的LVM快照。在redhat平台也是类似,就是使用root身份做如下操作。
在安装虚拟机的过程当中我们使用lvm逻辑卷作为kvm虚拟机的硬盘,这样才能使用LVM的快照功能:
创建LVM逻辑卷:sudo fdisk /dev/sda(分区,这里就不在详细介绍)
sudo partprobe
sudo pvcreate /dev/sdaX
sudo vgcreate vg00 /dev/sdaX
sudo lvcreate -L 10G -n centos vg00 (创建一个centos的逻辑卷给装系统使用)
安装kvm虚拟机:
使用virt-manager来管理kvm虚拟机。
使用LVM逻辑卷创建虚拟机:
在安装完centos虚拟机后,创建centos逻辑卷的快照:
lvcreate -L 2G -s -n centosBackup /dev/vg00/centos
(一般快照大小只要为被快照的逻辑卷的15~20%就可以了)
最后修改kvm的配置文件: vim /etc/libvirt/qemu/centos.xml
<domain type=’kvm’>
<name>centos01</name>
<uuid>c64ae5f9-143a-0234-f4f6-dcf7cfdb830d</uuid>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch=’i686′ machine=’pc-0.12′>hvm</type>
<boot dev=’hd’/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset=’utc’/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type=’block’ device=’disk’>
<driver name=’qemu’/>
######<source dev=’/dev/vg00/centosB’/>把这行修改成快照的逻辑卷#######
<source dev=’/dev/vg00/centosBackup’/>
<target dev=’vda’ bus=’virtio’/>
</disk>
<disk type=’block’ device=’cdrom’>
<driver name=’qemu’/>
<target dev=’hdc’ bus=’ide’/>
<readonly/>
</disk>
<interface type=’bridge’>
<mac address=’52:54:00:20:93:fa’/>
<source bridge=’br0′/>
<model type=’virtio’/>
</interface>
<console type=’pty’>
<target port=’0′/>
</console>
<console type=’pty’>
<target port=’0′/>
</console>
<input type=’mouse’ bus=’ps2′/>
<graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/>
<video>
<model type=’cirrus’ vram=’9216′ heads=’1′/>
</video>
</devices>
</domain>
最后,重新启动计算机,这样你就能使用快照的虚拟机,如果当虚拟机坏了,你可以直接在拉一个centos的逻辑卷的快照就可以恢复到安装好以后的状态。当然,接下来的LVM的迁移技术就可以实现容灾方面的内容。还是很强大的,有谁在玩这方面的可以交流经验。
之前看到某篇文章对snapshot的注解如下:
-snapshot write to temporary files instead of disk image files
意思是不更改镜像文件,启动后的所有改动均不会往镜像文件上写。临时文件存放在内存中了,具体是cached
感觉这个解释有点问题,晚上闲来无事,就简单做了个测试,实验过程如下:
使用libvirt创建的虚拟机,默认格式为raw,要想使用快照功能,需要先将其转换格式。
1:qemu-img snapshot -c base_sys_centos5.564bit.img CentOS5.5_64bit.img
在现有镜像基础上创建一个快照。
报如下错误:
emu-img: Could not create snapshot 'base_sys_centos5.564bit.img': -95 (Operation not supported)
2:怀疑是文件格式不对,查看一下。
qemu-img info CentOS5.5_64bit.img
image: CentOS5.5_64bit.img
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 3.4G
果然是raw格式
3:使用如下命令将raw格式的镜像转化为qcow2格式。
qemu-img convert -f raw -O qcow2 CentOS5.5_64bit.img CentOS5.5_64bit_basesys_qcow2.img
4:转换成功后,再次对镜像创建一个快照
qemu-img snapshot -c CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
OK,创建成功。
该步并不会创建一个新的镜像,可以使用如下命令来查看指定的镜像上是否存在快照,并在合适的时候,恢复快照。
qemu-img snapshot -l CentOS5.5_64bit_Qcow2.img
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 CentOS5.5_64bit_Qcow2_basesys.img 0 2011-07-21 23:17:38 00:00:00.000
恢复快照:
qemu-img snapshot -a CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
其他操作:
'snapshot' is the name of the snapshot to create, apply or delete
'-a' applies a snapshot (revert disk to saved state)
'-c' creates a snapshot
'-d' deletes a snapshot
'-l' lists all snapshots in the given image
一、kvm快照与恢复
1、为原虚拟机所在的lv做一个快照。
lvcreate -L 2G -sn kvmSS /dev/vg/kvm (一般快照大小是宿主的15-20%)
2、修改/etc/libvirt/qemu/虚拟机名.xml,将此配置文件里虚拟机lv名,改成虚拟机快照名。
vim /etc/libvirt/qemu/虚拟机名.xml
<source dev=‘虚拟机快照名’>
3、重启动计算机,即可使用快照虚拟机。
4、恢复,当快照虚拟机弄乱或弄坏了,可以直接用回原始的虚拟机做一个快照,再用上面同样的方法,指向这新建的快照。
二、快速制造多台虚拟机
1、为原虚拟机所在的lv做一个快照。
lvcreate -L 2G -sn kvmSS /dev/vg/kvm (一般快照大小是宿主的15-20%)
2、复制/etc/libvirt/qemu/虚拟机名.xml并改名为/etc/libvirt/qemu/虚拟机名1.xml
cp /etc/libvirt/qemu/虚拟机名.xml /etc/libvirt/qemu/虚拟机名1.xml
3、修改 /etc/libvirt/qemu/虚拟机名1.xml
vim /etc/libvirt/qemu/虚拟机1.xml (修改一下几项,随便改只要与原来不一样就可以了。)比如:
<name>1kvmSS</name>
<uuid>395ae05e-c118-e460-4de4-7f58e08f8aa1</uuid>
<source dev=‘虚拟机快照名’>
<mac address='52:54:00:a7:11:cb'/>
4、virsh define 虚拟机名1.xml (定义虚拟机)
5、virsh start 虚拟机名1 (新的虚拟机就可以使用啦。呵呵)
如果遇到虚拟机网卡启动失败提示device eth0 does not seem
可以ifconfig -a 查看网卡的名字是否不是eth0.
如果不是,ip link set ethX name eth0
virsh常用命令一览表
命令说明
help显示该命令的说明
quit结束 virsh,回到 Shell
connect连接到指定的虚拟机服务器
create启动一个新的虚拟机
destroy删除一个虚拟机
start开启(已定义的)非启动的虚拟机
define从 XML 定义一个虚拟机
undefine取消定义的虚拟机
dumpxml转储虚拟机的设置值
list列出虚拟机
reboot重新启动虚拟机
save存储虚拟机的状态
restore回复虚拟机的状态
suspend暂停虚拟机的执行
resume继续执行该虚拟机
dump将虚拟机的内核转储到指定的文件,以便进行分析与排错
shutdown关闭虚拟机
setmem修改内存的大小
setmaxmem设置内存的最大值
setvcpus修改虚拟处理器的数量
查看Domain信息执行的命令
命令说明
domid查看虚拟机的标识符
domname查看虚拟机的名称
domuuid查看虚拟机的 UUID
domstate查看虚拟机目前的状态
dominfo查看虚拟机的信息
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com