CentOS 7.1下KVM的安装与配置

Stella981
• 阅读 712

由于没有物理机可用,在自己的VMware Workation中CentOS 7搭建完成。

首先查看VMware Workation是否支持虚拟化,把红框内打钩即可。

CentOS 7.1下KVM的安装与配置

虚拟化开启并安装CentOS系统,建议CentOS安装64bit。我的环境用的是CentOS 7。进入系统,首先查看服务器版本以及是否支持虚拟化,可以使用如下命令:

###查看系统版本# cat /etc/RedHat-release 
CentOS Linux release 7.1.1503 (Core)###查看服务器是否支持虚拟化# cat /proc/cpuinfo |grep vmxflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid

###出现该信息证明服务器支持虚拟化

安装kvm以及需要的依赖包,使用如下命令。

# yum install -y qemu-kvm qemu-key-tools virt-manager libvirt virt-install   python-virtinst bridge-utils

以上安装完毕后,我们检测KVM模块是否安装,可以使用如下命令:

# lsmod |grep kvm
kvm_intel             148081  0 
kvm                   461126  1 kvm_intel###证明kvm模块已安装成功

kvm,只是Linux内核的一个模块,不需要安装,只需要加载。加载命令如下

# modprobe kvm
# modprobe kvm_intel

也可以如下加载KVM模块,可以使用如下命令:

# virsh -c qemu:///system list       ###此命令需要重启服务器后使用,否则会报错
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory# reboot# virsh -c qemu:///system listId    Name                           State----------------------------------------------------   ###证明kvm安装成功

以上是KVM的安装。下面我们开始来配置KVM并安装一个虚拟机。

因为虚拟机中网络,我们一般都是和公司的其他服务器是同一个网段,所以我们需要把KVM服务器的网卡配置成桥接模式。这样的话KVM的虚拟机就可以通过该桥接网卡和公司内部分其他服务器处于同一网段。

有关网卡的桥接模式,查找相关资料如下:

其实我们在虚拟机搭建的时候,我们最终关心的网卡是: eth0, br0, vnet0,vnet1…

其中eth0是我们服务器原来的物理网卡,而br0是我们虚拟出来的网桥设备,而vnetXXX就是桥接映射到虚拟机里面用到的网卡。

当配置完毕之后,我们使用ifconfig命令查看起来的话,会发现eth0是没有IP地址,而br0仿佛是虚拟出来的一个原来eth0的访问接口,它具有IP地址,可以代替原来的eth0被访问。

而vnetXX的地址可以在建立虚拟机之后在虚拟机里面配置,桥接后可以被外部访问。

注意:将已有的物理网卡添加到网桥,此时物理网卡eth0工作于混杂模式,所以不需要IP地址,因为网桥是工作在链路层的。br0就提供了IP地址,用来模拟原来的物理网卡的访问接口.

关于混杂模式:

根据以太网的原理,包是在整个子网里面广播发送的,当网卡发现这个数据帧不是发给自己的也不是广播包的时候,就直接把它丢掉,而不传送到上层内核去处理;

而当网卡处于混杂模式的时候,网卡就不会丢掉帧,而是全部向上提交到内核,让内核处理这些帧结构。通常的,混杂模式使用来进行网络调试的,不是正常的工作状态。

配置桥接网卡,我们可以通过现在服务器的网卡eth0来配置。把eth0网卡的配置文件复制一份并命令为br0,可以通过如下命令进行。

编辑网卡:

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0# vim /etc/sysconfig/network-scripts/ifcfg-br0
  TYPE=Bridge
  DEVICE=br0
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=static
  IPADDR=10.0.0.90
  GATEWAY=10.0.0.2
  NETMASK=255.255.255.0
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  BRIDGE=br0  ONBOOT=yes  TYPE=Ethernet

重启网卡使之生效。

# systemctl restart network.service

开启转发功能并修改ulimit参数

# echo 1 > /proc/sys/net/ipv4/ip_forward
# /bin/echo "* soft nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* soft nofile 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nofile 65500" >>/etc/security/limits.conf

创建ISO镜像:

# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso

创建虚拟机硬盘:

# qemu-img create -f qcow2 /kvmdir/test.img 4G

创建虚拟机:

# virt-install --name Centos --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1.iso --disk path=/kvmdir/test.img  --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

Starting install...
Creating domain...                                                                                                                                                         |    0 B  00:00:07     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

各参数说明:

--name Centos                    ###虚拟机名字
--virt-type kvm                  ###虚拟机类型
--ram 1024                       ###虚拟机内存
--cdrom=/opt/CentOS-7.1.iso      ###镜像地址
--disk path=/kvmdir/test.img     ###虚拟机安装位置
--network=default                ###默认网络配置
--graphics vnc,listen=0.0.0.0    ###监听所有IP
--vcpus 5                        ###可以使用cpu个数
--vcpus 5,maxcpus=10             ###可以使用5颗cpu,最大支持10颗cpu

打开VNC客户端,输入本机ip:5900(第一个默认就是5900,第二个是5901,以此类推),可连接到所通过vmvare创建的kvm虚拟机上,然后就是安装Centos7的过程。

CentOS 7.1下KVM的安装与配置

CentOS 7.1下KVM的安装与配置

 

到此,KVM虚拟机安装完成。

CentOS7.2部署KVM虚拟机  http://www.linuxidc.com/Linux/2017-01/140007.htm

Linux入门学习教程:虚拟机体验之KVM篇  http://www.linuxidc.com/Linux/2015-03/114462.htm 

KVM 虚拟机在物理主机之间迁移的实现  http://www.linuxidc.com/Linux/2017-03/141274.htm

CentOS6.5部署KVM及实现在线迁移  http://www.linuxidc.com/Linux/2017-03/141273.htm

CentOS 7.2下KVM虚拟化配置以及常用操作  http://www.linuxidc.com/Linux/2017-02/140372.htm

KVM虚拟化平台部署  http://www.linuxidc.com/Linux/2016-10/136164.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-05/143901.htm

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这