KVM虚拟平台搭建使用

一、KVM虚拟化介绍

KVM 全称 kernel-based virtual machine,由Qumranet公司发起,2008年被RedHat收购。
KVM实现主要基于Intel-V或者AMD-V提供的虚拟化平台,利用普通的Linux进程运行于虚拟态的指令集,模拟虚拟机监视器和CPU。KVM不提供硬件虚拟化操作,其IO操作等都借助QEMU来完成。

KVM有如下特点:

  • guest作为一个普通进程运行于宿主机
  • guest的CPU(vCPU)作为进程的线程存在,并受到宿主机内核的调度
  • guest继承了宿主机内核的一些属性,比如huge pages(大页表)
  • guest的磁盘IO和网络IO会受到宿主机的设置的影响
  • guest通过宿主机上的虚拟网桥与外部相连

KVM整体架构

每一个虚拟机(guest)在Host上都被模拟为一个QEMU进程,即emulation进程。
我们创建一个虚拟机后,用普通的ps 命令就可以查看到。

?  ~ virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     kvm-01                         running

?  ~ ps aux | grep qemu
libvirt+ 20308 15.1  7.5 5023928 595884 ?      Sl   17:29   0:10 /usr/bin/qemu-system-x86_64 -name kvm-01 -S -machine pc-i440fx-wily,accel=kvm,usb=off -m 2048 -realtime mlock=off -smp 2 qemu ....

可以看到,此虚拟机就是一个普通的Linux进程,他有自己的pid。并且有四个线程,线程数量不是固定的,但是至少会有三个(vCPU,IO,Signal)。其中有两个是vCPU线程,有一个IO线程还有一个信号处理线程。

?  ~ pstree -p 20308
qemu-system-x86(20308)-+-{qemu-system-x86}(20353)
                       |-{qemu-system-x86}(20408)
                       |-{qemu-system-x86}(20409)
                       |-{qemu-system-x86}(20412)
                       

虚拟CPU

guest的所有用户级别(user)的指令集,都会直接由宿主机线程执行,此线程会调用KVM的ioctl方式提供的接口加载guest的指令并在特殊的CPU模式下运行,不需要经过CPU指令集的软件模拟转换,大大的减少了虚拟化成本,这也是KVM优于其他虚拟化方式的点之一。

KVM向外提供了一个虚拟设备/dev/kvm,通过ioctl(IO设备带外管理接口)来对KVM进行操作,包括虚拟机的初始化,分配内存,指令加载等等。

虚拟IO设备

guest作为一个进程存在,当然他的内核的所有驱动等都存在,只是硬件被QEMU所模拟(后面介绍virtio的时候特殊)。guest的所有硬件操作都会有QEMU来接管,QEMU负责与真实的宿主机硬件打交道。

虚拟内存

guest的内存在host上由emulator提供,对emulator来说,guest访问的内存就是他的虚拟地址空间,guest上需要经过一次虚拟地址到物理地址的转换,转换到guest的物理地址其实也就是emulator的虚拟地址,emulator再次经过一次转换,转换为host的物理地址。后面会有介绍各种虚拟化的优化手段,这里只是做一个overview。

二、KVM安装

1.安装centos7服务器

点击完成,后开始安装

2.虚机开启虚拟化引擎配置

3.开启网卡ONBOOT,并重启网卡

4.查看CPU是否支持虚拟化

grep -E --color=auto "(vmx|svm)" /proc/cpuinfo

5.安装KVM

virtualization             #提供虚拟机的环境,主要包含qemu-kvm

virtualization-client      #管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-manager,virt-viewer

virtualization-platform    #提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client

virtualization-tools       #管理离线虚拟机镜像的工具,主要有libguestfs

gnome-desktop         #安装图形管理界面

yum -y group install gnome-desktop virtualization-tools virtualization-platform virtualization-client virtualization      #yum安装包组

6.KVM远程管理

[[email protected] ~]# which virsh      #查看虚拟机管理命令
/usr/bin/virsh
[[email protected] ~]# virsh list --all    #查看所有虚拟机
 Id    名称                         状态
----------------------------------------------------

7.使用qemu-kvm管理虚拟机

参数简介

CPU、Memory、SMP、NUMA

-cpu cpu     #select CPU (-cpu ? for list)
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
-m megs      #set vRAM size to megs MB [default=128]
-numa node[,mem=size][,cpus=cpu][,nodeid=node]

Storage Device

-drive option[,option[,option[,...]]]    #定义一个存储设备
子选项介绍:
 id=name                         #定义硬盘设备名称
 file=/path/to/somefile                #硬件映像文件路径
 if=interface_type                  #指定硬盘设备所连接的接口类型(控制器类型), 如ide, scsi, virio等
 index=i                         #设定同一种控制器类型中不同设备的索引号
 media=disk|cdrom                   #定义介质类型为硬盘(disk)还是光盘(cdrom)
 snapshot=on|off                    #指定当前硬盘设备是否支持快照功能
 cache=writethrough|writeback|none|unsafe    #定义如何使用物理机缓存来访问块数据
 format=format                    #指定映像文件的格式, 具体格式可参见qemu-img命令

Display options  #显示选项用于定义虚拟机启动后的显示接口相关类型及属性等

-nographic                     #默认情况下, qemu使用SDL来显示VGA输出; 而此选项用于禁止图形接口, 此时, qemu类似一个简单的命令行程序, 其仿真串口被将被重定向到控制台
-curses                        #禁止图形接口, 并使用curses/ncurses作为交互接口
-alt-grab                      #使用Ctrl+Alt+shift组合键释放鼠标
-ctrl-grab                     #使用右Ctrl键释放鼠标
-sdl                          #启用SDL
-spice option[,option[,...]]           #启用spice远程桌面协议, 具体请参照qemu-kvm帮助手册
-vga [std|cirrus|vmware|qxl|xenfb|none]     #指定要仿真的VGA接口类型
-vnc display                  #默认情况下, qemu使用SDL显示VGA输出; 使用该选项, 可以让qemu监听在VNC上, 并将VGA输出重定向至VNC会话; 使用此选项, 必须使用-k选项指定键盘布局类型

Network options  #简单介绍几种,更多可参考官方手册

NIC
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
# 创建一个新的网卡设备并连接至vlan n中;
# pc架构上默认的nic为e1000, macaddr用于为其指定MAC地址
# 使用"qemu-kvm -net nic,model=?"来获取当前平台支持的类型
# name用于指定一个在监控时显示的网卡设备名称

TAP
-net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][downscript=dfile]
#通过物理机的tap网络接口连接至vlan n中,
#使用script=file指定脚本(默认为/etc/qemu-ifup)来配置当前网络接口
#使用downscript=dfile指定脚本(默认为/etc/qemu-ifdown)来撤销接口配置
#使用script=no和downscript=no可分别用来禁止执行脚本

USER
-net user[,option][,option][,...]    #在用户模式配置网络栈, 其不依赖于管理权限
子选项介绍:
 vlan=n                   #连接之vlan n, 默认n=0
 name=str                  #指定接口的显示名称, 常用于监控模式中
 net=addr[/mask]               #设定GuestOS可见的IP网络, 默认为192.168.1.0/24
 host=addr                  #指定GuestOS中看到的Host的IP地址, 默认为指定网络中的第二个, 即x.x.x.x
 dhcpstart=addr              #指定DHCP服务器地址池中16个地址的起始IP, 默认为第16个至第31个, 即x.x.x.x ~ x.x.x.x
 dns=addr                   #指定GuestOS可见的dns服务器地址, 默认为GuestOS网络中第三个地址, 即x.x.x.x

7.1 安装qemu-kvm

yum -y install qemu-kvm

7.2 查看文件位置

rpm -ql qemu-kvm | grep qemu-kvm | head -2

7.3 创建软连接到/usr/bin目录下

ln -s /usr/libexec/qemu-kvm /usr/bin

7.4 安装centos6.10虚机

qemu-kvm -m 128 -smp 1 -name "test" -hda /kvm/images/CentOS-6.10.iso            #内存128M  CPU 1块 

若此步报错,应该是主机未开启虚拟化,在bios中配置虚拟化即可

7.5 安装VNC客户端

yum -y install tigervnc

7.6 切换图形管理界面连接VNC

startx &
#打开终端命令台
vncviewer :5900

8.virt-install创建虚拟机并安装

8.1 创建磁盘

qemu-img create -f qcow2 /kvm/images/CentOS-6.10.qcow2 5G   #建一个格式为qcow2的磁盘

8.2 安装系统

virt-install --name=centos6 --disk path=/kvm/images/CentOS-6.10.qcow2 --vcpus=1 --ram=1024 --cdrom=/kvm/images/CentOS-6.10.iso --network network=default --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=rhel6

切换至图形界面可看到如下图

原文地址:https://www.cnblogs.com/Huang-Niu/p/11376968.html

时间: 2024-08-02 15:05:40

KVM虚拟平台搭建使用的相关文章

部署KVM虚拟化平台------搭建

一 .部署KVM虚拟化平台 hyper-v是windows中的虚拟化1.KVM模块直接整合在Linux内核中,kvm是内核模块,虚拟机与kvm模块之间为管理工具2.KVM组成1.KVM Driver---虚拟机创建---虚拟机内存分配---虚拟CPU寄存器读写---虚拟CPU运行 2.QEMU (经过简化与修改)---模拟PC硬件的用户控件组件---提供I/O设备模型及访问外设的途径 二.虚拟化的三种模式 **1.客户模式:典型的虚拟机环境(虚拟网卡.内存.硬盘): 2.用户模式:工具层,下面是

kvm虚拟化平台搭建入门

KVM虚拟化有两种网络模式:1)Bridge网桥模式2)NAT网络地址转换模式Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. 环境: 本次实验要开启VMWare中对应CentOS6.5虚拟机的虚拟化功能--在虚拟机设置--处理器--虚拟化引擎--勾选虚拟化Intel VT-x/EPT 或 AMD-V/RVI(V) 1.安装方式图形化安装CentOS6.5--采用最小化安装系统--选择桌面安装--选择虚拟化选项 2,安装kvm所需软件 [[email protecte

kvm虚拟化平台搭建

一.虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率. 物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest).那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?这个主要是通过一个叫做 Hypervisor 的

KVM虚拟平台——迁移KVM虚拟机

博文大纲:一.KVM虚拟机迁移的方式二.实现KVM虚拟机静态迁移三.实现KVM虚拟机动态迁移 一.KVM虚拟机迁移的方式 KVM平台中的KVM虚拟机迁移分为以下两种: (1)冷迁移(静态迁移) 我们存放虚拟机磁盘的目录都是挂在的一个nfs文件系统的磁盘,进行冷迁移时,只要在目标主机上挂载这个nfs文件系统,就可以看到要迁移的那个虚拟机的磁盘文件,通常以.qcow2或.raw结尾的,然后,只需将虚拟机的.xml配置文件发送到目标服务器上,然后重新定义一下迁移过来的虚拟机即可! (2)热迁移(动态迁

CentOS 7中搭建KVM虚拟化平台

什么是虚拟化 虚拟化就是把硬件资源从物理方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台物理机上同时运行多个操作系统,以实现资源利用率最大化和灵活管理的一项技术. 虚拟化的优势 减少服务器数量,降低硬件采购成本. 资源利用率最大化 降低机房空间.散热.用电消耗的成本. 硬件资源可动态调整,提高企业IT业务灵活性. 高可用性. 在不中断服务的情况下进行物理硬件调整. 降低管理成本. 具备更高效的备灾能力. KVM虚拟化 KVM自linux2.6.20版本后就直接整合到

Tomcat 设置虚拟路径US现金盘平台搭建的几种方法及为什么设置虚拟路径

很多朋友US现金盘平台搭建论坛:haozbbs.com Q1446595067 都会很疑惑,既然我们都知道在Tomcat服务器上部署项目只要将项目打包,然后放到webapps目录下就可以了,为什么还需要配置虚拟路径?的确,把项目放到webapps目录下非常方便,至少在部署一个项目时,直接把项目扔到webapps目录下所进行的操作会比设置虚拟路径容易的多.但是如果考虑到长久性的操作以及多个项目呢? 设置虚拟路径的优势我总结有两点,当然这只是很普通.很常见的两点优势:第一.我们开发一个项目,在未定版

在 CentOS 7 上搭建 KVM 虚拟化平台

KVM 简介 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少.KVM目前已成为学术界的主流VMM之一. KVM的虚拟化需要硬件支持(如IntelVT技术或者AMDV技术).是基于硬件的完全虚拟化.而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化.但Xen本身有

Openstack平台搭建之第三天

Openstack平台搭建之第三天 Author :xxbAndy If you have any question ,please contact me by [email protected] or 371990778(qq) 注意:主控节点为server10.example.com: 新增nova节点为desktop10.example.com 在实验环境中已经对各个主机做了DNS解析 1.管理neutron节点服务,为nova-compute节点进行配置网络服务 [[email prot

部署KVM虚拟化平台

防伪码:一场秋雨一场寒,十场秋雨穿上棉. 第四章 部署KVM虚拟化平台 前言:我们在以前学习过vsphere虚拟化平台,安装过esxi5.5,在esxi5.5上安装过虚拟机,使用vcenter管理esxi,从而实现了虚拟机的迁移,备份,高可用等操作,但是安装成本很高,需要购买正版.今天这一章内容是利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化.KVM直接整合到了linux内核,因此在性能.安全性.兼容性.稳定性上都有好的表现.我