CentOS6系统下部署KVM虚拟化

虚拟化简介

虚拟化是将计算机的各种实体资源(CPU、内存、存储、网络等)进行抽象后呈现出来,即是将一台物理计算机分割成多台计算机,实现在一台计算机上运行多台虚拟机,每台虚拟机可运行不同的操作系统,可包含不同的虚拟硬件,并且它们在相互独立的空间内运行而互不影响。

KVM

KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器等)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心

QEMU

Linux 内核加载了 KVM 模块后,就可以使用 KVM 模块实现虚拟机的内存分配、虚拟 CPU 的读写及管理虚拟 CPU 的运行。但是仅有 KVM 模块远远不够,因为用户无法直接控制内核模块,所以还需要一个用户空间的工具。这个用户空间的工具就是开源虚拟化软件 QEMU,使用它来模拟 PC 硬件的用户空间组件、I/O 设备及提供访问外设的途径

Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。

Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能

QEMU-KVM

KVM内核模块本身只能提供CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完成的虚拟化技术,这就是下面要说的qemu-kvm

Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。

Libvirt

为什么需要Libvirt?

1、Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用。

2、Hypervisor 种类众多,没有统一的编程接口来管理它们,这对云环境来说非常重要。

3、没有统一的方式来方便地定义虚拟机相关的各种可管理对象。

RedHat 发布了一个开源项目 libvirt,它是为了更加方便的管理各种虚拟化引擎而设计的。libvirt 作为中间适配层,让底层虚拟化引擎对上层用户空间的管理工具做到完全透明,因为 libvirt 屏蔽了底层各种虚拟化的细节,为上层管理工具提供了一个统一的接口。libvirt提供统一、稳定、开放的源代码的应用程序接口(API)、守护进程 (libvirtd)和和一个默认命令行管理工具(virsh)。libvirt提供了对虚拟化客户机和它的虚拟化设备、网络和存储的管理.libvirt作为中间适配层,让底层 Hypervisor 对上层用户空间的管理工具是可以做到完全透明的,因为 libvirt 屏蔽了底层各种 Hypervisor 的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)

libvirt 支持多种虚拟化引擎,即支持包括 KVM、QEMU、Xen、VMware、VirtualBox 等在内的平台虚拟化方案

libvirt 是目前使用最广泛的对 KVM 虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager等)和云计算框架平台(如 OpenStack、CloudStack 等)都在底层使用了 libvirt 的应用程序接口

以上相关技术概念介绍整理并摘自互联网

接下来介绍如何在CentOS6.9Linux系统上部署KVM和创建虚拟机

1、请确保在服务器的 BIOS 中启用了虚拟化技术(VT)。可以运行以下命令测试 CPU 是否支持 Intel VT 和 AMD_V 虚拟化技术

[root@KVM_Lab ~]# lscpu | grep Virtualization

或者

[root@KVM_Lab ~]# cat /proc/cpuinfo | grep -E 'vmx|svm'

上图的命令输出可以看到CPU不支持虚拟化,我们需要BIOS里开启虚拟化技术(VT),由于是虚拟机,先将虚拟机halt关机,然后在虚拟机设置——处理器——里面开启虚拟化即可

顺带挂载一下CentOS6.9的ISO镜像

开机后再进行验证

[root@KVM_Lab ~]# lscpu | grep Virtualization

Virtualization: VT-x

Virtualization type: full

[root@KVM_Lab ~]# cat /proc/cpuinfo | grep -E 'vmx|svm'

说明CPU已经支持虚拟化

2、接下来配置yum本地进行镜像源

[root@KVM_Lab ~]# mkdir /mnt/cdrom

[root@KVM_Lab ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@KVM_Lab ~]# cp /dev/cdrom /CentOS-6.9-x86_64-bin-DVD1.iso

[root@KVM_Lab cdrom]# cd /etc/yum.repos.d/

[root@KVM_Lab yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo_defaultbackup

[root@KVM_Lab yum.repos.d]# vi CentOS-Media.repo

[localyum]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom

gpgcheck=0

enabled=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-6

测试本地yum镜像源是否可以正常使用

[root@KVM_Lab ~]# yum clean all

[root@KVM_Lab ~]# yum -y install tree

3、接下来正式开始KVM的安装与部署

yum安装qemu-kvm libvirt 等其它程序包

[root@KVM_Lab ~]# yum -y install qemu-kvm libvirt python-virtinst bridge-utils

4、查看kvm模块是否被加载

[root@KVM_Lab ~]# lsmod | grep kvm

kvm_intel 55432 0

kvm 346318 1 kvm_intel

[root@KVM_Lab ~]# service libvirtd start

[root@KVM_Lab ~]# chkconfig libvirtd on

5、创建桥接网络

[root@KVM_Lab ~]# cd /etc/sysconfig/network-scripts/

[root@KVM_Lab network-scripts]# mv ifcfg-eth0 ifcfg-br0

[root@KVM_Lab network-scripts]# vi ifcfg-br0

DEVICE=br0

BOOTPROTO=none

DNS1=114.114.114.114

GATEWAY=192.168.31.1

IPADDR=192.168.31.180

IPV6INIT=yes

MTU=1500

NETMASK=255.255.255.0

NM_CONTROLLED=yes

ONBOOT=yes

TYPE=Bridge

USERCTL=no

PEERDNS=yes

[root@KVM_Lab network-scripts]# vi ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BRIDGE=br0

创建完桥接网卡后重启网络服务

[root@KVM_Lab network-scripts]# service network restart

若出现网卡启动失败时:rm -rf /etc/udev/rules.d/70-persistent-net.rules然后重启

6、创建虚拟机

[root@KVM_Lab ~]# mkdir /kvm_images

[root@KVM_Lab ~]#virt-install --name=kvm_01 --ram 2048 --disk path=/kvm_images/kvm_01.img,size=20 --vcpus=2 --os-type linux --os-variant rhel6 --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=7788 --cdrom=/CentOS-6.9-x86_64-bin-DVD1.iso

7、接下来使用VNC工具登录 宿主机的IP+vnc监听端口7788

接下来在VNC远程工具中进行虚拟机的安装

安装步骤省略

8、virsh常用基本操作命令

KVM虚拟化的简单部署就先介绍到这里,目前刚接触KVM,后面再继续学习克隆虚拟机,冷迁移+热迁移等操作

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181223G0HLUV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券