安装
]# 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>$uuid</uuid>" study02.xml #替换第十行的UUID
#修改配置中虚拟磁盘名称
#修改虚拟机名
#修改第66行的mac地址
sed -i "66c <mac address='52:54:00:f6:$mac1:$mac2'/>" study02.xml
virsh define /qemu/study02.xml #加载配置文件
virsh start study02 #开启虚拟机
操作虚拟机
virsh list --all #列出所有虚拟机
virsh destroy NAME #停止虚拟机
virsh undefine NAME #删除虚拟机
克隆虚拟机
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>).*(<\/name>)/\1${newname}\2/" $new_xml
sed -ri "s/(<uuid>).*(<\/uuid>)/\1${uuid}\2/" $new_xml
mem_kb=$(($newmemary*1024*1024))
sed -ri "s/(<memory.*>).*(<\/memory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<currentMemory.*>).*(<\/currentMemory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<vcpu.*>).*(<\/vcpu>)/\1${newcpu}\2/" $new_xml
sed -ri "s/(<source file=').*('\/>)/\1${new_path_sed}\2/" $new_xml
mac_addr=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
sed -ri "s/(<mac address='..:..:..:).*('\/>)/\1${mac_addr}\2/" $new_xml
}
#运行
single_initialize_define
copy_img
modification_xml
virsh define $new_xml
#------------------------------------------------------------------------------------
脚本原文地址:皮蛋儿皮蛋的CSDN博客