openstack快照現狀分析

當前能力

  • 支持功能
    • 卷快照(支持一致性快照)
    • 虛擬機快照(支持冷快照和live snapshot with no downtime)
  • 卷快照
cinder snapshot-create

支持通過qemu-ga完成自動一致性操作(fsfreeze)

  • 虛擬機快照製作過程
nova image-create
guest:
sync         #刷髒數據到磁盤
fsfreeze -f  #鎖定文件系統
host:
nova image-create #創建快照
guest:
fsfreeze -u  #解除鎖定文件系統
  • 當前限制openstack的虛擬機快照只快照root盤,不快照內存/CPU狀態以及掛載磁盤。掛載磁盤需要事先卸載磁盤(數據盤),然後進行快照,然後再掛載磁盤。

  • 虛擬機快照缺點:

    • 不支持revert恢復虛擬機到某一個快照點
    • 不支持內存快照
    • 只對系統盤進行快照
    • 沒有快照鏈信息
    • 需要用戶進行一致性操作
    • 不支持含元數據導出
    • 不支持含元數據導入
    • 只支持虛擬機全量數據快照(與快照的實現方式有關,因爲是通過image進行保存的)
    • 快照以Image方式保存,而非以cinder卷方式保存
    • 過程較長(需要先通過存儲快照,然後抽取並上傳至glance)。
    • 無法充分利用存儲本身能力加快快照的創建和使用
  • nova image-create的流程
    一. 獲取token(獲取token接口)
    二. 查詢虛擬機狀態(查詢接口)
    三. 創建虛擬機快照

    curl -i http://186.100.8.214:8774/v2/86196260e1694d0cbb5049cfba3883f8/servers/6c2504f4-efa-47ec-b6f4-06a9fde8a00b/action -X POST -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: " -d '{"createImage": {"name": "nova_100_new_01", "metadata": {}}}'
    

    四. volume backed的虛擬機,使用compute_api.snapshot_volume_backed創建虛擬機快照;volume backed以外類型的虛擬機,調用compute_api.snapshot接口創建快照(最終實現在createImage接口)

  • createImage接口(創建虛擬機快照)流程
底層實現:
a. 清理block設備上次的job信息
[root@fedora170 data]# virsh blockjob test /data/test/test.qcow2 --abort
error: Requested operation is not valid: No active operation on device: drive-virtio-disk0

b. 創建基於block設備backing_file的qcow2文件
[root@fedora170 data]# qemu-img create -f qcow2 -o backing_file=/data/test/test.qcow2,cluster_size=65536,size=20G /data/test/test.qcow2.delta
Formatting '/data/test/test.qcow2.delta', fmt=qcow2 size=21474836480 backing_file='/data/test/test.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

c. persist類型的虛擬機,進行undefine
d. 將block數據拷貝到新做的qcow2文件上
[root@fedora170 data]# virsh blockcopy test /data/test/test.qcow2 /data/test/test.qcow2.delta 0 --shallow --reuse-external
Block Copy started

e. 查詢進度,等待block job完成
[root@fedora170 data]# virsh blockjob test /data/test/test.qcow2 --info
Block Copy: [100 %]

f. 清理block設備上次的job信息
[root@fedora170 data]# virsh blockjob test /data/test/test.qcow2  --abort

g. persist類型的虛擬機,重新define
h. 抽取整個block的數據到新的qcow2文件中(後續可以上傳到glance上)
[root@fedora170 data]# qemu-img convert -f qcow2 -O qcow2 -c /data/test/test.qcow2.delta /data/test/test_snapshot.qcow2
  • compute_api.snapshot_volume_backed流程
    底層利用driver能力進行volume的快照創建。
    快照container的管理方式。
$ glance show 64b5516d-f27e-4262-862e-cb6f39d3499b
URI: http://186.100.8.144:9292/v1/images/64b5516d-f27e-4262-862e-cb6f39d3499b
Id: 64b5516d-f27e-4262-862e-cb6f39d3499b
Public: No
Protected: No
Name: volume_snapshot
Status: active
Size: 0
Disk format: 
Container format: 
Minimum Ram Required (MB): 0
Minimum Disk Required (GB): 0
Owner: 507667477fd840e1a81c1ca7f6f54f69
Property 'block_device_mapping': [{"instance_uuid": "fbcbe31e-b056-480e-8eab-852ee77defac", "virtual_name": null, "no_device": null, "connection_info": "{\"driver_volume_type\": \"iscsi\", \"serial\": \"70269f98-acf2-43e6-9564-91b824dfb5e4\", \"data\": {\"access_mode\": \"rw\", \"target_discovered\": false, \"encrypted\": false, \"qos_spec\": null, \"device_path\": \"/dev/disk/by-path/ip-186.100.8.144:3260-iscsi-iqn.2010-10.org.openstack:volume-70269f98-acf2-43e6-9564-91b824dfb5e4-lun-1\", \"target_iqn\": \"iqn.2010-10.org.openstack:volume-70269f98-acf2-43e6-9564-91b824dfb5e4\", \"target_portal\": \"186.100.8.144:3260\", \"volume_id\": \"70269f98-acf2-43e6-9564-91b824dfb5e4\", \"target_lun\": 1, \"auth_password\": \"LCJyaFWiokcQM6BX4VZk\", \"auth_username\": \"g5Nthj6bxnS7egxHa4Le\", \"auth_method\": \"CHAP\"}}", "created_at": "2014-03-05T08:44:22.000000", "snapshot_id": "8c547b26-8135-44c0-b2d6-718831ca7ee3", "updated_at": "2014-03-05T08:44:34.000000", "device_name": "vda", "deleted": 0, "volume_size": 1, "volume_id": null, "id": 93, "deleted_at": null, "delete_on_termination": false}]
Property 'checksum': d972013792949d0d3ba628fbe8685bce
Property 'min_ram': 512
Property 'disk_format': qcow2
Property 'image_name': cirros
Property 'image_id': ad559bb4-31d5-469f-93b7-0a67546c4a96
Property 'root_device_name': /dev/vda
Property 'container_format': bare
Property 'min_disk': 1
Property 'size': 13147648
Created at: 2014-03-05T08:52:46
Updated at: 2014-03-05T08:52:46

當前快照導入、導出方法

  • 虛擬機快照導出
    1. 使用nova image-create創建虛擬機快照
    2. 通過glance image-download --file filename.img導出虛擬機快照
  • 虛擬機快照導入
    1. 通過glance image-create --file導入虛擬機快照

虛擬機快照當前的BP

發佈了35 篇原創文章 · 獲贊 3 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章