在服務器上,常常須要啓動數十個或者幾十個虛擬機,按照咱們現有的方式是安裝一個虛擬機,而後複製相應的份數。例如,一個虛機的鏡像大小是4G,十個虛機的大小就須要佔用40G空間。
事實上在目前爲止裏面尚未執行任何程序,這些空間都是分配,實際並不必定都要使用。那麼是否可以實現用多少分配多少呢?分析下能夠發現,每一個虛擬機裏面的內核都是同樣的,大部分時候咱們都不須要去修改裏面的內核,是否可以共用內核?
Copy-On-Write模式爲咱們提供了很好的解決方式,經過建立一個基礎鏡像(base image),裏面把各個虛擬機都須要的環境都搭建好,而後基於這個鏡像創建起一個個「增量鏡像」(增量鏡像的初始大小低於1M),每一個「增量鏡像」對應一個虛擬機,虛擬機對鏡像中全部的改變都記錄在「增量鏡像」裏面,基礎鏡像始終保持不變。這樣咱們創建十個虛擬機,須要的空間爲:4G+10*1M=4G,一下節省了近36G的空間。服務器
對於咱們Flexbng的環境,cp/dp的虛機能夠共用一個基礎鏡像,而後各自有本身的增量鏡像。
好處有:
1)在部署環境時,須要拷貝的文件大小和磁盤佔用空間就會下降不少,尤爲是多cp/dp的環境。
2)基礎鏡像不會被修改,新拉虛機時能夠快速建立個「增量鏡像」使用flex
基本步驟:
1. 建立一個基礎鏡像flexbng-normal.qcow2, 該鏡像包含OS和必需的軟件包spa
image: flexbng-normal.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 2.4G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false日誌
image: flexbng-base.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 1.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
3. 建立增量鏡像flexbng-delta.qcow2
qemu-img create -f qcow2 -b flexbng-base.qcow2 flexbng-delta.qcow2orm
image: flexbng-delta.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 193K
cluster_size: 65536
backing file: flexbng-base.qcow2
Format specific information:
compat: 1.1
lazy refcounts: falseci
後面若是想將增量鏡像中的修改合入到基礎鏡像中,須要執行commit命令:
qemu-img commit flexbng-delta.qcow2部署
實例展現:
在USB或者PXE部署時使用的增量鏡像。虛擬機