KVM虚拟机简介
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
1.系统
CENTOS7 X64 服务器BIOS开启虚拟化
检查CPU是否支持虚拟化
grep vmx /proc/cpuinfo
如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机
2.安装KVM环境
yum -y install wget qemu-kvm qemu-img libvirt libvirt-client virt-viewer virt-install libguestfs bridge-utils
安装包及其作用
wget Linux下的下载程序
qemu-kvm 主要的KVM程序包
qemu-img QEMU的磁盘管理工具
libvirt C语言工具包,提供libvirt服务
libvirt-client 虚拟客户机提供的C语言工具包
virt-viewer GUI连接程序,连接到已配置好的虚拟机
virt-install 基于libvirt服务的虚拟机创建命令
libguestfs 虚拟机磁盘管理工具
bridge-utils 创建和管理桥接设备的工具
启用libvirt
systemctl start libvirtd && systemctl enable libvirtd
配置KVM的网桥模式
cp ifcfg-eno1 ifcfg-br0
vi ifcfg-br0
TYPE="Bridge" //这一行修改为Bridge
NAME="br0" //修改设备名称为br0
#UUID="" //这一行注释
DEVICE="br0" //修改设备为br0
vi ifcfg-eno1
BRIDGE=br0 //添加这一行
#IPADDR="" //注释掉这几行
#NETMASK=""
#GATEWAY=""
#DNS1=""
安装virtio驱动(Windows磁盘驱动):
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum install virtio-win -y
3.创建虚拟机
创建磁盘到/home/kvm
qemu-img create -f raw template.img 100G
qemu-img create -f raw template_1.img 100G
下载镜像到/home/iso
/home/iso/cn_windows_server_2012_r2_x64_dvd_2707961.iso
生成配置文件
virt-install --name template --arch=x86_64 --ram 4096 --vcpus=4 --cdrom=/home/iso/cn_windows_server_2012_r2_x64_dvd_2707961.iso --disk path=/home/kvm/template.img,device=disk,bus=virtio --disk path=/home/kvm/template_1.img,device=disk,bus=virtio --disk path=/usr/share/virtio-win/virtio-win-0.1.141_amd64.vfd,device=floppy --bridge=br0 --os-type=linux --os-variant=rhel5 --vnc --vncport=5910 --vnclisten=0.0.0.0
上面生成的就是一个4核4GB的虚拟机,加载前面创建的磁盘和镜像,vnc端口是5910
在VNC界面中虚拟机界面总是鼠标跟不上,这个需要修改kvm的配置文件
vi /etc/libvirt/qemu/template.xml //在<devices>标签中添加下面这段配置
<devices>
......
<input type='tablet' bus='usb'/> //即添加这句话即可!
......
</devices>
修改之后需要重建虚拟机
virsh destroy template
virsh create template.xml
4.其他
前面创建了一个名为template的虚拟机,安装好系统后我们可以以此为模板克隆虚拟机,命令我写成了一个shell脚本
#!/bin/bash
set -x
name=$1
port=$2
virt-clone --connect qemu:///system --original template --name $name --file /home/kvm/$name.img --file /home/kvm/$name\_1.img --auto-clone
cd /etc/libvirt/qemu
sed -i "s#<input type='mouse' bus='ps2'/>#<input type='tablet' bus='usb'/>#g" $name.xml
sed -i "s#port='-1' autoport='yes'#port='$port' autoport='no'#g" $name.xml
iptables -A INPUT -p tcp --dport $port -j ACCEPT
service iptables save
service iptables restart
virsh autostart $name
virsh create $name.xml
上面的脚本是基于iptables防火墙的,centos7默认是Firewalld防火墙,需要修改脚本或者安装iptables
脚本有两个参数,一个是虚拟机名,一个是vnc端口,运行脚本时在后面添加你需要的参数,如 ./shell.sh name port ,name和port需要写成自己需要的名字和端口号
叨叨几句... 1 条评论
JOHN 博主
很棒棒