KVM虚拟化环境准备
2. 环境准备
2.1 硬件环境
2.2 软件环境
2.2.1 YUM安装软件包
2.2.2 环境检查
2.2.3 启动libvirtd服务
2.3 网络环境
2.3.1 复制网卡配置文件
2.3.2 修改网卡配置文件
2.3.4 重启网络服务
2.3.5 查看验证
1. 概述
本系列博客是想在VMware workstation创建的虚拟机console中,开启KVM虚拟化,使用kvm虚拟机快速部署测试环境。
注:有关虚拟化的理论部分,参照博客《》,有关KVM的理论部分,参照博客《》
2. 环境准备
2.1 硬件环境
VMware workstation提供了虚拟机的创建平台。同时也提供了为这些虚拟机的CPU和IO管理虚拟化的功能。
如下图,就为虚拟机console的CPU,配置了虚拟化引擎的功能:

虚拟化InterVT-x和AMD-V是两大处理器厂商提供的硬件虚拟化技术
虚拟化IOMMU,相当于在BIOS中实现的IO接口虚拟化技术,提供给KVM的SRV,以后的博客中探讨
如果console勾选了上述【虚拟化引擎】三个选项,那么可以进入到系统内部,查看cpu信息,确认是否启动了该功能。
console中,执行命令:egrep "vmx|svm",有字段输出,证明当前系统的处理器已经支持虚拟化了。
2.2 软件环境
2.1内容中,kvm宿主OS(操作系统)的处理器能够支持虚拟化,但是OS中需要kvm虚拟化的软件环境,方可进行虚拟机的部署
本博客中,由于最小化安装,定制软件包时,并没有定制虚拟化的部分,因此需要采用YUM进行KVM环境部署。
首先查看系统中,有没有安装kvm软件包,执行rpm -qa | grep kvm,无输出表示未安装。
2.2.1 YUM安装软件包
1. 安装内核支持:yum -y install qemu-kvm qemu-kvm-tools qemu-img gpxe-roms-qemu qemu-guest-agent
2. 安装用户层图形界面工具:yum -y install virt-manager virt-viewer virt-top virt-what
3. 安装用户层命令行工具:yum -y install python-virtinst
4. 安装API管理工具:yum -y install libvirt libvirt-client libvirt-python libvirt-snmp
建议首次安装时,采用:yum -y install xxx && echo OK >>/var/log/yum.log的方式,观察各个软件包的依赖环境
安装qemu-kvm时,同时安装了gpxe-roms-qemu,qemu-img和其他依赖软件包
安装libvirt时,安装的依赖软件包比较多,包含了libvirt-client;安装libvirt-snmp时,包含了net-snmp-libs依赖包
安装virt-manager时,安装的依赖包也很多,主要是图像库
安装virt-viewer时,安装了openssh-clients库
总结:
yum -y install qemu-kvm qemu-kvm-tools qemu-guest-agent virt-manager virt-viewer virt-top virt-what python-virtinst libvirt libvirt-python libvirt-snmp
涉及到的依赖环境类别主要包括:python,gtk,snmp,ssh,qemu,kvm等
2.2.2 环境检查
此时通过rpm来检查kvm环境,rpm -qa | egrep "kvm|qemu"
执行命令:service libvirtd status,看到libvirtd服务是未运行的
2.2.3 启动libvirtd服务
执行命令:service libvirtd start,会存在报错
warning : virGetHostname:2294 : getaddrinfo failed for 'console': 未知的名称或服务
这是因为libvirtd不能在/etc/hosts中找到和console对应的地址。
执行命令:echo "127.0.0.0 console" >> /etc/hosts,然后service libvirtd restart,发现提示已经没有了
上述过程已经说明,kvm宿主机console已经具备了初步的部署kvm虚拟机的环境。
2.3 网络环境
kvm虚拟机当然是可以像VMware workstation一样使用的,作为一款应用级别的软件,来创建多种虚拟化的操作系统。但是KVM更多地是应用在一种生产环境中,作为拥有足够计算资源的物理机的替代,实现安全隔离或者更加快捷的管理。因此这样的应用场景,就需要KVM虚拟机能够桥接在物理网络中,和物理机处于同一个网络级别,来屏蔽网络差异性。所以,需要在宿主机配置桥接网络。console的桥接网络配置过程,可参考如下。
2.3.1 复制网卡配置文件
console在配置时,分配了两块NIC,一块是配置了MAC地址00:00:00:80:00:08接入NAT网络的NIC,一块是配置了MAC为00:00:00:10:00:08接入仅主机模式网络的NIC。
在console的OS中,接入NAT网络的网卡eth0的配置名称为:/etc/sysconfig/network-scripts/ifcfg-eth0,另外一块则为/etc/sysconfig/network-scripts/ifcfg-eth1。
很显然,要对这两块网卡操作。
进入目录,cd /etc/sysconfig/network-scripts/
复制配置文件:cp ifcfg-eth0 ifcfg-br0 && cp ifcfg-eth1 ifcfg-br1
桥接网卡的配置很简单,只需要保持ethx的物理信息,保持brx的网络信息即可
所谓的物理信息,即UUID,HWADDR这些;而网络信息,即IPADDR,PREFIX,NEWMASK,GATEWAY,DNS这些
2.3.2 修改网卡配置文件
【ifcfg-eth0】内容如下:
DEVICE=eth0
TYPE=Ethernet
UUID=20fa03bd-212f-4554-bf24-0ae23c1f8661
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:00:00:80:00:08
NAME=eth0
BRIDGE=br0
上述内容中,删掉的内容
IPADDR=192.168.80.8
PREFIX=24
GATEWAY=192.168.80.2
DNS1=192.168.80.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
修改的内容为:BOOTPROTO=none。实际上这个参数可以不用修改,保持为none。
【ifcfg-br0】配置内容如下:
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.80.8
PREFIX=24
GATEWAY=192.168.80.2
DNS1=192.168.80.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=br0
上述内容中,删掉的内容:
UUID=20fa03bd-212f-4554-bf24-0ae23c1f8661
HWADDR=00:00:00:80:00:08
修改的内容为:BOOTPROTO=static,TYPE=Bridge,NAME=br0
依照上述操作,对第二块网卡,做同样的操作。
【ifcfg-eth1】配置内容如下:
DEVICE=eth1
TYPE=Ethernet
UUID=ae99988a-c675-4ca5-93e5-2080b72c64be
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:00:00:10:00:08
BRIDGE=br1
NAME=eth1
【ifcfg-br1]配置内容如下:
DEVICE=br1
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.8
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=br1
2.3.4 重启网络服务
上述过程配置完成之后,执行命令service network restart重启网络配置
注:本博客在执行上述命令之后,网络断开连接。原因是最小化安装的OS里,没有安装网络桥接的环境,YUM安装bridge-utils即可。具体修复见博客《Error【0003】:配置桥接网络报错.md》
2.3.5 查看验证
通过上述的部署之后,可以执行命令:btctl show ,查看当前环境中桥接网络。
bridge name bridge id STP enabled interfaces
br0 8000.000000800008 no eth0
br1 8000.000000100008 no eth1
virbr0 8000.525400df5102 yes virbr0-nic
virbr0,为libvirtd提供的NAT网络,这个在实际的生产环境中不使用,可以删除。具体删除方式参见博客《》
KVM虚拟化环境准备的更多相关文章
- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装
平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...
- kvm虚拟化环境的搭建
首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...
- kvm虚拟化环境中的时区设置
guest OS时间保持 kvm技术是全虚拟化,guest OS并不需要做修改就可以直接运行,然而在计时方面却存在问题,guest OS计时的一种方式是通过时钟中断计数,进而换算得到,但host产生的 ...
- KVM虚拟化环境安装随笔
1. KVM由来 KVM:Kernel-based Virtual Machine 2.软件说明 libvirt 作用:虚拟机的管理软件 virt virt-install virt-clone ...
- <Mastering KVM Virtualization>:第三章 搭建独立的KVM虚拟化
在第二章,你了解了KVM的内部结构:在本章中,您将了解如何将Linux服务器设置为虚拟化主机.我们正在讨论将KVM用于虚拟化并将libvirt作为虚拟化管理引擎. KVM开启了虚拟化并利用你的服务器或 ...
- kvm虚拟化关闭虚拟网卡virbr0的方法
我们知道:kvm虚拟化环境安装好后,ifconfig会发现多了一个虚拟网卡virbr0这是由于安装和启用了libvirt服务后生成的,libvirt在服务器(host)上生成一个 virtual ne ...
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)
公司机房有一台2U的服务器(64G内存,32核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限.所以打算在这台2U服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM ...
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(0)
打算部署kvm虚拟机环境,下面是虚拟化部署前的一些准备工作: 操作系统环境安装1)修改内核模式为兼容内核启动[root@ops ~]# uname -aLinux openstack 2.6.32-4 ...
- 【原】【BG】-一次虚拟化环境实践简要记录
部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...
随机推荐
- 学习MQ(二)基本概念
学习MQ(二)基本概念 这次简单罗列一下MQ的基本概念,还有我对它们的理解 1.queue manager 队列管理器,这是MQ系统中最上层的一个概念.每一个queue manager都有一个侦听器, ...
- Spring3 MVC使用@ResponseBody的乱码问题及解决办法
近日用Spring3的MVC写东西,深感其之于Webwork/Struts2的便利,但是在通过@ResponseBody这个annotation输出一个json字符串的时候,发现页面上获得的json字 ...
- Linux的eth0,eth1,eth2,lo详解
eth0,eth1,eth2……代表网卡一,网卡二,网卡三……lo代表127.0.0.1,即localhost 参考:Linux命令:ifconfig 功能说明:显示或设置网络设备 语 法:ifcon ...
- Activiti初学问题,求解
<userTask id="writeReportTask" name="Write monthly financial report" > < ...
- async/await 的基本实现和 .NET Core 2.1 中相关性能提升
前言 这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话. 在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 ...
- ArcEngine小问题解决
最近开始使用VS2012,在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示. 找到解决方案:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为F ...
- 使用MongoDB存储集合的一些问题
这两天在工作中被Mongo集合存储给整得头大,当然也是我的认知太浅,所以下面我来分享下我所遇到的这个问题希望有大佬能给出更好的解决方案, 1.需求: 存储一个从前端接收未知数据类型的集合 例: 由于是 ...
- 智能指针auto_ptr & shared_ptr
转载:智能指针auto_ptr 很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它.这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生 ...
- ORACLE 数据库选择性导出表中数据&导入已存在表数据
在dos界面下选择性导出表中的数据语句为: exp his/linker@orcl tables=(sysreprot) file="D:\20131218.dmp" query= ...
- vue中keep-alive的用法
1.keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-al ...