天天看點

openstack的臨時存儲後端

聲明:

本部落格歡迎轉發,但請保留原作者資訊!

部落格位址:

内容系本人學習、研究和總結,如有雷同,實屬榮幸!

目前openstack提供了raw,qcow2,lvm,rbd四種類型的image後端。

所謂後端,即image/臨時卷root盤的管理存儲方式。

可以看出image在compute上緩存為base,以base建立虛拟機的磁盤,多個虛拟機的磁盤可能共享同一個base。  

nova/virt/libvirt/imagebackend.py:

中有四個Raw,Qcow2,Lvm,Rbd四個類,均繼承了image類,主要提供create_image方法和snapshot_extract方法。

image父類提供了cache方法,會調用create_image方法。

cache方法提供了image目錄建立,調用create_image方法建立image, 完成preallocate(通過fallocate實作)。

create_image方法提供了image下載下傳,根據backend類型不同進行backing_image建立的能力。

backend類主要提供對Raw,Qcow2, Lvm, Rbd的對象生成能力。

cache方法的調用流:

cache方法《------_create_image方法《------------------(rescue/finish_migration/spawn)

cache方法《------_create_images_and_backing方法《-----(hard_reboot/pre_livemigration)

配置項:

images_type 用于配置預設的image存儲管理方式。可以設定為四種類型的任意一種。

volume_clear 用于定義臨時卷删除的方式(各種安全删除政策)。

volume_clear_size 用于shred删除方式删除時破壞資料的大小。