找回密码
 注册
查看: 3391|回复: 0

openstack 创建快照介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-12-7 11:51:43 | 显示全部楼层 |阅读模式
对openstack而言,虚拟机的快照即是镜像,快照做完后以镜像形式存于glance。虽然openstack的快照是基于libvirt(qemu-kvm),但是二者在实现上有很大区别:$ T, Z( d- O2 T# s* K
libvirt 主流快照实现: 采用virDomainSnapshotCreateXML()函数(CLI为virsh snapshot-create)。 新建的快照与虚拟机有关联:若为内置快照,快照信息和虚拟机存在同一个qcow2镜像中;若为外置快照,新建一个qcow2文件,原虚拟机的disk将变为一个read only的模板镜像,新qcow2镜像仅记录与2.模板镜像的差异数据。这种快照包含快照链信息,可保留disk和ram信息,可回滚至快照点。
( K5 x" o* f# F. e$ r! o# q  z3 q& `openstack快照实现:openstack并未采用virDomainSnapshotCreateXML()来实现快照,而是单纯的对虚拟机镜像做转换和拷贝,生成一个与虚拟机无关联的镜像,最后上传至glance中。这种快照不包含快照链信息,只保留disk信息,无法回滚至快照点,只能采用该快照镜像创建一个新的虚拟机。
. z1 Q7 n# S$ g
+ q1 [, J% R  c$ L; ]2. cold snapshot and live snapshot
: t0 @" \0 u% X/ icold snapshot:  创建snapshot时,需暂停虚拟机。% H! u" U8 c0 ~+ o- M) g
live snapshot:   创建snapshot时,无需暂停虚拟机。0 e: w) A: ~4 R

; r- y' Y0 m3 A4 D# p) V3. cold snapshot 流程:
6 S4 |4 ~3 W7 [1 f; j2 n# Save the state and stop a running guest, then detach pci devices; l3 x: Z2 Z6 Z5 F- w- v
      $ virsh   managedsave   vm+ u5 R( t. s. h/ g, s! D0 s2 u9 c, B
# Create a qemu internal snapshot
2 Z0 Y5 W6 j. F+ Y$ ~3 o0 a  X      $ qemu-img    snapshot   -c   snap1   vm_snapshot
0 E5 G5 y( ~9 {1 L- G3 s# Extract the internal snapshot, convert it to qcow2 and export it a file, then upload to glance
# D& `% n& s  x4 k      $ qemu-img    convert   -f   qcow2   vm   -O   qcow2   vm_snapshot: V& G! }. J3 @& s0 z7 A% Z' G
# Start the guest again3 R1 f( M& J9 \' k( Q
      $ virsh   start   vm
  y3 v! c7 D$ i5 c8 p
6 w; j2 \" F5 W5 k3 n  s4. live snapshot 流程0 f2 |/ j- j7 A) q6 h" L) Z
# Abort any failed/finished block operations:
% k4 S& W5 q  X! h% G# a" v% D2 K, f8 X     $ virsh blockjob vm vda --abort
) L  l/ p; a; g: i6 S# Undefine a running domain. (Note: Undefining a running domain does not _kill_ the domain, it just converts it from persistent to transient.)
5 q) J+ \1 `5 e7 m/ L3 U2 q     $ virsh undefine vm
0 R4 \' X6 i% i2 }2 p# create a destination image with the original backing file and matching size of the instance root disk.* n9 W# i; O$ T& k% h
     $ qemu-img create -f qcow2 vm_copy --backing_file=backing_file --size=root_disk_size
4 U% v% D1 }* v#Invoke 'virsh blockcopy' (This will take time, depending on the size of disk image vm1):5 F  ]! q& w( N' U9 v7 W+ h8 g6 T
     $ virsh blockcopy --domain vm vda vm_copy --wait --verbose
, Y! Z! N4 `2 Z  |- I: ~  S: N#Abort any failed/finished block operations:5 ?  L, K$ e" m' W+ v
    $ virsh blockjob vm vda --abort
# Z  Z# M$ z! l7 z#Define the guest again (to make it persistent):
; V3 W; {* Z9 y# n    $ virsh define vm
4 g& Z. ^9 o. J, k9 f#From the obtained new copy, convert the QCOW2 with a backing file to a qcow2 image with no backing file, then upload to glance:
* ^' _- g/ Y$ ~% j2 G& e    $ qemu-img convert -f qcow2 -O raw vm_copy vm_convert$ v% r' o  \5 x$ `6 d. b: x! E( J

5 O, I% C2 @" g5. virsh snapshot-create-as/snapshot-create 快照简析
! E" z. h7 h$ b8 |( ]! i    默认为内置快照,支持快照链,支持快照回滚,支持内存信息。$ G9 z+ |7 l8 t/ b
    快照过程中,虚拟机短暂卡顿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:28 , Processed in 0.015146 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表