kvm 管理

#!/usr/bin/env bash 
cat <<eof
1 新建虚拟机
2 删除虚拟机
3 给虚拟机增加内存
4 给虚拟机增加硬盘
5 列出目前正在运行的虚拟机
6 列出所有的虚拟机
7 列出指定的虚拟机的快照
8 给指定的虚拟机做快照
eof


creat_virthost(){


    def_name="centos$(date +%Y%m%d%H%M%S)"
    def_mem=1
    def_cpu=1

    echo "这是创建虚拟机的函数"
    read -p "请输入新虚机名称(默认centos+date):" newname
    read -p "请输入新虚机内存大小(G)(默认1):" newmem
    read -p "请输入新虚机cpu个数(默认1):" newcpu
   

    newname=${newname:-$def_name}
    newmem=${newmem:-$def_mem}
    newcpu=${newcpu:-$def_cpu}

    if [[ ! $newmem =~ ^[0-9]+$  ]]
    then
        echo "格式不正确,正确示例:1"
        exit
    fi

    if [[ ! $newcpu =~ ^[0-9]+$ ]]
    then
        echo "格式不正确,正确示例:1"
        exit
       
    fi

    sourceimage=/var/lib/libvirt/images/vmmodel.img
    sourcexml=/etc/libvirt/qemu/vmmodel.xml
    
    newimg=/var/lib/libvirt/images/${newname}.img
    newxml=/etc/libvirt/qemu/${newname}.xml

    cp $sourceimage $newimg
    cp $sourcexml $newxml

    kvmuuid=`uuidgen`
    kvmname=$newname
    kvmmem=${newmem}049000
    kvmcpu=$newcpu
    kvmimg=$newimg
    kvmmac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`


    sed -i "s@kvmname@$kvmname@;s@kvmuuid@$kvmuuid@;s@kvmmem@$kvmmem@;s@kvmcpu@$kvmcpu@;s@kvmimg@$kvmimg@;s@kvmmac@$kvmmac@" $newxml

    virsh define $newxml
    virsh list --all
}

#arr=(a b c d e f g  h i j k l m n o p q  r s t u v w x y z)
#declare -A arr2
#arr2=([a]=1 [b]=2 [c]=3 [d]=4 [e]=5 [f]=6 [g]=7)


add_disk(){
    read -p "输入新磁盘的名称:" new_diskname
    read -p "输入新建磁盘的大小:" add_disksize
    qemu-img create -f qcow2 /var/lib/libvirt/images/${new_diskname}.qcow2 ${add_disksize}
    vdisk_path=/var/lib/libvirt/images/${new_diskname}.qcow2
    arr=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
    declare -A arr2
    arr2=([a]=1 [b]=2 [c]=3 [d]=4 [e]=5 [f]=6 [g]=7)

#最后一块磁盘的最后的一个字母
    last_disk_num=virsh domblklist centos7.0-clone |grep 'vd'|cut -d' ' -f1|awk -F "vd" '{print $NF}'
#找到下一块磁盘名称的最后一个字母
    index=${arr2[${last_disk_num}]}
    next_word=${arr[$index]}
    device_name=vd${next_word}
#引用模板文件    
    source $PWD/disk_mod.xml > ${device_name}.xml
    virshvirsh list --all
    read -p "输入你要给那个虚拟机添加磁盘:" kvm_name


    virsh attach-device ${kvm_name} ${device_name}.xml --persistent
}

#virsh list

#virsh list --all


#qemu-img create -f qcow2 test.img 5G


#删除虚拟机
#virsh undefine vm2
#creat_virthost

while true
do
    read -p "输入你的选择:" op
    case $op in
        1)
#              read -p "请输入要创建的虚拟机的个数:" num
#              for((i=1;i<=$sum;i++))
#              do
                  virsh list --all
                  creat_virthost
#              done
        ;;
        4)
            add_disk
        ;;
        q)
            exit
        ;;
    esac

done



#改变虚拟内存的大小
#1 设置一个虚拟机的最多使用内存,前提是此虚拟机关闭状态
#   这里仅仅会更改配置文件中的设置
#virsh setmaxmem centos3 4096M --config
#
#2 启动虚拟机,当前实际使用的内存还是原来的大小
#virsh start centos3
#
#3  假如希望增加正在运行中的虚拟机的内存,使用如下命令
#virsh setmem centos3 2048M
#
#永久移除vdb磁盘
#virsh detach-disk vmname vdb --persistent
#
#
## 目前虚拟机已经存在的盘符
#disk_name_w="a b  e f"
#
#declare -A tmp_arr
#
#for i in $disk_name_w
#do
#    tmp_arr[$i]=1
#done
#
#
#for i in {a..z}
#do
#   w=${tmp_arr[$i]}
#   if [ -z "$w" ];then
#       disk_name=vd$i
#      echo "磁盘名称是$disk_name"
#      break
#   fi
#done
#
#创建快照
#virsh snapshot-create-as vm2 vm2.snap2
#查看快照
#virsh snapshot-list vm2
#
#
#
#然后将vm2关闭,恢复到快照vm2.snap3
#virsh snapshot-revert vm2 vm2-snap3
#
#删除虚拟机快照操作:
#virsh snapshot-delete --snapshotname vm2-snap3 vm2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值