虚拟化之KVM
1.KVM概述
KVM是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。KVM的虚拟机需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。
2.KVM相关安装包及其作用
qemu-kvm 主要的KVM程序包
python-virtinst 创建虚拟机所需要的命令行工具和程序库
virt-manager GUI虚拟机管理工具
virt-top 虚拟机统计命令
virt-viewer GUI连接程序,连接到已配置好的虚拟机
libvirt C语言工具包,提供libvirt服务
libvirt-client 虚拟客户机提供的C语言工具包
virt-install 基于libvirt服务的虚拟机创建命令
bridge-utils 创建和管理桥接设备的工具
3.安装kvm
1)检查cpu是否支持虚拟化
# grep vmx /proc/cpuinfo
如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使?KVM?????????
2)确保BIOS里开启虚拟化功能,即查看是否加载KVM模块
# lsmod | grep kvm
如果没有加载,运行以下命令:
# modprobe kvm
# modprobe kvm-intel
3)内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间。
# ll /dev/kvm
4)桥接网络
如果没有brctl命令(用来管理网桥的工具),则需要安装bridge-utils
# yum -y install bridge-utils
# systemctl restart network
配置KVM的网桥模式
# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-br0
# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge #这一行修改为Bridge
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_AUTOCONF=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
BOOTPROTO=static
DEFROUTE=yes
NAME=br0 #修改设备名称为br0
DEVICE=br0 #修改设备为br0
ONBOOT=yes
IPADDR=192.168.56.254
GATEWAY=192.168.56.2
NETMASK=255.255.255.0
DNS2=8.8.8.8
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BRIDGE=br0 #添加这一行
#DEFROUTE=yes #以下几行注释掉
#PEERDNS=yes
#PEERROUTES=yes
#IPV4_AUTOCONF=yes
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_PEERDNS=yes
#IPV6_PEERROUTES=yes
#IPV6_FAILURE_FATAL=no
#BOOTPROTO=static
#DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.56.254
#GATEWAY=192.168.56.2
#NETMASK=255.255.255.0
重启网卡服务
# systemctl restart network
查看网卡
# brctl show
查看ip信息
# ifconfig |head -20
# ping www.baidu.com
5)安装libvirt及kvm
libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机:
# yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64
libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64
libiscsi-1.7.0-5.el6.x86_64 dbus-devel virt-clone tunctl virt-manager libvirt
libvirt-python
黄色这个rpm包不在YUM中,需要自行下载
安装libiscsi从中下载最新的epel-release rpm
http://download-ib01.fedoraproject.org/pub/epel/6/x86_64/
安装epel-release rpm:
# rpm -Uvh epel-release*rpm
安装libiscsi rpm包:
# yum -y install libiscsi
tunctl的下载地址是http://li.nux.ro/download/nux/misc/el7/x86_64/,然后YUM安装即可。
安装中文字符,解决界面乱码问题
# yum install -y dejavu-lgc-sans-fonts
# yum groupinstall -y "Fonts"
启用libvirt
# systemctl enable libvirtd
# systemctl start libvirtd
4.使用virt-manager管理kvm
# virt-manager
5.制作一个虚拟机模板
(1)禁用selinux
# vim /etc/selinux/config
SELINUX=disabled
(2)卸载防火墙
# yum -y remove firewalld-* python-firewall
3. 配置网卡
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
DEVICE=eth0
ONBOOT=yes
(4)禁用空路由
# vim /etc/sysconfig/network
NOZEROCONF="yes"
(5)添加console配置
# vim /etc/default/grub
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
(6)重新生成grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
(7)安装扩展分区软件
# yum install -y cloud-utils-growpart
(8)安装常用命令
# yum -y install net-tools vim