Linux下kvm虚拟化技术的安装与使用

Linux下kvm虚拟化技术的安装与使用

云时代的到来,虚拟化的广泛应用。让我们重新的科技进行了定义。而当下知名的虚拟化产品有 vmware vsphere ,Hyper-v,xen,kvm。vmware的虚拟化所占的市场有目共睹,Hyper-V是windows平台下的虚拟化,而Xen就属于一个半虚拟化产品。kvm就是我们今天所介绍的对象。

kvm是kernel virtual module的简写)kvm是红帽公司5.4版本后所推出的最新虚拟化技术产品。它和vpc,virtual  box都属于完全虚拟化产品,而Xen是属于半虚拟化产品。ps:这里的完全虚拟化和半虚拟化在后续的blog中会更新也可以查阅网上的资料。

Xen的完全虚拟化的实现是需要硬件的支持,它的实现是需要cpu是VT技术的支持,在inter公司cpu的这种技术叫做vmx,而在AMD上叫做svm,虽说Xen的完全虚拟化没有做出什么成就但是并不影响他在半虚拟化世界的霸主地位。

kvm其实也借鉴了Xen半虚拟化中的许多成就,虽说kvm是完全虚拟化,但在关键的硬盘和网卡上支持半虚拟化virtio,在很大程度上提高了性能,kvm是轻量级虚拟化的代表,也需要硬件vt技术的支持,另外从操作界面上看,xen和kvm都是用virt-manager工具,差别不是很大,但不可以在同一台机器上同时安装且运行Xen和KVM;另外kvm在只能运行在红帽企业版5.4 64位系统上,同时需要关闭selinux。

KVM是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。

KVM所使用的方法是通过简单地加载内核模块而将 Linux 内核转换为一个系统管理程序。这个内核模块导出了一个名为 /dev/kvm 的设备,它可以启用内核的客户模式(除了传统的内核模式和用户模式)。有了 /dev/kvm 设备,VM 使自己的地址空间独立于内核或运行着的任何其他 VM 的地址空间。设备树(/dev)中的设备对于所有用户空间进程来说都是通用的。但是每个打开 /dev/kvm 的进程看到的是不同的映射(为了支持 VM 间的隔离)。KVM安装 KVM 之后,您可以在用户空间启动客户操作系统。每个客户操作系统都是主机操作系统(或系统管理程序)的一个单个进程。

   1、KVM 虚拟机的管理工具

 准确来说,KVM 仅是 Linux 内核中的一个模块。管理和创建完整的 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 发行版中分为 内核部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。 Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的是图形用户界面,这就是 virt-manager。他是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。

2、kvm虚拟机的安装。

(一)安装之前先要开启cpu的虚拟化功能,如果是物理机直接进入BIOS中就该虚拟化选项开启,如果是

vmware worksation 如图:

如果是vSphere 的话也是在设置中找到cpu的设置去开启虚拟化支持。

设置好之后检查虚拟化是否成功支持:

好的成功支持。

(二)kvm软件的安装

#yum install kvm virt-manager libvirt
#service libvirtd start
#chkconfig libvirt on

kvm为kvm的模块软件包

virt-manageer 为kvm的管理包

libvirt 为创建虚拟机的工具包

(三)检查模块的正确安装

使用lsmod来检查模块安装

#[[email protected] ~]# lsmod | grep kvm
#kvm                 333172 0

   (四)检查KVM是否成功安装

#virsh -c qemu:///system list

由于我这里之前创建了一个虚拟机所以这里就会有显示,初次安装横线下面没有属于正常。另外如果报错的话检查上面的服务是否正常启动。

3,kvm的网络配置

一种是default,它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

另外一种方式是bridge方式,可以使用虚拟机成为网络中具有独立IP的主机。

我这里是使用第二种网络配置。

#[[email protected] network-scripts]# vi ifcfg-br0
#DEVICE=br0
#TYPE=Bridge
#BOOTRPOTO=static
#IPADDR=192.168.7.2
#NETMASK=255.255.255.0
#ONBOOT=yes         
#[[email protected] network-scripts]# vi ifcfg-eth0
#DEVICE=eth0
#HWADDR=C0:3F:D5:3A:FD:C4
#TYPE=Ethernet
#UUID=ea494507-eb1f-45a7-9582-64671dc60298
#ONBOOT=yes
#NM_CONTROLLED=yes
#BOOTPROTO=none
#IPADDR=192.168.7.2
#PREFIX=16
#BRIDGE=br0

以上为kvm的配置下来开始虚拟机的安装。

virt-manager 是基于 libvirt 的图像化虚拟机管理软件,请注意不同的发行版上 virt-manager 的版本可能不同,图形界面和操作方法也可能不同。本文使用了红帽6企业版的 virt-manager-0.8.4-8。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的"新建"选项virt-manager接口界面。

下来就是系统的安装就不多做介绍!

4、使用virsh来管理kvm

Virsh的管理比较复杂。但是另一种可选方式virt-manager的缺陷还很明显,virt-manager需要在系统内运行,这会浪费资源并为别有目的的人提供额外的进攻点。virt-manager的另一大缺点是需要通过图形工作站运行远程接入的方式,才能对服务器上的虚拟机进行管理。而virsh则可以通过命令行执行各种各样的管理任务。要学习virsh很困难,因为有许多命令。virsh通过主命令和子命令管理每个虚拟机功能。要查看所有命令,输入virsh help。你可能发现大量命令,不过每个命令都有帮助指南,只需要输入virsh help。例如使用virsh help uri,就可以看到所有关于virsh uri命令的帮助。下面是virsh命令实例:

创建一个名称是myWin7的windows 7虚拟机,

#[[email protected] ~]# yuminstall virt-viewer
#[[email protected] ~]# virt-install --name mywin7--ram 1024  --file=/var/lib/libvirt/images/mywin7.img --file-size=15  --vnc--cdrom=/iso/win7_32.iso --network network:br0

常用参数介绍:

-n NAME,   --name=NAME            指定机器名字

-r MEMORY, --ram=MEMORY           指定内存大小

--vcpus=VCPUS                     指定虚拟机的 CPU 数量

-f DISKFILE, --file=DISKFILE             虚拟机的虚拟磁盘,磁盘可以是文件、磁盘分区或者是lvm。此选项用来指定虚拟磁盘的路径

-s DISKSIZE, --file-size=DISKSIZE         指定虚拟磁盘的大小,单位是 G;如果—file 指定的文件路径不存在,并且—nonsparse 选项没有指定,对这个文件不会预先分配存储空间。

-w NETWORK, --network=NETWORK     NETWORK 有三种选择,bridge:BRIDGE,network:NAME 和 user

-c CDROM, --cdrom=CDROM           指定用于全虚拟化Guest 的虚拟 CD,可以是一个 ISO 镜像文件,也可以是一个 CDROM 设备,也可以是一个通过 URL 可以访问和获取到的 boot.iso 镜像。如果将其忽略,那么在—location 选项中必须指定 kernel 和 initrd的位置,也可以使用—pxe 参数通过网络进行安装。

--pxe     使用 PXE boot 协议来加载初始化的ramdisk 和 kernel,以便于启动 Guset 段的安装进进程。如果没有指定—pxe,那么就必须指定—cdrom 和--location 其中一个。

-l LOCATION, --location=LOCATION   指定 kernel 和 initrd 的安装源,这对于半虚拟化是必须的。对于全虚拟化,要么使用--location 要么使用--cdrom 来指定 ISO 或 CDROM 镜像。

其必须符合下面的四种格式:

DIRECTORY

nfs:host:/path

http://host/path

ftp://host/path

-xEXTRA, --extra-args=EXTRA      用来给加载的 kernel 和 initrd 提供额外的内核命令行参数。

(跟详细的参数及使用方法详见 manvirt-install)

命令执行完之后进入kvm的管理界面就会有win7了

下来win7 的安装系统就不多说了!

至此kvm的安装与使用就介绍这么多,有不足的请多多指教!

时间: 2024-10-29 03:38:33

Linux下kvm虚拟化技术的安装与使用的相关文章

Linux的桌面虚拟化技术KVM(四)——虚拟机镜像格式对比与转换

Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 (1).常用镜像格式对比 目前常用虚拟机镜像格式:raw.cow.qcow.qcow2.vmdk. 1)raw raw格式:老牌的镜像格式,用一个字来说就是裸,也就是赤裸裸,你随便dd一个file就模拟了一个raw格式的镜像.由于裸的彻底,性能上来说的话还是不错的.centos6上KVM和XEN默认的格式还是这个格式.centos7以上默认是qcow2 . 裸的好处还有就是简

KVM虚拟化技术

KVM虚拟化技术 Qemu-kvm kvm Qemu-kvm创建和管理虚拟机 1.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S

Linux -- 构建KVM虚拟化环境

硬件系统的配置 硬件和BIOS中虚拟化技术的支持是KVM运行的先决条件. 在x86-64架构的处理器中,KVM必需的硬件虚拟化扩展分别为:Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术. 一般在BIOS中,VT的选项通过"Advanced →Processor Configuration"来查看和设置,它的标识通常为"Intel(R) Virtualization Technology"或"Intel VT"等类似的文字说明.

KVM虚拟化技术(一)

KVM虚拟化技术(一) =============================================================================== 概述: =============================================================================== 虚拟化技术基础 1.介绍 ★cpu虚拟化: ☉模拟:emulation ☉虚拟:virtulization 完全虚拟化(full-virtuliza

[转] KVM虚拟化技术生态环境介绍

KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/qemu-kvm的关系 qemu vs. qemu-kvm: 从qemu 1.3开始,kvm userspace code就维护在qemu mainline中(git clone https://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git, ref) qe

KVM虚拟化+PKE无人值守安装

安装KVM虚拟化条件: 首先CPU要支持虚拟化(Intel是vmx,AMD是svm) [[email protected] ~]# egrep '(vmx|svm)' --color /proc/cpuinfo 确保BIOS里开启VT Intel(R) Virtualization Tech [Enabled] 安装虚拟化套件 [[email protected] ~]# LANG=en_US-utf8 [[email protected] ~]# yum -y groupinstall "Vi

Linux下WebSphereV8.5.5.0 安装详细过程

Linux下WebSphereV8.5.5.0 安装详细过程 自WAS8以后安装包不再区别OS,一份介质可以安装到多个平台.只针对Installation Manager 进行了操作系统的区分 ,Websphere产品介质必须通过专门的工具Install Managere安装.进入IBM的官网http://www.ibm.com/us/en/进行下载.在云盘http://yun.baidu.com/share/linkshareid=2515770728&uk=4252782771 中是Linu

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3

Linux下搭建无人执守安装服务器

Linux下搭建无人执守安装服务器 实验概述 原理和概念: 1:什么是PXE ? 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client.PXE (Pre-bootExecution Environment)协议使计算机可以通过网络启动. 网卡中必须有PXE芯片 协议分为client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BI