前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >物理机搭建KVM并与局域网互访(保姆级教程)

物理机搭建KVM并与局域网互访(保姆级教程)

作者头像
互联网-小阿宇
发布2022-11-21 21:13:26
1.8K0
发布2022-11-21 21:13:26
举报
文章被收录于专栏:互联网-小阿宇互联网-小阿宇

物理机搭建KVM并与局域网互访

★KVM简介

1、KVM概述

  • 以色列qumranet公司研发,后被RedHad公司收购

(1)kvm只支持x86平台 (2)依赖于 HVM,inter VT AMD-v

  • KVM是(Kernel-based Virtual Machine)的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。
  • KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。

工作原理

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。 但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

在这里插入图片描述
在这里插入图片描述

2、KVM的核心组件:

(1)、 kvm.ko内核模块 (kvm.ko)/dev/kvm:工作为hypervisor,在用户空间可通过系统调用ioctl()与内核中的kvm模块交互,从而完成虚拟机的创建、启动、停止、删除等各种管理功能; (2)、 qemu-kvm:用户空间的工具程序 qemu-kvm进程:工作于用户空间,用于实现IO设备模拟;用于实现一个虚拟机实例; (3)libvirt:工具箱用于与主流操作系统虚拟化进行交互工具

  • libvirt是cs架构应用:
  • 客户端:libvirt-client

virt-manager

  • daemon:图像化工具

libvirt-deaemon

3、KVM运行模式

KVM模块load进内存之后,系统的运行模式:

  • 内核模式:GuestOS执行IO类的操作时,或其它的特殊指令操作时的模式;它也被称为“Guest-Kernel”模式;
  • 用户模式:Host OS的用户空间,用于代为GuestOS发出IO请求;
  • 来宾模式:GuestOS的用户模式;所有的非IO类请求;

4、KSM机制

扫描物理内存,发现多个虚拟机实例有相同的内存空间,合并成为一个共享内存空间,节省内存。

5、kvm工具集:

在这里插入图片描述
在这里插入图片描述
  • qemu工具

qemu-kvm:用户空间的工具程序,创建管理虚拟机

qemu-img:是 QEMU 的磁盘管理工具

  • libvirt工具

GUI:virt-manager, virt-viewer:图形化管理 CLI: virsh, virt-install:创建管理虚拟机

  • 集群工具:

libvirtd:管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。Libvirt是一个C工具包的虚拟化功能与最新版本的Linux(以及其他操作系统)。主包包含libvirtd服务器虚拟化支持出口。

★ 安装步骤

  • 此次物理机配置

运行内存

磁盘空间

操作系统

32G

2块4T(RAID1阵列)

linux-centos7(桌面版)

1.查看系统版本

代码语言:javascript
复制
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

2.检查是否开启虚拟化。有VMX或者svm

代码语言:javascript
复制
[root@localhost ~]# cat /proc/cpuinfo | egrep 'vmx|svm'

如果返回无数据则无法搭建,虚拟机安装请参考点击 物理机的话安装系统的时候弄桌面版 虚拟机和物理机都建议弄桌面 也方便KVM工具操作

在这里插入图片描述
在这里插入图片描述

3.查看是否加载kvm

代码语言:javascript
复制
[root@localhost ~]# lsmod | grep kvm
kvm_intel             183621  4 
kvm                   586948  1 kvm_intel
irqbypass              13503  3 kvm

没有任何输出即为报错

4.安装kvm相关的软件包

代码语言:javascript
复制
[root@localhost ~]# yum -y install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer

5.修改配置文件 添加一些优化参数

代码语言:javascript
复制
vi /etc/sysctl.conf
#末尾添加
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_nonlocal_bind = 1

为了防止报错

代码语言:javascript
复制
net.bridge.bridge-nf-call-ip6tables = 0  找不到
net.bridge.bridge-nf-call-iptables = 0  找不到
net.bridge.bridge-nf-call-arptables = 0  找不到

临时添加模块

代码语言:javascript
复制
modprobe br_netfilter
modprobe  ip_vs_rr

开机自动加载模块

代码语言:javascript
复制
cat > /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
EOF

cat > /etc/sysconfig/modules/br_netfilter.modules << EOF
modprobe br_netfilter
EOF

chmod 755 /etc/sysconfig/modules/br_netfilter.modules
lsmod |grep br_netfilter

使配置文件生效

代码语言:javascript
复制
sysctl -p

6.修改宿主机网络为桥接 如果不设置桥接,后面创建出来的虚拟机不能与局域网内的主机互访 记得把配置文件备份一份 有的默认网卡名叫ens33,有的叫eth0,都可以无所谓

代码语言:javascript
复制
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-em1 /root/ifcfg-em1_backup

再复制出来一份文件叫br0,一会作为桥接网卡

代码语言:javascript
复制
[root@localhost network-scripts]# cp ifcfg-em1 ifcfg-br0

修改配置文件如下:

代码语言:javascript
复制
vi /etc/sysconfig/network-scripts/ifcfg-em1
#文件内容如下:
TYPE=Ethernet
NAME=em1
UUID=b8730dd7-4855-401c-8ad3-5c009969089c    #UUID用自己机器默认的
DEVICE=em1
ONBOOT=yes
BRIDGE=br0   #这个br0是桥接网卡
#文件内容只需要有以上几个就行,其他的都删除或者注释,否则后面会报错

修改桥接网卡

代码语言:javascript
复制
vi /etc/sysconfig/network-scripts/ifcfg-br0
#文件内容如下
TYPE=Bridge                 #桥接
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_AUTOCONF=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
BOOTPROTO=static          #静态IP
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.166      #根据自己使用的网络进行设置
NETMASK=255.255.255.0     #根据自己使用的网络进行设置
GATEWAY=192.168.1.1       #根据自己使用的网络进行设置
DNS1=8.8.8.8              #设置一下DNS要不不能上网
DNS2=114.114.114.114
#文件内容只需要有以上几个就行,其他的都删除或者注释,否则后面会报错

重启网络并重启主机

代码语言:javascript
复制
systemctl restart network
网络重启之后建议把主机也重启一下
reboot

开机以后可以看一下自己的网络是不是配置成功

代码语言:javascript
复制
ip a
在这里插入图片描述
在这里插入图片描述

7.启动

代码语言:javascript
复制
[root@localhost ~]# systemctl start libvirtd

8.进入图形华界面

代码语言:javascript
复制
[root@localhost ~]# virt-manager
在这里插入图片描述
在这里插入图片描述

9.主机导入镜像 位置自定义

在这里插入图片描述
在这里插入图片描述

10.开始创建KVM虚拟机 点击文件,新建虚拟机。

在这里插入图片描述
在这里插入图片描述

本地安装介质,前进!

在这里插入图片描述
在这里插入图片描述

后面我现在没截图 有机会我会完善文章 后面都是图形化操作比较简单

  • 选择镜像
  • 配置运行内存,cpu
  • 配置磁盘空间这个注意一下(这个是根据自己物理机磁盘空间分布情况而定) 默认的位置应该是/var/lib/libvirt,显示我只有50G可用 但是我的4T内存挂载到/home,我想从4T中分给他们用 在选择的时候自己根据目录创建一个卷就行了
  • 设置网络的时候选择桥接网络 (只有使用桥接网络才可以达到与局域网其他主机互访) 应该是桥接br0主机em1

后面就可以启动虚拟机一系列进行系统设置了

虚拟机创建成功以后需要做的

设置一下网络,修改固定ip、添加DNS可以上网 修改文件

代码语言:javascript
复制
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#我下面只写出需要修改或添加的位置:
BOOTPROTO=static  #修改  
ONBOOT=yes        #修改
#尾部添加 根据自己网络设置
IPADDR=192.168.1.167
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=144.144.144.144

修改好之后重启网络
systemctl restart network

验证: 在虚拟机上试试能不能上网

在这里插入图片描述
在这里插入图片描述

用同局域网内的主机是否能ping通

在这里插入图片描述
在这里插入图片描述

成功

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 物理机搭建KVM并与局域网互访
  • ★KVM简介
    • 1、KVM概述
      • 工作原理
        • 2、KVM的核心组件:
          • 3、KVM运行模式
            • 4、KSM机制
              • 5、kvm工具集:
              • ★ 安装步骤
                • 虚拟机创建成功以后需要做的
                相关产品与服务
                专用宿主机
                专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档