KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen(https://zhuanlan.zhihu.com/p/33324585),其核心源码很少。KVM目前已成为学术界的主流VMM之一。 KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESXI系列是Full-Virtualization,IBM文档:http://www.ibm.com/developerworks/cn/linux/l-using-kvm/
cpu开启虚拟化
查看CPU是否开启虚拟化
grep -E "vmx|svm" /proc/cpuinfo | wc -l
安装KVM工具包
yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
systemctl start libvirtd
systemctl enable libvirtd
ifconfig virbr0 #生成NAT网卡
grep "192.168.122.1" /etc/lib
libaudit.conf libibverbs.d/ libnl/ libuser.conf libvirt/
grep "192.168.122.1" /etc/libvirt/ -R
/etc/libvirt/qemu/networks/autostart/default.xml: <ip address='192.168.122.1' netmask='255.255.255.0'> /etc/libvirt/qemu/networks/default.xml: <ip address='192.168.122.1' netmask='255.255.255.0'>
创建NAT网络虚拟机
创建磁盘
ll /var/lib/libvirt/images/ #默认保存虚拟机磁盘的路径 total 0
qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64.raw 10G #创建一个格式为raw大小为10G的裸磁盘
Formatting '/var/lib/libvirt/images/CentOS-7-x86_64.raw', fmt=raw size=10737418240
ll -h /var/lib/libvirt/images/CentOS-7-x86_64.raw -rw-r--r-- 1 root root 10G Jun 15 2019 /var/lib/libvirt/images/CentOS-7-x86_64.raw
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
Formatting '/var/lib/libvirt/images/centos.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_si ze=65536 lazy_refcounts=off
ll -h /var/lib/libvirt/images/centos.qcow2 -rw-r--r-- 1 root root 193K Jun 14 16:36 /var/lib/libvirt/images/centos.qcow2
上传镜像并安装虚拟机
ll /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso #提前上传镜像
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
创建磁盘
创建默认网络虚拟机
virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 -- cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso --disk path=/var/lib/libvirt/images/centos.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
创建windows 虚拟机
# qemu-img create -f qcow2 /var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2 200G
# virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 -- os-type=windows --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole
通过VNC客户端连并安装虚拟机
开始安装
安装过程省略
virsh list --all #第一次需要手动开启虚拟机
virsh start centos7
通过virt-manager管理虚拟机
virt-manager
创建bridge网络虚拟机
桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中大部分场景都使用桥接网络。
yum install bridge-utils #确认系统已经安装桥接组件,否则桥接不成功导致服务器远程连接不上
[root@s1 network-scripts]# pwd /etc/sysconfig/network-scripts
[root@s1 network-scripts]# vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.37.101
NETMASK=255.255.0.0
GATEWAY=192.168.37.2
DNS1=192.168.37.2
[root@s1 network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
[root@s1 network-scripts]# systemctl restart network