1、KVM介绍
虚拟化技术类型:
仿真虚拟化:对系统硬件没有要求,性能最低;
半虚拟化:虚拟机可以使用真机物理硬件,性能高,需要改内核;
全虚拟化:直接使用物理硬件,性能高;
Vmware:支持仿真虚拟化;
xen半虚拟化:REHL5自带xen,安装时需要安装内核rpm -ivh kernel-xen-xxx.rpm
kvm 全虚拟化:RHEL6自带kvmShell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。
KVM 即 Kernel-based Virtual Machine 在内核的虚拟机。
KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,KVM 的虚拟化需要硬件支持(如 Intel VT 技术或者 AMD V 技术)。是基于硬件的完全虚拟化。
一个普通的 Linux 进程有两种运行模式:内核和用户。KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)
XEN :需要升级内核,只能支持和物理机系统一样的操作系统。xen 虚拟上,可以运行windows.
KVM:支持linux以外的其它系统。比如:windows
QEMU:是一套由 Fabrice Bellard 所编写的以 GPL 许可证分发源码的模拟处理器,在 GNU/Linux平台上使用广泛。QEMU 具有高速度和跨平台的特性,QEMU 能模拟至接近真实电脑的速度。
QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。
QEMU 和 vmware 一样都是支持仿真虚拟化,效率比较低。
2、安装kvm
(1)基础环境:
系统版本:
[root@test ~]# lsb_release -aCentOS Linux release 7.3.1611 (Core)
关闭selinux、关闭firewall、配置yum源、可连接互联网、系统最小化安装、开启端口转发。
systemctl stop firewalld.service
setenforce 0
echo net.ipv4.ip_forward=1>>/etc/sysctl.conf
sysctl -p
宿主机ip地址:192.168.0.20
(2)kvm需要有CPU的支持(Intel VT 或 AMD SVM)是否支持虚拟化
[root@test ~]# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
(3)安装kvm libvirted
[root@test ~]# yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst virt-install qemu-kvm virt-viewer
注:
qemu-kvm :kvm主程序,KVM 虚拟化模块;
virt-manager:KVM 图形化管理工具
libvirt:虚拟化服务
libguestfs-tools: 虚拟机的系统管理工具
virt-install :安装虚拟机的实用工具 。比如 virt-clone 克隆工具就是这个包安装的;
libvirt-python :python调用libvirt虚拟化服务的api接口库文件。
(4)开启虚拟化服务
[root@test ~]# systemctl start libvirtd
开启开机自启:
[root@test ~]# systemctl enable libvirtd[root@test ~]# systemctl is-enabled libvirtdenabled
(5)查看KVM模块是否正确加载
[root@test ~]# virsh -c qemu:///system list Id 名称 状态----------------------------------------------------[root@test ~]# /sbin/lsmod | grep kvmkvm_intel 170181 0kvm 554609 1 kvm_intelirqbypass 13503 1 kvm
3、配置网桥
网桥介绍: 我们经常所说的 Bridge 设备其实就是网桥设备,也就相当于二层交换机,用于连接同一网段内的所有机器,所以我们的目的就是将网络设备 ens33 添加到 br0,此时 br0 就成为了所谓的交换机设备,我们物理机的 ens33 也是连接在上面的。
添加桥接设备 br0:相当于一个二层交换机
(1)修改br0配置
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0DEVICE=br0TYPE=BridgeBOOTPROTO=staticIPADDR=192.168.0.20NETMASK=255.255.255.0GATEWAY=192.168.0.1ONBOOT=yesDNS1=114.114.114.114
(2)ens33配置文件
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetBOOTPROTO=noneNAME=ens33DEVICE=ens33ONBOOT=yesBRIDGE=br0
(3)重启网卡
[root@test ~]# /etc/init.d/network restart
(4)查看网桥接口
[root@test ~]# brctl showbridge name bridge id STP enabled interfacesbr0 8000.000c29ebccef no ens33virbr0 8000.525400d041d0 yes virbr0-nic
注:安装网桥管理工具
yum -y install bridge-utils
4、安装VNC
(1)安装vncserver
[root@test ~]# yum -y install tigervnc-server
(2)修改配置文件
[root@test ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service[root@test ~]# vi /etc/systemd/system/vncserver\@\:1.service
找到这两行
ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"PIDFile=/home//.vnc/%H%i.pid
以root登陆,修改为
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"PIDFile=/root/.vnc/%H%i.pid
(3)重新加载systemd
[root@test ~]# systemctl daemon-reload
(4)设置vnc登录密码
[root@test ~]# vncpasswd
(5)设置开启自启并启动
[root@test ~]# systemctl enable vncserver@:1.service[root@test ~]# systemctl start vncserver@:1.service date
(6)查看vnc是否启动
[root@test ~]# ps -ef |grep vnc
注:未正常启动,查看/var/log/messages日志信息解决。
5、安装虚拟机
使用virt-install创建虚拟机
[root@test ~]# virt-install --name centos-6.8 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos-68.img,size=8 --cdrom /var/lib/libvirt/images/CentOS-6.8-x86_64-bin-DVD1.iso --graphics vnc,listen=0.0.0.0,port=5920, --network bridge=br0 --force --autostart
注:
(1)--name centos-6.8:指定虚拟机名称为centos-6.8;
(2)--ram=1024:指定虚拟机内存1024MB;
(3)--vcpus=1:VCPU个数为1个;
(4)--disk:指定虚拟机磁盘存储文件的路径;
(5)size:指定虚拟磁盘的大小,单位是 G;
(6)--cdrom:挃定用于全虚拟化 Guest 的虚拟光驱, --cdrom=后指定 ISO 或 CDROM 镜像位置;
(7)--graphics:指定虚拟机启动后对其进行访问的接口;使用vnc
(8)--network:指定虚拟机的网卡模式;
(9)--autostart:指定虚拟机在物理启动后自动启动。
(3)虚拟机配置
使用vnc客户端访问:192.168.0.20:5920进行配置。
每个人心中都有一团火,路过的人只看到烟。——梵高