介绍

什么是虚拟化?

  1. 通过虚拟化工具,将真实的硬件资源模拟划分成更少的虚拟硬件资源。

  2. 虚拟话技术分为软件模拟、虚拟化层翻译、容器虚拟化。

  3. 虚拟化层翻译分为

  •  软件模拟出所有的硬件设备又称软件全虚拟化,例如:qemu

  •  改造系统内核加以虚拟化层翻译,又叫半虚拟化,例如:Xen

  •  硬件支持虚拟化层翻译,通过VMM(虚拟机监视器)将硬件分配和管理,又称硬件全虚拟化。


半虚拟化/全虚拟化

  1. 半虚拟化(para virtualization):半虚拟化宿主机(虚拟机承载主机/母机)和客户机(虚拟机/子机)都需要修改操作系统的内核,客户机知道宿主机的存在,两者之间需要协同合作,优化I/O协议使客户机操作系统可以和VMM紧密结合,近似于物理机的速度,因此性能高于全虚拟化。例如:Xen

  2. 全虚拟化(full virtualization):全虚拟化为客户机提供完整的虚拟硬件资源,宿主机与客户机都不需要修改系统内核,也不需要知道宿主机的存在。例如:KVM、VMware


KVM简介

  1. KVM全称kernel virtual machine 是针对包含虚拟化扩展(Intel VT或AMD-V)的x86硬件上的完全原生的虚拟化解决方案。

  2. 是以色列Qumranet开发,基于Linux内核。2008年9月4日被RedHat收购。

  3. rhel5/centos5默认是Xen,rhel6/centos6之后版本KVM代替Xen。


KVM架构

KVM驱动:作为Linux内核的一个模块,主要负责虚拟机的创建、虚拟内存分配、VCPU寄存器的读写以及运行。

Qemu:模拟虚拟机用户空间组件。

Libvirt/virsh:解决qemu效率不高,RedHat为KVM开发的辅助工具,例如virsh、libguestfs.

Virt-manager:是一套由Python开发编写的虚拟机管理图形界面,用户可以通过它操作不同虚拟机,利用libvirt的API实现。

qemu官网:http://www.qemu.org/

kvm官网:https://www.linux-kvm.org



KVM Server 部署

实验环境

系统版本:CentOS Linux release 7.2.1511 (Core)

系统位数:x86_64

硬件支持:CPU开启虚拟化支持


查看虚拟化支持

[root@kvm ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo

注意:信息有输出表示支持虚拟化,否则就不支持虚拟化,无法安装KVM。


关闭防火墙

[root@kvm ~]# systemctl stop firewalld.service

[root@kvm ~]# systemctl disable firewalld.service


关闭SELinux

[root@kvm ~]# setenforce 0  #临时关闭

[root@kvm ~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config  #永久


安装KVM Server

[root@kvm ~]# yum install -y virt-*  libvirt  bridge-utils qemu-img  libvirt-client

说明:

libvirt-client #libvirt的客户端,宿主机关机通知虚拟机关机,避免强制关机造成数据丢失。

gpxe-roms-qemu #虚拟机IPXE启动固件,支持虚拟机的网络启动

libvirt-python #为python提供API

python-virtinst #一套python虚拟机安装工具

qemu-kvm  #KVM在用户空间运行程序

virt-manager  #基于libvirt的图形化虚拟机管理软件

libvirt  #用于管理虚拟机,提供一套虚拟机管理API

virt-viewer  #显示虚拟机的控制台console

virt-top #类似top,查看资源使用情况

virt-what #虚拟机内部执行,查看虚拟机的虚拟化平台

qemu-img  #用于操作虚拟机硬盘景象的创建、查看、格式转化


检查KVM模块

[root@kvm ~]# lsmod |grep kvm

kvm_intel             170181  0 

kvm                   554609  1 kvm_intel

irqbypass              13503  1 kvm


创建软连接

[root@kvm ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm


启动服务

[root@kvm ~]# systemctl start libvirtd


查看版本

[root@kvm ~]# virsh --version

2.0.0

[root@kvm ~]# virt-install --version

1.4.0

[root@kvm ~]# qemu-kvm --version

QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-126.el7_3.5)...



创建第一台虚拟机

创建虚拟机磁盘

[root@kvm ~]# qemu-img create /data/pool/windows_2k3 -f qcow2  -opreallocation=metadata   30G


创建虚拟主机

[root@kvm ~]# virt-install -n windows2k3 -r 1024 -vcpus=1  -c /data/iso/windows_server_2003.iso --disk path=/data/pool/windows_2k3,format=qcow2,size=30,bus=ide  --hvm --os-type=windows  --vnc --vncport 5901 --network network=default --force --autostart

说明:

-n:定义虚拟机在名称;

-r:设置分配1G内存大小;

-vcpus:设置分配1个CPU;

-c:指定系统安装镜像位置;

--disk path:指定虚拟机存储设备及其属性;

format:指定磁盘映像格式,如raw、qcow2、vmdk;

size:指定磁盘大小;

bus:指定磁盘类型,如ide、scsi、virtio;

--hvm:当物理机同时支持全虚拟化和半虚拟化时,指定使用全虚拟化;

--os-type=windows:指定系统类型,如Windows、linux;

--vnc :指定使用VNC服务;

--vncport :指定VNC端口;

--network network:指定网络类型为默认(NAT);

--force:禁止交互模式,自动回答yes;

--autostart:指定虚拟机随物理启动后自动启动;

注意:Windows类系统需要设置为ide,否则安装时提示找不到硬盘。


连接VNC

KVM系列之KVM Server 部署_KVM

根据Windows server 2003系统安装步骤,进行系统安装。不做过多介绍。

KVM系列之KVM Server 部署_qemu_02


虚拟机网络配置

KVM系列之KVM Server 部署_qemu_03

检查网络

KVM系列之KVM Server 部署_qemu_04

注意:还需要在虚拟机承载主机上配置相应的防火墙规则,才能实现访问网络,网上有很多教程,我就不再啰嗦了。


FQA

Q:如何开启虚拟化支持?

A:在BIOS中设置虚拟机开启。


Q:VMware如何开启虚拟化支持?

A:虚拟机设置--处理器--勾选虚拟化(虚拟机关机状态操作)。


Q:KVM 安装后无法查看到模块。

A:检查安装是否正确,或重启系统在查看模块。


Q:创建linux虚拟机时提示,无法找到硬盘。

A:原因可能是创建虚拟机磁盘格式为ide,重新创建格式为scsi格式的虚拟机磁盘。