1. 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_ --backing_file=backing_file --size=root_disk_size
#Invoke 'virsh block' (This will take time, depending on the size of disk image vm1):
$ virsh block --domain vm vda vm_ --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 , 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_ vm_convert
5. virsh snapshot-create-as/snapshot-create 快照簡析
默認為內置快照,支持快照鏈,支持快照回滾,支持內存信息。
快照過程中,虛擬機短暫卡頓。
2. openstack 快照是指什麼
一直以為OpenStack的創建快照的操作是在線創建快照(live snapshot), 並且應該是增量的快照,即利用virsh或者qemu的live snapshot來實現的
3. 小鳥雲的雲伺服器如何創建快照
當您需要為雲服務創建快照時可參照以下步驟。
快照規則
快照訂單不支持退款,不支持合同,支持申請發票。
單台雲伺服器最多可創建1個快照。
快照購買後到期時間不能超過雲伺服器到期時間。
快照支持續費,續費規則同雲伺服器;快照到期保留48小時,48小時後自動釋放。
快照到期前3天開始簡訊、站內信提醒,到期後也會有簡訊、站內信提醒,刪除後不再提醒。
創建快照步驟
登錄小鳥雲官網-登錄小鳥雲賬號-進入控制台-雲伺服器管理。
選擇要登錄連接的雲伺服器點擊【管理】,進入雲伺服器管理頁面。
點擊創建快照。
勾選已閱讀《快照功能注意事項》,並確定要使用快照功能。
選擇快照信息。
支付快照訂單,並等待快照完成。
快照大小與雲伺服器內存大小有關。
一般1G/2G在3分鍾內創建完成,此處的創建完成是指保存狀態100%。
4G在6分鍾內創建完成,8G在12-15分鍾內創建完成。
16G在25-30分鍾內創建完成;32G在50-60分鍾內創建完成。
64G需要110-120分鍾才能創建完成。 拍攝快照的過程中雲伺服器能正常使用,
注意事項
雲伺服器必須在運行或關機時才可創建快照。
快照拍攝中,雲伺服器可正常使用,但無法進行關機和重啟操作。
雲伺服器快照的存在會降低雲伺服器的磁碟性能。
4. ⑩ OpenStack高可用集群部署方案(train版)—OpenStack對接Ceph存儲
參考Ceph官方安裝文檔
Openstack環境中,數據存儲可分為臨時性存儲與永久性存儲。
臨時性存儲:主要由本地文件系統提供,並主要用於nova虛擬機的本地系統與臨時數據盤,以及存儲glance上傳的系統鏡像;
永久性存儲:主要由cinder提供的塊存儲與swift提供的對象存儲構成,以cinder提供的塊存儲應用最為廣泛,塊存儲通常以雲盤的形式掛載到虛擬機中使用。
Openstack中需要進行數據存儲的三大項目主要是nova項目(虛擬機鏡像文件),glance項目(共用模版鏡像)與cinder項目(塊存儲)。
下圖為cinder,glance與nova訪問ceph集群的邏輯圖:
ceph與openstack集成主要用到ceph的rbd服務,ceph底層為rados存儲集群,ceph通過librados庫實現對底層rados的訪問;
openstack各項目客戶端調用librbd,再由librbd調用librados訪問底層rados;
實際使用中,nova需要使用libvirtdriver驅動以通過libvirt與qemu調用librbd;cinder與glance可直接調用librbd;
寫入ceph集群的數據被條帶切分成多個object,object通過hash函數映射到pg(構成pg容器池pool),然後pg通過幾圈crush演算法近似均勻地映射到物理存儲設備osd(osd是基於文件系統的物理存儲設備,如xfs,ext4等)。
CEPH PG數量設置與詳細介紹
在創建池之前要設置一下每個OSD的最大PG 數量
PG PGP官方計算公式計算器
參數解釋:
依據參數使用公式計算新的 PG 的數目:
PG 總數= ((OSD總數*100)/最大副本數)/池數
3x100/3/3=33.33 ;舍入到2的N次幕為32
openstack集群作為ceph的客戶端;下面需要再openstack集群上進行ceph客戶端的環境配置
在openstack所有控制和計算節點安裝ceph Octopus源碼包,centos8有默認安裝,但是版本一定要跟連接的ceph版本一致
glance-api 服務運行在3個控制節點, 因此三台控制節點都必須安裝
cinder-volume 與 nova-compute 服務運行在3個計算(存儲)節點; 因此三台計算節點都必須安裝
將配置文件和密鑰復制到openstack集群各節點
配置文件就是生成的ceph.conf;而密鑰是 ceph.client.admin.keyring ,當使用ceph客戶端連接至ceph集群時需要使用的密默認密鑰,這里我們所有節點都要復制,命令如下
※Glance 作為openstack中鏡像服務,支持多種適配器,支持將鏡像存放到本地文件系統,http伺服器,ceph分布式文件系統,glusterfs和sleepdog等開源的分布式文件系統上。目前glance採用的是本地filesystem的方式存儲,存放在默認的路徑 /var/lib/glance/images 下,當把本地的文件系統修改為分布式的文件系統ceph之後,原本在系統中鏡像將無法使用,所以建議當前的鏡像刪除,部署好ceph之後,再統一上傳至ceph中存儲。
※Nova 負責虛擬機的生命周期管理,包括創建,刪除,重建,開機,關機,重啟,快照等,作為openstack的核心,nova負責IaaS中計算重要的職責,其中nova的存儲格外重要,默認情況下,nova將instance的數據存放在/var/lib/nova/instances/%UUID目錄下,使用本地的存儲空間。使用這種方式帶來的好處是:簡單,易實現,速度快,故障域在一個可控制的范圍內。然而,缺點也非常明顯:compute出故障,上面的虛擬機down機時間長,沒法快速恢復,此外,一些特性如熱遷移live-migration,虛擬機容災nova evacuate等高級特性,將無法使用,對於後期的雲平台建設,有明顯的缺陷。對接 Ceph 主要是希望將實例的系統磁碟文件儲存到 Ceph 集群中。與其說是對接 Nova,更准確來說是對接 QEMU-KVM/libvirt,因為 librbd 早已原生集成到其中。
※Cinder 為 OpenStack 提供卷服務,支持非常廣泛的後端存儲類型。對接 Ceph 後,Cinder 創建的 Volume 本質就是 Ceph RBD 的塊設備,當 Volume 被虛擬機掛載後,Libvirt 會以 rbd 協議的方式使用這些 Disk 設備。除了 cinder-volume 之後,Cinder 的 Backup 服務也可以對接 Ceph,將備份的 Image 以對象或塊設備的形式上傳到 Ceph 集群。
使用ceph的rbd介面,需要通過libvirt,所以需要在客戶端機器上安裝libvirt和qemu,關於ceph和openstack結合的結構如下,同時,在openstack中,需要用到存儲的地方有三個:
為 Glance、Nova、Cinder 創建專用的RBD Pools池
需要配置hosts解析文件,這里最開始已經配置完成,如未添加hosts解析需要進行配置
在cephnode01管理節點上操作 ;命名為:volumes,vms,images
記錄:刪除存儲池的操作
在cephnode01管理節點上操作 ;
針對pool設置許可權,pool名對應創建的pool
nova-compute與cinder-volume都部署在計算節點 ,不必重復操作,如果計算節點與存儲節點分離需要分別推送;
全部計算節點配置;以compute01節點為例;
Glance 為 OpenStack 提供鏡像及其元數據注冊服務,Glance 支持對接多種後端存儲。與 Ceph 完成對接後,Glance 上傳的 Image 會作為塊設備儲存在 Ceph 集群中。新版本的 Glance 也開始支持 enabled_backends 了,可以同時對接多個存儲提供商。
寫時復制技術(-on-write) :內核只為新生成的子進程創建虛擬空間結構,它們復制於父進程的虛擬空間結構,但是不為這些段分配物理內存,它們共享父進程的物理空間,當父子進程中有更改相應的段的行為發生時,再為子進程相應的段分配物理空間。寫時復制技術大大降低了進程對資源的浪費。
全部控制節點進行配置;以controller01節點為例;
只修改涉及glance集成ceph的相關配置
變更配置文件,重啟服務
ceph官網介紹 QEMU和塊設備
對接 Ceph 之後,通常會以 RAW 格式創建 Glance Image,而不再使用 QCOW2 格式,否則創建虛擬機時需要進行鏡像復制,沒有利用 Ceph RBD COW 的優秀特性。
總結
將openstack集群中的glance鏡像的數據存儲到ceph中是一種非常好的解決方案,既能夠保障鏡像數據的安全性,同時glance和nova在同個存儲池中,能夠基於-on-write(寫時復制)的方式快速創建虛擬機,能夠在秒級為單位實現vm的創建。
全部計算節點進行配置; 以compute01節點為例;只修改glance集成ceph的相關配置
全部計算節點重啟cinder-volume服務;
任意openstack控制節點上查看;
在任意控制節點為cinder的ceph後端存儲創建對應的type,在配置多存儲後端時可區分類型;
為ceph type設置擴展規格,鍵值 volume_backend_name ,value值 ceph
任意控制節點上創建一個1GB的卷 ;最後的數字1代表容量為1G
查看創建好的卷
openstack創建一個空白 Volume,Ceph相當於執行了以下指令
從鏡像創建 Volume 的時候應用了 Ceph RBD COW Clone 功能,這是通過 glance-api.conf [DEFAULT] show_image_direct_url = True 來開啟。這個配置項的作用是持久化 Image 的 location,此時 Glance RBD Driver 才可以通過 Image location 執行 Clone 操作。並且還會根據指定的 Volume Size 來調整 RBD Image 的 Size。
一直存在的cirros_qcow2鏡像為對接ceph之前的鏡像,現在已無法使用,所以將之刪除
在openstack上從鏡像創建一個Volume,Ceph相當於執行了以下指令
任意控制節點操作;
查看快照詳細信息
在openstack上對鏡像的卷創建快照,Ceph相當於執行了以下指令
如果說快照時一個時間機器,那麼備份就是一個異地的時間機器,它具有容災的含義。所以一般來說 Ceph Pool backup 應該與 Pool images、volumes 以及 vms 處於不同的災備隔離域。
https://www.cnblogs.com/luohaixian/p/9344803.html
https://docs.openstack.org/zh_CN/user-guide/backup-db-incremental.html
一般的,備份具有以下類型:
在虛擬磁碟映像的計算節點上使用本地存儲有一些缺點:
Nova 為 OpenStack 提供計算服務,對接 Ceph 主要是希望將實例的系統磁碟文件儲存到 Ceph 集群中。與其說是對接 Nova,更准確來說是對接 QEMU-KVM/libvirt ,因為 librbd 早已原生集成到其中。
如果需要從ceph rbd中啟動虛擬機,必須將ceph配置為nova的臨時後端;
推薦在計算節點的配置文件中啟用rbd cache功能;
為了便於故障排查,配置admin socket參數,這樣每個使用ceph rbd的虛擬機都有1個socket將有利於虛擬機性能分析與故障解決;
相關配置只涉及全部計算節點ceph.conf文件的[client]與[client.cinder]欄位,以compute163節點為例
全部計算節點配置 ceph.conf文件相關的 [client] 與 [client.cinder] 欄位,以compute01節點為例;
在全部計算節點配置nova後端使用ceph集群的vms池,以compute01節點為例;
在全部計算節點操作;
在全部計算節點操作,以compute01節點為例;
以下給出libvirtd.conf文件的修改處所在的行num
5. openstack支持vm快照嗎
支持,nova中的create-image命令可以給VM打快照,快照會存至glance。