KVM部署安装记录

安装

]# yum install qemu-kvm libvirt virt-install
]# systemc tl start libvirtd
]# systemctl enable libvirtd

启动后可以看到网卡多了一个virbr0的网口,这个是libvirt默认的nat网口(默认IP是192.168.122.1),在更新的版本会发现有virbr0-nic、vnet0等网口,这些都是给虚拟机用的网口。

创建虚拟机

[root@localhost ~]# virt-install --name=study01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1611.iso --disk path=/kvm_data/study01.img,size=10 --bridge=virbr0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
然后会出现类似安装操作系统的界面,让你选择语言,时区,磁盘等
参考ZeroOne01的博客

配置文件

配置文件在/etc/libvirt/qemu/下面
数据文件在--disk path指定的目录下的img文件

编辑配置文件

uuid=`uuidgen`             #随机uuid                   
mac1=`openssl rand -base64 8 | md5sum | cut -c1-2`            #随机两位mac
mac2=`openssl rand -base64 8 | md5sum | cut -c1-2`
sed -i "10c $uuid" study02.xml                  #替换第十行的UUID
#修改配置中虚拟磁盘名称  
#修改虚拟机名
#修改第66行的mac地址
sed -i "66c  " study02.xml
virsh define /qemu/study02.xml           #加载配置文件
virsh start study02                           #开启虚拟机

操作虚拟机

virsh list --all  #列出所有虚拟机
virsh destroy NAME   #停止虚拟机
virsh undefine NAME   #删除虚拟机

参考snale learning linux的博客

克隆虚拟机

virt-clone --connect=qemu:///system -o kubespray1 -n kubespray3 -f /data/kubespray/kubespray4.img

-o:指定被克隆虚拟机的名字,用virsh list可以看到,此虚拟机必须为关机状态
-n:新虚拟机的名字
-f:新虚拟机磁盘文件位置
参考:亦非我所愿的博客

virsh start kubespray1     #启动虚拟机
virsh console kubespray1    #连接虚拟机

KVM脚本创建单个虚拟机


#!/bin/bash
#创建单个虚拟机(需要电脑中存在模板虚拟机)
single_initialize_define(){
    while true
    do
        read -p "请输入新虚拟机名称:" newname
        if [ $newname ];then
            break
        else
            echo "************"
            echo "请输入姓名!"
            echo "************"
        fi
    done
 
    while true
    do
        current_free_mem=`free -h|awk '/^Mem/{print $4}'|sed  -r 's/(.*).$/\1/'`
        mem_total=`free -h|awk '/^Mem/{print $2}'|sed  -r 's/(.*).$/\1/'`
        echo "目前本机内存总大小:${mem_total} G"
        echo "当前空闲内存大小为:${current_free_mem} MB"
        read -p "请输入新虚拟机内存大小(单位G):" newmemary
        if [ $newmemary ];then
            if [[ $newmemary < $mem_total ]];then
                break
            else
                echo "**********************************"
                echo "输入的数值必须小于当前内存总大小!"
                echo "**********************************"
            fi
        else
            echo "********************"
            echo "请输入新虚拟机内存!"
            echo "********************"
        fi
    done
 
    while true
    do
        core=`cat /proc/cpuinfo| grep "processor"| wc -l`
        echo "可用core个数:${core}"
        read -p "请输入新虚拟机处理器核数:" newcpu
        if [ $newcpu ];then
            if [ $newcpu -le $core ];then
                break
            else
                echo "******************************"
                echo "不能超过可用个数或者输入错误!"
                echo "******************************"
            fi  
        else
            echo "**************"
            echo "输入不能为空!"
            echo "**************"
        fi
    done
    uuid=`uuidgen`
    src_path=/mnt/lv2/centos7.0.qcow2 
    src_xml=/etc/libvirt/qemu/centos7.0.xml
    new_path=/mnt/lv1/${newname}.qcow2
    new_path_sed="\/mnt\/lv1\/${newname}.qcow2"
    new_xml=/etc/libvirt/qemu/${newname}.xml
}
#镜像、xml复制
copy_img(){
    cp $src_path $new_path
    cp $src_xml $new_xml
}
#修改xml文件
modification_xml(){
    sed -ri "s/().*(<\/name>)/\1${newname}\2/" $new_xml
    sed -ri "s/().*(<\/uuid>)/\1${uuid}\2/" $new_xml
 
    mem_kb=$(($newmemary*1024*1024))
 
    sed -ri "s/().*(<\/memory>)/\1${mem_kb}\2/" $new_xml
    sed -ri "s/().*(<\/currentMemory>)/\1${mem_kb}\2/" $new_xml
    sed -ri "s/().*(<\/vcpu>)/\1${newcpu}\2/" $new_xml
    sed -ri "s/()/\1${new_path_sed}\2/" $new_xml
 
    mac_addr=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
 
    sed -ri "s/()/\1${mac_addr}\2/" $new_xml 
    
}
#运行
single_initialize_define
copy_img
modification_xml
virsh define $new_xml
#------------------------------------------------------------------------------------

脚本原文地址:皮蛋儿皮蛋的CSDN博客

你可能感兴趣的:(KVM部署安装记录)