KVM虚拟化环境准备

摘要:
1.概述2.环境准备2.1硬件环境2.2软件环境2.2.1YUM安装包2.2.2环境检查2.2.3启动libvirtd服务2.3网络环境2.3.1复制网卡配置文件2.3.2修改网卡配置文件2.3.4重新启动网络服务2.3.5查看验证1。概述本系列博客旨在在VMware工作站创建的虚拟机控制台中实现KVM虚拟化,并使用KVM虚拟机快速部署测试环境。

1. 概述
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,配置了虚拟化引擎的功能:
KVM虚拟化环境准备第1张

虚拟化InterVT-x和AMD-V是两大处理器厂商提供的硬件虚拟化技术
虚拟化IOMMU,相当于在BIOS中实现的IO接口虚拟化技术,提供给KVM的SRV,以后的博客中探讨

如果console勾选了上述【虚拟化引擎】三个选项,那么可以进入到系统内部,查看cpu信息,确认是否启动了该功能。

console中,执行命令:egrep "vmx|svm" /proc/cpuinfo,有字段输出,证明当前系统的处理器已经支持虚拟化了。

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

上述软件包是在最小化OS下安装,因此在非最小化的OS下安装,可能不需要这么多。将其做出脚本存放在/usr/local/globle/scripts/kvm/install下

具体脚本内容参见包括《虚拟机console全局脚本.md》

涉及到的依赖环境类别主要包括:python,gtk,snmp,ssh,qemu,kvm等

2.2.2 环境检查

此时通过rpm来检查kvm环境,rpm -qa | egrep "kvm|qemu"

执行命令:ls -lrt /dev/kvm 查看到内核接口设备

执行命令: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

配置文件对比图:

KVM虚拟化环境准备第2张

KVM虚拟化环境准备第3张

KVM虚拟化环境准备第4张

KVM虚拟化环境准备第5张

2.3.4 重启网络服务

注意:一定要确认系统已经安装桥接网络环境,执行命令rpm -qa | grep bridge-utils检查。
如果没有安装,执行命令yum -y install bridge-utils && echo "yum bridge-utils OK >> /var/log/yum.log"

上述过程配置完成之后,执行命令service network restart重启网络配置

注:本博客在执行上述命令之后,网络断开连接。原因是最小化安装的OS里,没有安装网络桥接的环境,YUM安装bridge-utils即可。具体修复见博客《Error【0003】:配置桥接网络报错.md

2.3.5 查看验证

通过上述的部署之后,可以执行命令:brctl 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虚拟化环境准备》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLPfire workflow总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux的log日志功能

# cd /etc/init.d # ./syslog restart Shutting down kernel logger: OK ]Shutting down system logger: OK ]Starting system logger: OK ]Starting kernel logger: OK ] 不过最好查询清楚是为什么不能写入linu...

(转)linux 内存管理——内核的shmall 和shmmax 参数

内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。SHMMIN= 最小的内存segment的大小 SHMMNI= 整个系统的内存segment的总个数 SHMSEG= 每个进程可以使用的内存segment的最大个数配置信号灯( semphor...

EMQ X 规则引擎系列(十四)- 桥接消息到 Pulsar

Pulsar 消息系统介绍 Apache Pulsar 是一个企业级的发布订阅(pub-sub)消息系统,Pulsar 旨在取代 Apache Kafka 多年的主宰地位。Pulsar 在很多情况下提供了比 Kafka 更快的吞吐量和更低的延迟,并为开发人员提供了一组兼容的 API。 Pulsar 将高性能的流和灵活的传统队列结合到一个统一的消息模型和 A...

深入理解JVM3

VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途、创建和销毁时间。根据《Java虚拟机规范(第二版)》的规定,JVM包括下列几个运行时数据区域: 1.程序计数器(Program Counter Register): 每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令,对于非Native...

expect入门--自动化linux交互式命令

很多linux程序比如passwd,ftp,scp,ssh等自身并没有提供一种静默式的执行选项,而是依赖于运行时的终端输入来进行后一步的操作比如更改密码、文件上传、下载等。虽然有些编程语言如java嵌入了不少这些常用工具的API比如jcsh等,但是毕竟他们不够自然和顺手。虽然也可以使用ssh免登陆方式,但当机器太多且密码可能经常会更改的时候,每次大批量修改...

Java OOM 常见情况

Java OOM 常见情况 原文:https://blog.csdn.net/qq_42447950/article/details/81435080  1)什么是OOM?  OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when t...