基于内核的虚拟机(英语:Kernel-based Virtual Machine,简称KVM),是一种用于Linux内核中的虚拟化基础设施。KVM目前支持Intel VT及AMD-V的原生虚拟技术。python
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进行控制管理的组件主要有两个:linux
QEMU-KVM:shell
在 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:windows
尽管 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 实现的。centos
安装说明:服务器
在该篇博客中,我主要经过kvm虚拟化安装2个操做系统
一、centos 6.7
二、windows 7网络
安装前注意,须要在BIOS中开启以下两个功能:架构
VT(Virtualization Technology):处理器虚拟化硬件支持
VT-D(Virtualization Techonlogy for Directed I/O):I/O设备虚拟化硬件支持socket
准备工做:
系统镜像(CentOS-6.7-x86_64-bin-DVD1)
系统镜像(Source_WIN7_x64)
一、设置时间
二、查看CPU是否支持
vmx:Intel系列CPU支持虚拟化标志
svm:AMD系列CPU支持虚拟化标志
三、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 # 用于操做虚拟机硬盘镜像的建立、查看和格式转化
四、检查kvm模块并进行加载
kvm模块:该模块实现虚拟化核心基础架构,与硬件平台无关
kvm_intel:该模块主要涉及到硬件虚拟化
若是没有检测到模块,则执行(通常用rpm安装kvm包,系统会在启动时自动加载模块。):
模块文件在系统该位置:
五、校验kvm是否安装成功,若是下面为空,则表示没问题
若是报错,以下图,则启动 libvirtd 服务,而且设置开机启动
客户端安装完成后,须要为其设置网络接口,以便和主机网络、客户机之间的网络通讯。事实上,若是要在安装时使用网络通讯,须要提早设置客户机的网络链接。
kvm客户机网络链接有两种方式:
Bridge方式原理:
Bridge方式即虚拟网桥的网络链接方式,是客户机和子网里面的机器可以互相通讯。可使虚拟机成为网络中具备独立IP的主机。
桥接网络(也叫物理设备共享)被用做把一个物理设备复制到一台虚拟机。网桥多用做高级设置,特别是主机多个网络接口的状况。
Bridge方式的适用范围:
服务器主机虚拟化。
Bridge方式配置网桥步骤:
注:网桥模式须要在真机 ifcfg-eth0 配置文件中添加 BRIDGE=”br0”,不然真机与虚拟机没法互通。
配置完毕后 eth0 口则不会显示地址信息,新配置的 br0 口会代替 eth0 口成为真机网口,装好的虚拟机 eth0 口将于真机 br0 口互通。
一、编辑修改网络设备脚本文件,修改网卡设备eth0
NM_CONTROLLED这个属性值,根据redhat公司的文档是必须设置为“no”的(这个值为“yes”表示能够由服务NetworkManager来管理。NetworkManager服务不支持桥接,因此要设置为“no”。),但实际上发现设置为“yes”没有问题。通信正常。
二、编辑修改网络设备脚本文件,增长网桥设备br0,而且重启网卡
三、配置完成以后查看网卡,原来的 eth0:10.1.0.51 地址已经变为 br0:10.1.0.50,而且查看桥接接口。
一、配置桥接网络后,咱们经过 Virt-manager 工具安装,Virt-manager 是一个图形化的虚拟机管理工具,它提供了一个简易的虚拟机操做界面,要使用它,须要先安装图形化界面。(至于为何使用图形界面安装虚拟机 …… 因为本人也是刚学kvm虚拟化……,因此暂时先这样吧~):
二、通常来讲,服务器都是在 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 是图形界面进行管理操做的工具,那接来下我就经过 Virt-manager 进行建立虚拟机,在这以前,先查看我前面提到须要准备的镜像文件。
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 已经安装完成,而且可使用
建立windows虚拟机的配置和centos几乎同样,只不过使用不一样的ISO镜像及操做系统选项。安装过程在此略过 ……
1)以树状查看 libvirt 下全部目录
2)查看虚拟机磁盘文件
3)虚拟机 socket 文件及 save、dump、snapshot 目录
4)虚拟机xml配置文件(注:改图为后补,该实验中名称应该为Centos-6.5.xml)