一、前言
虚拟化技术已经成为未来计算机技术的一个重要的发展方向。Linux在虚拟化方面已经有了很多种解决方案:VMware、VirtualBox、Xen和KVM!现在给大家分享下本人在KVM里遇到坑及解决方法。
KVM简介
KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel
CPU和具有AMD-V功能的AMD CPU。
在kvm技术中应用到2样东西:kvm+qemu
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm
关于KVM的介绍在这里我就不多说了,有兴趣的童鞋可以自己去查找下;下面我们直接进行部署阶段。
二、环境介绍
本环境需要至少3台机器分别为:
1、KVM_Server_1: 192.168.30.131
2、KVM_Server_2: 192.168.30.132
3、iSCSI_Server: 192.168.30.133
三、安装前的准备(3台主机都需要操作)
1、开启BISO中的CPU虚拟化支持(具体方法在这里就不多介绍了)
2、查看系统对KVM虚拟化的支持
[root@localhost ~]# egrep "svm|vmx" /proc/cpuinfo |wc -l1 注:vmx是Intel系列CPU支持虚拟化的标签;
svm是AMD系列CPU支持虚拟化的标签;
如果数值大于0表示支持虚拟化
3、配置主机FQDN
[root@localhost ~]# hostname --fqdn
localhost
[root@localhost ~]# sed -i "s/HOSTNAME=.*$/HOSTNAME=KVM-1/g" /etc/sysconfig/network
[root@localhost ~]# hostname KVM-1
[root@KVM-1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@KVM-1 ~]# echo "192.168.30.131 KVM-1" >> /etc/hosts
[root@KVM-1 ~]# echo "192.168.30.132 KVM-2" >> /etc/hosts
[root@KVM-1 ~]# hostname --fqdn
KVM-1
[root@KVM-1 ~]# exit
4、关闭Selinux
[root@KVM-1 ~]# grep "SELINUX=enforcing" /etc/selinux/config
SELINUX=enforcing
[root@KVM-1 ~]# sed -i 's/SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
[root@KVM-1 ~]# setenforce 0[root@KVM-1 ~]# getenforce
Permissive
[root@KVM-1 ~]#
5、同步时间
[root@KVM-1 ~]# yum -y install epel-release
[root@KVM-1 ~]# yum -y install ntp*[root@KVM-1 ~]# date
Thu Mar 2 11:13:03 CST 2017
[root@KVM-1 ~]# cp -Rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite `/etc/localtime'? y
[root@KVM-1 ~]# ntpdate 133.100.11.8
2 Mar 11:44:58 ntpdate[11762]: step time server 133.100.11.8 offset 1756.326390 sec
[root@KVM-1 ~]# sed -i 's#ZONE="America/New_York"#ZONE="Asia/Shanghai"#g' /etc/sysconfig/clock
[root@KVM-1 ~]# hwclock -w
[root@KVM-1 ~]# date -R
Thu, 02 Mar 2017 11:46:05 +0800
[root@KVM-1 ~]# echo "ntpdate 133.100.11.8" >> /etc/rc.d/rc.local
四、部署KVM;
以下操作需要在2台KVM宿主机上部署,这里以KVM-1为例给大家演示具体的安装流程
1、安装常用软件包
[root@KVM-1 ~]# yum -y install vim wget gcc make crontabs mlocate \
ntp lrzsz gcc-c++ autoconf setuptool ntsysv iptables \
system-config-securitylevel-tui system-config-network-tui \
sysstat dstat screen
2、安装KVM
[root@KVM-1 ~]# yum -y groupinstall Virtualization 'Virtualization Client' \
'Virtualization Platform' 'Virtualization Tools' 注:
Virtualization:提供虚拟机的环境,主要包含qumu-kvm
Virtualization-client:管理和安装虚拟机实例的客户端,主要有Python-virtinst,virt-manager,virt-viewer
Virtualization-platform:提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client
Virtualization-tools:管理离线虚拟机镜像的工具,主要有libguestfs根据需求选择软件包。
3、启动 Libvirt 服务
[root@KVM-1 ~]# service libvirtd start
[root@KVM-1 ~]# chkconfig libvirtd on
[root@KVM-1 ~]# chkconfig --list libvirtd
libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
4、验证KVM模块的加载情况
[root@KVM-1 ~]# lsmod | grep kvm
kvm_intel 55464 0
kvm 345070 1 kvm_intel
5、创建网桥(必须操作)
[root@KVM-1 ~]# virsh iface-bridge eth0 cloudbr0
五、部署iSSCi磁盘共享
八卦:前一篇文章已经介绍了《CentOS 6.5 安装部署iSCSI共享存储 》的具体部署方案,在这里我就不再重复介绍了;但是要注意确保两台KVM宿主机的挂载路径必须一样;
例如:
KVM-1的iSCSi磁盘为/dev/sdb挂载到本地的/mnt下,KVM-2的iSCSi磁盘也必须挂载到/mnt下:
[root@KVM-1 ~]# df -h |egrep "Filesystem|sdb"
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 19G 2.2G 16G 13% /mnt
[root@KVM-2 ~]# df -h |egrep "Filesystem|sdb"
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 19G 2.2G 16G 13% /mnt