kvm实现快速增量盘模式的克隆脚本

回复 收藏
本帖最后由 出VU时代 于 2016-9-10 16:06 编辑
  1. 要求:备份的img磁盘格式只有qcow2格式支持增量盘使用和快照功能
  2. 当你的一个虚拟机格式是raw格式时,请先格式转换
  3. 如:linux7.raw 是raw格式
  4. qemu-img convert -c -O qcow2 linux7.raw linux7.qcow2
  5. 默认的img或硬盘存放在/var/lib/libvirt/images/
  6. 默认的xml文件存放在/etc/libvirt/qemu/
  7. 脚本:
  8. 先创建了一个模板机,怎么创建用KVM创建虚拟机这里省略,阿铭老师都讲的很详细。
  9. 我这里创建虚拟的信息如下
  10. ls /var/lib/libvirt/images/
  11. linux7.img   
  12. ls /etc/libvirt/qemu/
  13. linux7.xml   
  14. 作为模板机,我不允许或不让别人知道上面那两个文件。
  15. mv /var/lib/libvirt/images/linux7.img /var/lib/libvirt/images/.linux7.img
  16. mv /etc/libvirt/qemu/linux7.xml /etc/libvirt/qemu/.linux7.xml
  17. 修改vim /etc/libvirt/qemu/.linux7.xml
  18. 在这行修改
  19. 后续,当要克隆机器后,直接运行脚本克隆即可!
  20. 解决问题:
  21. 解决了每次克隆完后还要修改xml文件,进系统后还要进行>/etc/udev/70*。
  22. 效果图,步骤
  23. 1.步骤一
  24. [root@room liuwenzhi]# kvm_clone    #运行脚本
  25.       ###########KVM clone ###########
  26.       #                              #
  27.       #       Welcome Use            #
  28.       #                              #
  29.       ################################
  30. Enter a number :1
  31. 2.步骤二
  32. [root@room liuwenzhi]# virsh list --all  查看克隆机器
  33. 2    linux7-clone1                  closed
  34. 3.步骤三
  35. [root@room liuwenzhi]# virsh start linux7-clone1   开机
  36. 4.进入系统后修改ip搞定了
  37. [root@room liuwenzhi]#nmtui       #我的机器是centos7,所以setup没有,改成nmtui了
  38. 脚本代码
  39. [root@room liuwenzhi]# cat kvm_clone
  40. #!/bin/bash
  41. #定义磁盘放置目录
  42. img_dir=/var/lib/libvirt/images/
  43. #定义XML文件放置目录
  44. xml_dir=/etc/libvirt/qemu/
  45. #模板机器IMG
  46. src_name=linux7
  47. src_img=.linux7.img
  48. src_xml=.linux7.xml
  49. menu (){
  50.         abc=3$[RANDOM%8]
  51.         echo -e "\033[${abc};1m      ###########KVM clone ###########\033[0m"
  52.         echo -e "\033[${abc};1m      #                              #\033[0m"
  53.         echo -e "\033[${abc};1m      #       Welcome Use            #\033[0m"
  54.         echo -e "\033[${abc};1m      #                              #\033[0m"
  55.         echo -e "\033[${abc};1m      ################################\033[0m"
  56. }
  57. KVM_CLONE(){
  58. read -p "Enter a number :" num
  59. dst_name=$src_name-clone${num}
  60. dst_img=$src_name-clone${num}.img
  61. dst_xml=$src_name-clone${num}.xml
  62. if [ -z $num ] ;then
  63.         echo -e "\033[33mplease input a number !\033[0m"
  64.         exit 10
  65. fi
  66. expr $num "+" 1 &>/dev/null
  67. if [ $? -ne 0 ] ;then
  68.         echo -e "\033[33mplease input a number !\033[0m"
  69.         exit 11
  70. fi
  71. if [ $num -eq 0 ] ;then
  72.         echo -e "\033[33minput a number not range !\033[0m"
  73.         exit 12
  74. fi
  75. if [ -f $img_dir$dst_img -o -f $xml_dir$dst_xml ] ;then
  76.         echo -e "\033[33mclone--->clone${num} exists,fail!\033[0m"
  77.         exit 13
  78. fi
  79. echo -en "wait ... clone KVM image\t"
  80. qemu-img create -f qcow2 -b $img_dir$src_img $img_dir$dst_img  &>/dev/null
  81. echo -e "\033[32;1m[OK]\033[0m"
  82. echo -en "wait ... Copy KVM xml\t\t"
  83. cat /etc/libvirt/qemu/.linux7.xml > /tmp/kvm.xml
  84. sed -i "//s/$src_name/$dst_name/" /tmp/kvm.xml
  85. sed -i "//c\$(uuidgen)" /tmp/kvm.xml
  86. sed -i "//dev/null
  87. echo -e "\033[32;1m[OK]\033[0m"
  88. echo  "done"
  89. }
  90. while :
  91. do
  92.         menu
  93.         KVM_CLONE        
  94.         exit 0
  95. done
2016-09-10 15:51 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: