Kvm 简介 安装 使用 桥接网络
KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:
它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
它需要支持虚拟化扩展的 CPU。
它是完全开源的。官网。
其基本结构由两部分组成:
一个是KVM Driver ,是Linux 内核的一个模块,负责虚拟机的创建,虚拟内存的分配,虚拟CPU寄存器的读写以及虚拟CPU的运行等;
当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。
从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(诸如动态迁移),都是由QEMU自己实现的。
从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。
诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;
KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。
1.确定机器有VT
终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)
grep svm /proc/cpuinfo (AMD芯片)
不知道芯片的生产厂商则输入:egrep '(vmx|svm)' /proc/cpuinfo
如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。
2. 确保BIOS里开启VT
Intel(R) Virtualization Tech [Enabled]
如有必要,还需在BIOS中开启VT-d
3. 确保内核版本较新,支持KVM
用uname –r查看内核版本,如果在2.6.20以下的linux版本,需升级内核。
下面就Ubuntu和CentOS下安装使用KVM虚拟机做介绍:
1.Ubuntu 安装
用guest登陆,安装KVM的命令为:
sudo apt-get install kvm qemu qemu-kvm virt-manager kernel-package linux-source kqemu-source build-essential
kvm安装成功后会有/dev/kvm,如果无需图形管理器,只需要安装前三个即可。
再来查看下KVM是否安装成功,执行:virsh -c qemu:///system list
如果输入结果像下面这样的,那么成功了:
Connecting to uri: qemu:///system
Id Name State
----------------------------------
2.CentOS中安装时
注1:CentOS中安装时,先要选择Selinux为enable,使用命令
#system-config-securitylevel-tui
可查看或修改selinux的状态。
注2: CentOS中用root登陆时则安装命令为:
yum install kvm kmod-kvm qemu
再装入kvm模块:modprobe kvm-intel (Intel机器) 或者 modprobe kvm-amd (amd机器)
注3:可以用以下命令来检查是否装入kvm模块:
/sbin/lsmod | grep kvm
如果输出关于kvm版本的信息则已装入kvm模块
注4: 安装好后,可使用qemu-kvm命令,输入该命令,如果系统显示未知的命令,可查看/usr/libexec中是否有qemu-kvm可执行文件,如果有,将其拷贝到/bin目录下即可。
如果确实按照上面的步骤进行了,却在/bin,/usr/libexec,/usr/bin,/usr/sbin里都找不到qemu-kvm可执行文件,可执行以下命令:
#yum provides "*/qemu-kvm"
注5:安装新内核后,可能有部分软件版本过低,不兼容。比如firefox因版本过低,无法启动。
CentOS下可使用如下命令更新该软件(以firefox为例):
#yum update firefox
virt-manager 管理虚拟化的方法
Virtual Machine Manager (virt-manager) 是一个轻量级应用程序套件,形式为一个管理虚拟机的命令行或图形用户界面 (GUI)。除了提供对虚拟机的管理功能之外,virt-manager 还通过一个嵌入式虚拟网络计算 (VNC) 客户端查看器为 Guest 虚拟机提供一个完整图形控制台。
作为一个应用程序套件,virt-manager 包括了一组常见的虚拟化管理工具。这些工具已在表 1 中列出,包括虚拟机构造、克隆、映像制作和查看。virsh 实用程序不是 virt-manager 包的一部分,但它本身就具有很重要的价值。
安装:yum install virt-manager.x86_64
(libvirtd其旨在为包括Xen、kvm在内的各种虚拟化工具提供一套方便、可靠的
编程接口。当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virt-install(命令行模式)等均基于libvirt开发而成。
Libvirt 库是一种实现 Linux 虚拟化功能的 Linux? API,它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品
本节中的步骤创建两个虚拟机。
- 安装一个基于 Linux? 的操作系统 debian,下载镜像文件
- 要开始虚拟机创建过程,使用
sudo
以 root 用户启动virt-manager
:$ sudo virt-manager
打开
virt-manager
窗口,可通过该窗口连接到本地 QEMU 虚拟机管理程序(通过右键单击 localhost (QEMU),然后单击 Connect 来完成)。如果有更多虚拟机管理程序可用,那么它们应在这里列出,并可通过libvirt
API 连接。图 2. Virtual Machine Manager 窗口
- 当连接到本地 QEMU 虚拟机管理程序时,单击 Create Virtual Machine 图标,这将启动 VM Construction Wizard。
- 将此虚拟机命名为debian8-71,并从一个本地 ISO(已在上面下载)发起您的操作系统安装。
图 3. 创建一个虚拟机
- 单击 Forward 后,定义您的虚拟机的安装文件并为操作系统选择一个类型。在本例中,指定您的 ISO 文件,从操作系统类型列表中选择Linux,然后从版本列表中选择 iso 文件
图 4. 定义安装媒体
- 定义虚拟机的执行环境。为此虚拟机分配 1GB 内存和一个单一 CPU。这些选择需要一些技巧,因为内存大小应适合您的虚拟机(对于这个特定实例,1GB 有点大材小用)。CPU 可帮助(而且有时候会损害)操作系统。如果操作系统有效利用了多个核心,那么这些核心可分发给虚拟机。
图 5. 定义执行环境
- 定义虚拟机的存储环境。在本例中,请求
virt-manager
创建您的虚拟磁盘(而不是由您自行提供),并动态调整它的大小(最高 1 GB)。请注意,该磁盘选项可能影响安装和执行速度。如果将磁盘指定为动态,它最开始是一个较小的主机文件,然后随着虚拟机对它的使用而扩展。此动态过程需要比较少时间来管理。备用选择是 raw,这是一个具有主机操作系统(虚拟机管理程序)的完整大小的磁盘映像。这里的代价是需要更多主机磁盘空间,但虚拟机的运行速度应该会更快,这是因为不需要动态调整过程。
图 6. 定义存储环境
- 作为最后一步,
virt-manager
提供了该虚拟机目前为止的摘要信息,从而允许您定义网络化选项(选择默认值:网络地址转换 [NAT])。请注意,它还提供了额外的选项和信息,比如虚拟磁盘的物理位置。您也可以定义自己想要的基础处理器的类型。在本例中,选择 AMD i686 作为架构,但也可选择 x86-64。
图 7. 虚拟机的最后检查
- 当单击 Finish 时,启动虚拟机的过程就会开始。它首先引导一个 CD-ROM(您在其中提供了安装映像),这使得虚拟机能够安装该 Linux。当安装完成时,重新启动(这会自动断开 CD-ROM)之后就会得到一个正常运行的虚拟机。请注意,此窗口只提供了虚拟机的视图,并允许您与它交互。您可关闭此窗口,但虚拟机会继续在后台运行(并且可在
virt-manager
root 窗口中看见它)。
3.更改虚拟机网络类型
KVM:在KVM下运行的VM默认的网卡采用NAT的方式进行连接,无法与外界进行通讯,但是可以与同台KVM下的其他VM进行通讯,为了使VM与其他网络主机进行通讯,需要将网卡模式由NAT改为桥接的方式。
网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据
网络规划:
KVM宿主机 CENTOS6.3 IP:10.0.7.211
虚拟机 debian8.71 IP:10.0.7.212
修改宿主机网络文件 ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
UUID="d89a9846-1e07-488a-b1d1-ee8ba9505b55"
HWADDR=78:45:C4:34:07:48
#IPADDR=10.0.7.211
#PREFIX=24
#GATEWAY=10.0.7.254
DNS1=114.114.114.114
BRIDGE=br0
新创建一个网络文件 ifcfg-br0
DEVICE="br0"
BOOTPROTO=static
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Bridge"
UUID="d89a9846-1e07-488a-b1d1-ee8ba9505b55"
HWADDR=78:45:C4:34:07:48
IPADDR=10.0.7.211
PREFIX=24
GATEWAY=10.0.7.254
DNS1=114.114.114.114
DEFROUTE=yes
重启网路……
在宿主机图形管理软件Virtual Machine Manager 中设置虚拟机网卡类型:
进入虚拟机配置网络:
vi /etc/network/interface
# 启动系统激活设备
# Loop回环地址
auto lo
iface lo inet loopback
# 启动系统激活设备
# 网卡eth0设置为Static类型
auto eth0
iface eth0 inet static
# 指定IP地址、子网掩码、网关
address 10.0.7.212
netmask 255.255.255.0
gateway 10.0.7.254
注意,要将NetworkManager这个服务给Stop了,然后重启网络
service NetworkManager stop
update-rc.d NetworkManager remove
Kvm 简介 安装 使用 桥接网络的更多相关文章
- KVM虚拟机安装及桥接网络配置
1.查看CPU是否支持intel或AMD的虚拟技术 cat /proc/cpuinfo | grep -E "vmx|svm" --color --vmx intel的CPU sv ...
- KVM简介,安装及常见使用详解
KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hype ...
- kvm上已安装的虚拟机修改为桥接网络
kvm上安装的虚拟机默认使用的nat网络格式,现在已经调整kvm主机为桥接方式了,但是已经安装的虚拟机还是nat方式,所以需要修改一下 让KVM虚拟主机使用桥接网络br0 修改虚拟机的配置文件,默认存 ...
- 虚拟化KVM之安装(二)
安装KVM虚拟化 1.系统基础环境: [root@linux-node1 ~]# ip addr | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' ...
- 命令行安装kvm虚拟机、桥接网络、用virt-manager管理
宿主机CentOS Linux release 7.2.1511 (Core),内核3.10.0-327.el7.x86_64 1.配置宿主机网络桥接 想让虚拟机有自己的ip且外网可访问,需要在安装虚 ...
- KVM/QEMU桥接网络设置及kvm资料
KVM/QEMU桥接网络设置 配置kvm的网络有2种方法.其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送.其二,使用桥接方式(Brid ...
- kvm简介及创建虚拟化安装(1)
kvm虚拟化介绍 一.虚拟化分类 1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立 ...
- KVM虚拟化(KVM简介和KVM安装)
KVM 虚拟化架构分类 寄居虚拟化架构:指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理. 裸金属虚拟化架构:指直接在硬件上面安装虚拟化软件,再在其上安装操作系 ...
- VirtualBox安装RHEL之后配置桥接网络
VirtualBox安装RHEL之后配置桥接网络 1 如果主机是Intel (R) Ethernet Connection I217-LM上网的: 2 如果主机是无线上网的, 如ipconfig显示如 ...
随机推荐
- Java框架之SpringMVC 04-视图解析-Spring表单-JSON-上传下载
SpringMVC 视图解析 请求处理方法(controller方法)执行完成后,最终返回一个 ModelAndView 对象,即使出现异常也会返回一个 ModelAndView 对象.对于那些返回 ...
- lisp学习有感--对象化,结构化编程思想
Lisp程序员总是在写DSL,为自己设计的应用开发专用语言,减少程序中的组件,模块,在构造大型复杂应用时,这变的特别有效. 为什么要模块化,我们通常为复杂应用设计程序时,为了分工协作,会用面向对象化思 ...
- 关于Hive中case when不准使用子查询的解决方法
在公司用Hive实现个规则的时候,遇到了要查询某个字段是否在另一张表中,大概情况就是 A表: id value1 value2 1 100 0 2 101 1 3 102 1 B表: value1 1 ...
- NOI2.6 8782: 乘积最大
描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好 ...
- 04--Java--使用eclipse创建开发java项目步骤
eclipse创建开发java步骤 1.三种创建java项目 1)方式一:在包资源管理器(package explorer)窗口中鼠标右击任意位置选择New --> Java Project,如 ...
- Servlet梳理
Servlet 梳理 概述 Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础. 要介绍 Servlet 必须要先把 Servlet 容器 ...
- mysql创建流水号
mysql数据库创建流水号 CREATE TRIGGER saledetail_id BEFORE INSERT ON saledetail FOR EACH ROW BEGIN declare n ...
- 深入了解 Java 中的异常处理 + 面试题
# 深入了解 Java 中的异常处理 + 面试题 在程序开发中,异常处理也是我们经常使用到的模块,只是平常很少去深究异常模块的一些知识点.比如,try-catch 处理要遵循的原则是什么,finall ...
- 七、django学习之聚合函数
七.django学习之聚合函数 如何使用 from django.db.models import Avg,Max,Min,Sum models.Book.objects.all().aggregat ...
- 六、Django学习之基于下划线的跨表查询
六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...