kvm實現快速增量盤模式的克隆腳本

要求:備份的img磁盤格式只有qcow2格式支持增量盤使用和快照功能
當你的一個虛擬機格式是raw格式時,請先格式轉換
如:linux7.raw 是raw格式
qemu-img convert -c -O qcow2 linux7.raw linux7.qcow2

默認的img或硬盤存放在/var/lib/libvirt/p_w_picpaths/
默認的xml文件存放在/etc/libvirt/qemu/

腳本:
先創建了一個模板機,怎麼創建用KVM創建虛擬機這裏省略,阿銘老師都講的很詳細。
我這裏創建虛擬的信息如下
ls /var/lib/libvirt/p_w_picpaths/
linux7.img   
ls /etc/libvirt/qemu/
linux7.xml   
作爲模板機,我不允許或不讓別人知道上面那兩個文件。
mv /var/lib/libvirt/p_w_picpaths/linux7.img /var/lib/libvirt/p_w_picpaths/.linux7.img
mv /etc/libvirt/qemu/linux7.xml /etc/libvirt/qemu/.linux7.xml
修改vim /etc/libvirt/qemu/.linux7.xml
在這行修改
爲
後續,當要克隆機器後,直接運行腳本克隆即可!
解決問題:
解決了每次克隆完後還要修改xml文件,進系統後還要進行>/etc/udev/70*。
效果圖,步驟
1.步驟一
[root@room liuwenzhi]# kvm_clone    #運行腳本
      ###########KVM clone ###########
      #                              #
      #       Welcome Use            #
      #                              #
      ################################
Enter a number :1
2.步驟二
[root@room liuwenzhi]# virsh list --all  查看克隆機器
2    linux7-clone1                  closed
3.步驟三
[root@room liuwenzhi]# virsh start linux7-clone1   開機
4.進入系統後修改ip搞定了
[root@room liuwenzhi]#nmtui       #我的機器是centos7,所以setup沒有,改成nmtui了

腳本代碼
[root@room liuwenzhi]# cat kvm_clone
#!/bin/bash

#定義磁盤放置目錄
img_dir=/var/lib/libvirt/p_w_picpaths/
#定義XML文件放置目錄
xml_dir=/etc/libvirt/qemu/
#模板機器IMG
src_name=linux7
src_img=.linux7.img
src_xml=.linux7.xml
menu (){
        abc=3$[RANDOM%8]
        echo -e "\033[${abc};1m      ###########KVM clone ###########\033[0m"
        echo -e "\033[${abc};1m      #                              #\033[0m"
        echo -e "\033[${abc};1m      #       Welcome Use            #\033[0m"
        echo -e "\033[${abc};1m      #                              #\033[0m"
        echo -e "\033[${abc};1m      ################################\033[0m"
}
KVM_CLONE(){
read -p "Enter a number :" num
dst_name=$src_name-clone${num}
dst_img=$src_name-clone${num}.img
dst_xml=$src_name-clone${num}.xml
if [ -z $num ] ;then
        echo -e "\033[33mplease input a number !\033[0m"
        exit 10
fi
expr $num "+" 1 &>/dev/null
if [ $? -ne 0 ] ;then
        echo -e "\033[33mplease input a number !\033[0m"
        exit 11
fi
if [ $num -eq 0 ] ;then
        echo -e "\033[33minput a number not range !\033[0m"
        exit 12
fi
if [ -f $img_dir$dst_img -o -f $xml_dir$dst_xml ] ;then
        echo -e "\033[33mclone--->clone${num} exists,fail!\033[0m"
        exit 13
fi
echo -en "wait ... clone KVM p_w_picpath\t"
qemu-img create -f qcow2 -b $img_dir$src_img $img_dir$dst_img  &>/dev/null
echo -e "\033[32;1m[OK]\033[0m"
echo -en "wait ... Copy KVM xml\t\t"
cat /etc/libvirt/qemu/.linux7.xml > /tmp/kvm.xml
sed -i "//s/$src_name/$dst_name/" /tmp/kvm.xml
sed -i "//c\$(uuidgen)" /tmp/kvm.xml
sed -i "//dev/null
echo -e "\033[32;1m[OK]\033[0m"
echo  "done"
}
while :
do
        menu
        KVM_CLONE        
        exit 0
done


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章