KVM--简介,安装

一、简介

KVM(Kernel Virtual Machine)基于内核的虚拟机。阿维·齐维迪(Avi Kivity)在一家名为Qumranet的初创企业开始了KVM的研发工作,开发人员基于Linux Kernel通过加载新的模块使Linux Kernel本身变成一个Hypervisor(管理程序),后KVM模块源代码成为Linux内核源代码的一部分。随后此公司于2008年被红帽公司收购,于是redhat在自己的产品中用KVM替换了Xen。

KVM目前的设计为:通过可加载的内核模块支持客户机操作系统(Linux、Solaris、Windows等等)。
KVM的架构中,虚拟机的实现为常规的Linux进程,由标准的调度程序进行调度。

二、架构

从虚拟机的基本架构上来区分,一般分为两种。

类型一:可以视为特别为虚拟机优化裁剪的操作系统内核。虚拟机监控程序运行在底层软件层,实现系统的初始化、物理资源的管理等操作系统的职能。这一类型的虚拟机监控程序一般会提供一个具有一定特定权限的特殊虚拟机,这个特殊虚拟机运行用户日常操作系统和管理使用的操作系统环境。如:Xen、VMware ESXI和Hyper-V。

类型二:虚拟机监控程序依赖操作系统来实现管理和调度,也会受到宿主操作系统的一些限制。无法为了虚拟机的优化而改变操作系统。如:VMware Workstation、VirtualBox。

而KVM是基于宿主操作系统的类型二的虚拟机。(如果说在windows下使用VMware Workstation,这个就可以类比为在Linux下的VMware Workstation。只不过KVM是通过内核模块的形式实现,充分利用Linux内核既有的实现,最大限度的重用代码。)
在这里插入图片描述
左侧是标准的Linux操作系统,KVM内核模块在运行时按需加载进入内核空间运行。KVM本身并不进行任何模拟。相反,它暴露出一个/dev/kvm接口,需要用户空间程序通过借口设置一个客户机虚拟服务器的地址空间,向他提供模拟的I/O,并将它的视频显示映射回宿主的显示屏,目前这个应用程序就是QEMU。

三、KVM模块及QEMU

KVM模块

KVM模块是KVM虚拟机的核心部分。KVM仅支持硬件虚拟化。其主要功能是初始化cpu硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。

以KVM在Intel的CPU上运行为例,在被内核加载的时候,KVM模块会先初始化内部的数据结构;之后KVM模块检测系统当前的CPU,然后打开CPU控制寄存器CR4中的虚拟化模式开关,并通过执行VMXON指令将宿主操作系统置于虚拟化模式的根模式;最后KVM模块创建特殊设备文件/dev/kvm并等待来自用户空间的命令。接下来虚拟机的创建和运行是一个用户空间程序(QEMU)和KVM模块互相配合的过程。

QEMU

QEMU是一个开源的虚拟机纯软件的实现,性能低下。但是其优点是支持本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机不同架构。QEMU代码中有着整套虚拟机的实现,包括处理器、内存虚拟化以及虚拟设备模拟(比如网卡、显卡、存储控制器及硬盘等。)

虚拟机运行期间,QEMU会通过KVM模块提供的系统接口调用进入内核,由KVM模块将虚拟机至于处理器的特殊模式运行。遇到虚拟机输入输出操作,KVM模块会从上次系统调用的接口返回给QEMU,由QEMU来负责解析和处理这些设备。从QEMU角度看,可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,极大提高虚拟机的性能。虚拟机的配置和创建,运行依赖的虚拟设备,用户操作环境和交互,以及一些特殊功能(如动态迁移),都是由QEMU自己实现的。QEMU和KVM模块两者的结合无疑是最合适的选择。而qemu-kvm是为了KVM专门做了修改和优化的QEMU分支。

四、KVM 部署

环境准备
首先bios需要开启虚拟化
在这里插入图片描述
因为我这里使用的是VMware,所以需要在这里开启虚拟化配置
在这里插入图片描述
创建虚拟机步骤
1.准备虚拟机硬盘
2.需要系统 iso 镜像
3.需要安装一个 vnc 的客户端来连接
在这里插入图片描述
安装包下载
系统环境
记得关闭防火墙

cat /etc/redhat-release
uname -r
getenforce
systemctl stop firewalld

在这里插入图片描述
然后检查一下CPU是否支持虚拟化
KVM其实已经在Centos7内置到系统内核,无需安装

egrep -o '(vmx|svm)' /proc/cpuinfo
grep -E '(vmx|svm)' /proc/cpuinfo

在这里插入图片描述
在 linux 平台下,我们可以通过 dmesg | grep kvm 命令来查看。 如果 CPU 没有开启虚拟化的话,显示如下:
安装KVM用户态模块

yum list|grep kvm

在这里插入图片描述

yum install -y qemu-kvm qemu-kvm-tools libvirt

libvirt用来管理kvm
kvm属于内核态,不需要安装。但是需要一些类似于依赖的
启动libvirt

systemctl start libvirtd.service
systemctl enable libvirtd.service

启动之后我们可以使用 ifconfig 进行查看,libvirtd 已经为我们安装了一个桥接网卡
在这里插入图片描述
libvirtd 为我们启动了一个 dnsmasqp,这个主要是用来 dhcp 连接的,这个工具会给我们的虚拟机分配 IP 地址

ps -ef|grep dns 

在这里插入图片描述
创建虚拟机
首先,先看一下磁盘空间大小

df -h

最好是20G以上
在这里插入图片描述
上传镜像
提示:如果使用 rz 上传镜像可能会出现错误,所以我们使用 dd 命令,复制系统的镜像。只需要挂载 上光盘即可。

cd /opt/
dd if=/dev/cdrom of=/opt/CentOS-7.3.iso

创建磁盘

qemu-img create -f qcow2 /opt/CentOS-7.3-x86_64.qcow2 6G

在这里插入图片描述
-f 制定虚拟机格式
/opt/Centos 存放路径
6G 代表镜像大小
磁盘格式介绍
raw----裸磁盘不支持快照
qcow2----支持快照。Openstack 使用的方式推荐使用这个。注意:关闭虚拟机后操作。
区别:
全镜像格式(典型代表 raw),特点:设置多大就是多大,写入速度快,方便转换其他格式,性能最 优,但是占用空间大。
稀疏格式(典型代表 qcow2),其特点:支持压缩、快照、镜像,更小的存储空间(即用多少占多少)
qcow2 数据的基本组成单元是 cluster
raw 性能比 qcow2 快
raw 创建多大磁盘,就占用多大空间直接分配,qcow2 动态的用多大占用多大空间。
安装虚拟机

yum install -y virt-install
virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7.3.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/CentOS-7.3-x86_64.qcow2,size=6,format=qcow2

默认连接端口是从5900开始的

virsh list

在这里插入图片描述
查看一下端口

netstat -lntup|grep 5900

在这里插入图片描述

virt-install 常用参数

1. -n--name= 客户端虚拟机名称 
2. -r--ram= 客户端虚拟机分配的内存 
3. -u--uuid= 客户端 UUID 默认不写时,系统会自动生成 
4. --vcpus= 客户端的 vcpu 个数 
5. -v--hvm 全虚拟化 
6. -p--paravirt 半虚拟化
7. -l--location=localdir 安装源,有本地、nfs、http、ftp 几种,多用于 ks 网络安装 
8. --vnc 使用 vnc ,另有--vnclient=监听的 IP --vncport =VNC 监听的端口
9. -c--cdrom= 光驱 安装途径 
10.--disk= 使用不同选项作为磁盘使用安装介质 
11. -wNETWORK,--network=NETWORK 连接客户机到主机网络 
12. -s--file-size= 使用磁盘映像的大小 单位为 GB 
13. -f--file= 作为磁盘映像使用的文件 
14. --cpuset=设置哪个物理 CPU 能够被虚拟机使用 
15. --os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’) 
16. --os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步 优化虚拟机配置 
17. --host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV 是随着 libvirt 使用的一个 节点设备名(具体设备如’virshnodedev-list’的显示的结果) 
18. --accelerateKVM 或 KQEMU 内核加速,这个选项是推荐最好加上。如果 KVM 和 KQEMU 都支持, KVM 加速器优先使用。 
19. -xEXTRA,--extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命 令行参数到安装程序 
20. --nographics"virt-install" 将默认使用--vnc 选项,使用 nographics 指定没有控制台被分配给客户机

VNC连接创建好的虚拟机并安装系统
在这里插入图片描述
因为 centos7 默认网卡发生改变,我们需要修改内核参数,使用 eth0 作为网卡
在这里插入图片描述
二:10.0.0200:5901

虚拟机安装完成后是关闭了,我们需要启动

virsh list --all

在这里插入图片描述

 virsh start c73 

c73 是虚拟机的名字,是我们创建的时候定义的

这样就算是搭建完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值