文档章节

kvm 虚拟化概述及 virt-manager 安装虚拟机

 空灵飞渡
发布于 2017/08/01 09:55
字数 2479
阅读 774
收藏 0

一、KVM定义

基于内核的虚拟机(英语:Kernel-based Virtual Machine,简称KVM),是一种用于Linux内核中的虚拟化基础设施。KVM目前支持Intel VT及AMD-V的原生虚拟技术。

1)是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux全虚拟化解决方案。 
2)它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。 
3)KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。 
4)在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。 
5)KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。 
可以对kvm进行控制管理的组件主要有两个:

QEMU-KVM:

在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 的 CPU 上虚拟一个 Power 的 CPU,并利用它编译出可运行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中分为 kernel 部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。

Libvirt/Virsh/Virt-manager:

尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更通用的辅助工具libvirt。Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。同时还能使用图形界面进行管理操作,其工具是 Virt-manager。他是一套用 Python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。

安装说明:

在该篇博客中,我主要通过kvm虚拟化安装2个操作系统 
1、centos 6.7 
2、windows 7

安装前注意,需要在BIOS中开启如下两个功能:

VT(Virtualization Technology):处理器虚拟化硬件支持 
VT-D(Virtualization Techonlogy for Directed I/O):I/O设备虚拟化硬件支持

准备工作:

系统镜像(CentOS-6.7-x86_64-bin-DVD1) 
系统镜像(Source_WIN7_x64)

二、KVM安装

1、设置时间

这里写图片描述

2、查看CPU是否支持

vmx:Intel系列CPU支持虚拟化标志 
svm:AMD系列CPU支持虚拟化标志

这里写图片描述

3、Libvirt/Virsh/Virt-manager 组件安装,并设置为开机运行。

记得先添加 /etc/hosts ,不然会报错:Name or service not known

这里写图片描述

这里写图片描述

安装包介绍:

libvirt-client   # libvirt的客户端,最重要的功能之一就是在宿主机关机时可以通知虚拟机也关机  
gpxe-roms-qemu   # 虚拟机 iPXE 的启动固件,支持虚拟机从网络启动
libvirt-python   # libvirt 为 python 提供的 API
python-virtinst  # 一套 Python 的虚拟机安装工具
qemu-kvm         # KVM 在用户空间运行的程序
libvirt          # 用于管理虚拟机,它提供了一套虚拟机操作 API
virt-manager     # 基于 libvirt 的图像化虚拟机管理软件 
virt-viewer      # 显示虚拟机的控制台 Console
virt-top         # 类似于 top 命令,查看虚拟机的资源使用情况
virt-what        # 在虚拟机内部执行,查看虚拟机运行的虚拟化平台
qemu-img         # 用于操作虚拟机硬盘镜像的创建、查看和格式转化
  •  

4、检查kvm模块并进行加载

kvm模块:该模块实现虚拟化核心基础架构,与硬件平台无关 
kvm_intel:该模块主要涉及到硬件虚拟化

这里写图片描述

如果没有检测到模块,则执行(一般用rpm安装kvm包,系统会在启动时自动加载模块。):

这里写图片描述

模块文件在系统该位置:

这里写图片描述

5、校验kvm是否安装成功,如果下面为空,则表示没问题

这里写图片描述

如果报错,如下图,则启动 libvirtd 服务,并且设置开机启动

这里写图片描述

三、kvm网络配置

客户端安装完成后,需要为其设置网络接口,以便和主机网络、客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接。

kvm客户机网络连接有两种方式:

  • 用户网络(User Networking):NAT方式,让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。
  • 虚拟网桥(Virtual Bridge):Bridge方式,这种方式要比用户网络复杂一些,但是设置好客户机与互联网,客户机与主机之间的通信都很容易。

Bridge方式原理:

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

Bridge方式的适用范围:

服务器主机虚拟化。

Bridge方式配置网桥步骤:

注:网桥模式需要在真机 ifcfg-eth0 配置文件中添加 BRIDGE=”br0”,否则真机与虚拟机无法互通。

配置完毕后 eth0 口则不会显示地址信息,新配置的 br0 口会代替 eth0 口成为真机网口,装好的虚拟机 eth0 口将于真机 br0 口互通。

1、编辑修改网络设备脚本文件,修改网卡设备eth0

这里写图片描述

NM_CONTROLLED这个属性值,根据redhat公司的文档是必须设置为“no”的(这个值为“yes”表示可以由服务NetworkManager来管理。NetworkManager服务不支持桥接,所以要设置为“no”。),但实际上发现设置为“yes”没有问题。通讯正常。

2、编辑修改网络设备脚本文件,增加网桥设备br0,并且重启网卡

这里写图片描述

3、配置完成之后查看网卡,原来的 eth0:10.1.0.51 地址已经变为 br0:10.1.0.50,并且查看桥接接口。

这里写图片描述

这里写图片描述

四、安装图形化界面及配置 VNC 服务

1、配置桥接网络后,我们通过 Virt-manager 工具安装,Virt-manager 是一个图形化的虚拟机管理工具,它提供了一个简易的虚拟机操作界面,要使用它,需要先安装图形化界面。(至于为什么使用图形界面安装虚拟机 …… 由于本人也是刚学kvm虚拟化……,所以暂时先这样吧~):

这里写图片描述

2、一般来说,服务器都是在 IDC 机房的,为了看到宿主机的图形化界面,还需要安装配置 VNC。

安装 VNC 程序软件包 tigervnc 和 tigervnc-server

这里写图片描述

编辑 vncserver 配置文件 /etc/sysconfig/vncservers,配置宿主机 VNC 虚拟机显示器为1,端口是5901;虚拟机显示器[2]的监听IP是 0.0.0.0,虚拟机显示器[1]监听127.0.0.1,分辨率 800x600

这里写图片描述

设置 VNC 密码,并且重启 vncserver 服务

这里写图片描述

通过客户端连接 vncserver,并且输入 ip:port 及 password

这里写图片描述

这里写图片描述

这里写图片描述

四、使用 Virt-manager 创建kvm虚拟机

前面我们介绍过,Virt-manager 是图形界面进行管理操作的工具,那接来下我就通过 Virt-manager 进行创建虚拟机,在这之前,先查看我前面提到需要准备的镜像文件。 
这里写图片描述

1、创建 kvm Centos-6.5 虚拟机

1)运行 Virt-manager 软件

这里写图片描述

2)点击 —> Computer图标 —> 输入虚拟机名称 —> 选择本地ISO —> 点击 Forward

这里写图片描述

3)选择 CentOS-6.5 ISO 文件 —> OS type —> Version —> 点击 Forward

这里写图片描述

4)选择 Memory(RAM) —> CPUs —> 点击 Forward

这里写图片描述

5)分配磁盘大小 —> 点击 Forward

这里写图片描述

6)选择 Customize configuration before install —> 点击 Advanced options —> 选择 Host Device eth0 (Bridge ‘br0’) —> 选择 Virt type:kvm —> 选择 Architecture:x86_64 —> 点击Finish

这里写图片描述

7)在自定义界面中 —> NIC配置 —> 选择 Device model:virtio —> 并且点击 Begin installation

这里写图片描述

这里写图片描述

8)在下图中可以看到正在运行的虚拟机,开始安装系统

这里写图片描述

9)虚拟机centos6.7 已经安装完成~ 通过 xshell 终端及 ping 进行测试,是否可以访问外网 
主机名:kvm-virtual-centos6.7 
IP地址:10.1.0.60

这里写图片描述

这里写图片描述

这里写图片描述

至此,第一台虚拟机 Centos6.7 已经安装完成,并且可以使用

2、创建 kvm Windows 7 虚拟机(后期增加)

创建windows虚拟机的配置和centos几乎一样,只不过使用不同的ISO镜像及操作系统选项。安装过程在此略过 ……

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

五、查看 centos6.5 和 windows7 虚拟机磁盘文件

1)以树状查看 libvirt 下所有目录

这里写图片描述

2)查看虚拟机磁盘文件

这里写图片描述

3)虚拟机 socket 文件及 save、dump、snapshot 目录

这里写图片描述

4)虚拟机xml配置文件(注:改图为后补,该实验中名称应该为Centos-6.5.xml)

这里写图片描述

本文转载自:http://blog.csdn.net/wanglei_storage/article/details/51100506

粉丝 6
博文 187
码字总数 87809
作品 0
广州
私信 提问
开源虚拟化 KVM 视频教程在51CTO上线了

  《开源虚拟化KVM极速入门》视频教程,正式在51CTO上线了!   访问地址:http://edu.51cto.com/course/courseid-6815.html   由浅入深、循序渐进地掌握开源虚拟化KVM的体系结构、构建...

dbtrain
2016/08/20
0
0
转-红帽企业版6.0 KVM虚拟机实战攻略

from: http://www.searchvirtual.com.cn/showcontent46584.htm 在2010年4月发布的RHEL 6.0 Beta版中,去掉了Xen,这也许是第一个不包含Xen Hypervisor的知名Linux发行版。KVM 是指基于 Linu...

玉龙
2011/05/04
1K
1
三种方式在CentOS 7搭建KVM虚拟化平台

KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux的一个内核模块,该内核模块使得 Linux变成了一个Hypervisor:它由 Quramnet开发,该公司于 2008年被 Red Hat ...

杨书凡
2018/06/16
0
0
Linux虚拟化技术—CentOS7.4下KVM虚拟化一 安装配置及基本操作

Linux虚拟化技术—CentOS7.4下KVM虚拟化一 安装配置及基本操作 0行云流水00人评论61017人阅读2018-04-11 19:57:20 KVM的安装配置与基本操作 目录 第一部分 实验环境 第二部分 安装图形界面 ...

linjin200
05/23
21
0
redhat 6.5 kvm 虚拟化(好久没更新了...)

KVM虚拟机克隆方法(设置VMware) 2.查看cpu是否支持 虚拟化技术且是64位的 intel:cat /proc/cpuinfo grep --color vmx amd:cat /proc/cpuinfo grep --color svm 3.如果是正式的服务器修改b...

ekode
2016/11/14
29
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部