openstack 对虚拟机快照 操作有哪些

举报 回答
openstack 对虚拟机快照 操作有哪些
问在线客服
扫码问在线客服
  • 回答数

    4

  • 浏览数

    5,197

举报 回答

4个回答 默认排序
  • 默认排序
  • 按时间排序

没找到满意答案?去问豆包AI智能助手
取消 复制问题
已采纳
在OpenStack中,虚拟机的快照实质上是其镜像的一种形式。当快照创建完成后,这些快照以镜像的形式存储在glance中。与libvirt(qemu-kvm)的快照实现有很大不同:
首先,在libvirt中,主要使用virDomainSnapshotCreateXML()函数(由CLI的virsh snapshot-create命令调用)来创建快照。新建的快照与虚拟机紧密关联:如果它是内置快照,则信息和虚拟机存在于同一个qcow2镜像中;如果它是外置快照,则会创建一个qcow2文件,并且原始虚拟机的磁盘将变为只读模板镜像,新生成的qcow2镜像只记录与模板镜像差异的数据。这样一种快照包含着完整的链路信息,可以保留磁盘和内存信息,并且可以回滚到任何特定时间点。
而在OpenStack中,并未采用virDomainSnapshotCreateXML()来实现快照功能,而是对虚拟机镜像进行简单转换和拷贝操作。然后将生成的独立存档上传至glance库中。这种类型的快照不包含完整的链路信息,只保留磁盘信息,并且无法回滚到特定时间点,只能使用该快照镜像来创建新的虚拟机。
关于冷备份和热备份(Live Backup),冷备份是指在创建快照时需要暂停虚拟机运行的操作;而热备份则是指在创建快照时无需暂停虚拟机运行。
以下是使用OpenStack进行冷备份的流程:
1. 首先保存虚拟机的状态并停止其运行,然后将PCI设备分离。
2. 创建一个QEMU内部快照(使用qemu-img snapshot -c 命令)。
3. 将内部快照转换成qcow2格式并导出为文件,然后将其上传至glance库。
4. 最后重新启动虚拟机。
以下是使用OpenStack进行热备份的流程:
1. 首先执行所有块设备操作(如果存在)。
2. 暂停正在运行的虚拟机。
3. 安全地定义虚拟机(使用virsh define 命令)。
4. 创建一个目标图像与原始实例根目录大小匹配,并使用qemu-img create 命令创建该目标图像。
5. 使用qemu-img blockcopy命令从目标映像导出磁盘数据。
6. 最后重新定义虚拟机。
关于libvirt中创建快照时出现的性能问题,根据您所描述的情况,在libvirt中创建快照时可能会短暂卡顿。但是这种卡顿是由于一系列复杂的操作造成的,并非OpenStack独有的问题。
取消 评论
没试过,不放心就重新装一次吧
取消 评论
选定的虚拟机应该在同一虚拟机管理程序上运行
取消 评论
对openstack而言,虚拟机的快照即是镜像,快照做完后以镜像形式存于glance。虽然openstack的快照是基于libvirt(qemu-kvm),但是二者在实现上有很大区别:
libvirt 主流快照实现: 采用virDomainSnapshotCreateXML()函数(CLI为virsh snapshot-create)。 新建的快照与虚拟机有关联:若为内置快照,快照信息和虚拟机存在同一个qcow2镜像中;若为外置快照,新建一个qcow2文件,原虚拟机的disk将变为一个read only的模板镜像,新qcow2镜像仅记录与2.模板镜像的差异数据。这种快照包含快照链信息,可保留disk和ram信息,可回滚至快照点。
openstack快照实现:openstack并未采用virDomainSnapshotCreateXML()来实现快照,而是单纯的对虚拟机镜像做转换和拷贝,生成一个与虚拟机无关联的镜像,最后上传至glance中。这种快照不包含快照链信息,只保留disk信息,无法回滚至快照点,只能采用该快照镜像创建一个新的虚拟机。

2. cold snapshot and live snapshot
cold snapshot: 创建snapshot时,需暂停虚拟机。
live snapshot: 创建snapshot时,无需暂停虚拟机。

3. cold snapshot 流程:
# Save the state and stop a running guest, then detach pci devices
$ virsh managedsave vm
# Create a qemu internal snapshot
$ qemu-img snapshot -c snap1 vm_snapshot
# Extract the internal snapshot, convert it to qcow2 and export it a file, then upload to glance
$ qemu-img convert -f qcow2 vm -O qcow2 vm_snapshot
# Start the guest again
$ virsh start vm

4. live snapshot 流程
# Abort any failed/finished block operations:
$ virsh blockjob vm vda --abort
# Undefine a running domain. (Note: Undefining a running domain does not _kill_ the domain, it just converts it from persistent to transient.)
$ virsh undefine vm
# create a destination image with the original backing file and matching size of the instance root disk.
$ qemu-img create -f qcow2 vm_copy --backing_file=backing_file --size=root_disk_size
#Invoke 'virsh blockcopy' (This will take time, depending on the size of disk image vm1):
$ virsh blockcopy --domain vm vda vm_copy --wait --verbose
#Abort any failed/finished block operations:
$ virsh blockjob vm vda --abort
#Define the guest again (to make it persistent):
$ virsh define vm
#From the obtained new copy, convert the QCOW2 with a backing file to a qcow2 image with no backing file, then upload to glance:
$ qemu-img convert -f qcow2 -O raw vm_copy vm_convert

5. virsh snapshot-create-as/snapshot-create 快照简析
默认为内置快照,支持快照链,支持快照回滚,支持内存信息。
快照过程中,虚拟机短暂卡顿。
取消 评论
ZOL问答 > openstack 对虚拟机快照 操作有哪些

相关产品

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?