Centos7安装kvm服务器

article/2025/11/5 12:03:11

Centos7安装kvm服务器

  • 什么是kvm
    • virt-manager及相关软件简介
      • KVM
      • QEMU
      • Libvirt
  • KVM常用配置文件
    • 查看libvirtd配置文件
      • 查看libvirtd 守护进程的环境变量和参数
    • 查看QEMU虚拟机监控程序配置
  • 0.检查硬件是否支持kvm虚拟化
    • 检查CPU是否支持KVM虚拟化
    • 启动kvm虚拟化内核模块
  • 1.启用嵌套虚拟化(可选)
    • 检查是否启用嵌套虚拟化
      • 热生效嵌套虚拟化(临时启用)
    • 重新加载模块并验证
      • 永久启用嵌套虚拟化功能
    • 虚拟机硬件直通
      • 虚拟机内查看嵌套虚拟化是否成功
  • 2.安装kvm服务器
    • 安装kvm的所有包(不推荐)
    • 关闭防火墙和SELinux
    • 配置开机自动加载内核
    • 启动libvirt服务
    • 查看是否正确设置了虚拟化
    • 设置kvm命令软链接(可选)
    • 查看kvm版本
    • 查看kvm模块
  • 3.创建桥接网卡
  • 3.libvirtd远程管理

什么是kvm

参考: RHEL7部署虚拟化服务器
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/part-deployment
KVMkernel based virtual machine;
意思是基于内核的虚拟机


virt-manager及相关软件简介

virt-manager 是虚拟机管理器(Virtual Machine Manager)应用程序的缩写,也是管理工具的软件包名称。是用于管理虚拟机的图形化的桌面用户接口。其工作流程依赖 libvirt 的 API 实现,能够提供诸如虚拟机生命周期管理,虚拟机CPU,内存,磁盘,网卡,显卡,终端等虚拟资源的管理功能。virsh 是用于管理虚拟化环境中的客户机和 Hypervisor 的命令行工具,与virt-manager 等工具类似,它也是通过 libvirt API 来实现虚拟化的管理。virsh是完全在命令行文本模式下运行的用户态工具,它是系统管理员通过脚本程序实现虚拟化自动部署和管理的理想工具。

virt-manager 架构及原理如下图:
在这里插入图片描述


KVM

KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。它使用 Linux 自身的调度器进行管理,KVM 目前已成为学术界的主流 VMM 之一。 它包含一个为处理器提供底层虚拟化可加载的核心模块kvm.ko。kvm 还需要一个经过修改的 QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。 KVM 的虚拟化需要硬件支持。是基于硬件的完全虚拟化。通过使用 KVM,可以运行多个其本身运行未改动的镜像的虚拟机。


QEMU

QEMU 是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了 QEMU 的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,KVM+QEMU。


Libvirt

libvirt 是对虚拟机进行管理的工具和应用程序接口(API),提供如下功能:

  • 1,它提供统一、稳定、开放的源代码的应用程序接口(API)、守护进程(libvirtd)和和一个默认命令行管理工具(virsh)。
  • 2,它提供了对虚拟化客户机和它的虚拟化设备、网络和存储的管理。
  • 3,它提供了一套较为稳定的 C 语言应用程序接口。目前,在其他一些流行的编程语言中也提供了对 libvirt 的绑定,在 Python、Perl、Java、Ruby、PHP、OCaml 等高级编程语言中已经有 libvirt 的程序库可以直接使用。
  • 4,它对多种不同的 Hypervisor 的支持是通过一种基于驱动程序的架构来实现的。libvirt 对不同的 Hypervisor 提供了不同的驱动,包括Xen 的驱动,对QEMU/KVM 有 QEMU 驱动,VMware 驱动等。
  • 5,它作为中间适配层,让底层 Hypervisor 对上层用户空间的管理工具是可以做到完全透明的,因为 libvirt 屏蔽了底层各种 Hypervisor 的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。

KVM常用配置文件

https://blog.csdn.net/nb_zsy/article/details/107674063

  • /etc/libvirt/storage/*.xml KVM中Storage Pool的定义文件
  • /var/lib/libvirt/images KVM默认查找镜像的地方
  • /var/lib/libvirt/images/ KVM将宿主机的该目录作为默认的Storage Pool
  • /etc/libvirt/libvirtd.conf libvirtd配置文件
  • /etc/libvirt/qemu.conf qemu配置文件

查看libvirtd配置文件

# 查看libvirtd配置文件
grep -Ev "^$|^#" /etc/libvirt/libvirtd.conf
# 支持在线迁移的libvirtd配置示例# 禁用 libvirtd 连接的 TLS 加密
listen_tls = 0# 启用 libvirtd 的 TCP 连接
listen_tcp = 1# 设置 libvirtd 连接的 TCP 端口号
tcp_port = "16509"# 设置 libvirtd 监听的 IP 地址,0.0.0.0 表示监听所有可用 IP 地址。
## 迁移网络可以丢在存储网络或者管理网络
listen_addr = "0.0.0.0"# 设置 libvirtd TCP 连接的认证方式为 "none",即不进行认证。
auth_tcp = "none"

查看libvirtd 守护进程的环境变量和参数

# 查看libvirtd 守护进程的环境变量和参数
grep -Ev "^$|^#" /etc/sysconfig/libvirtd
# 表示libvirtd守护进程在启动时会启用网络监听功能,以便接收来自客户端的请求,并提供虚拟化资源的管理服务。
## LIBVIRTD_ARGS 是一个环境变量,用于指定 libvirtd 守护进程的运行参数。
## "--listen" 是一个参数,表示 libvirtd 守护进程启用网络监听功能,允许客户端通过网络连接到 libvirtd 守护进程,以便管理虚拟机等虚拟化资源。LIBVIRTD_ARGS="--listen"

查看QEMU虚拟机监控程序配置

# 查看QEMU虚拟机监控程序配置
grep -Ev "^$|^#" /etc/libvirt/qemu.conf
# 指定QEMU VNC服务器监听的 IP 地址
## "0.0.0.0" 表示可以从任何网络地址连接到 QEMU VNC 服务器
vnc_listen = "0.0.0.0"# 即以 root 用户身份运行 QEMU 进程。
## user 和 group 分别指定 QEMU 进程运行的用户名和用户组
user = "root"
group = "root"

0.检查硬件是否支持kvm虚拟化

在这里插入图片描述

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-system_requirements-kvm_requirements

检查CPU是否支持KVM虚拟化

# 检查硬件是否支持KVM虚拟化
## -E 正则表达式
## -c 只显示匹配的行数
grep -Ec "vmx|svm" /proc/cpuinfo

说明:回显 0表示不支持>=1表示支持
image.png


启动kvm虚拟化内核模块

# 检查KVM是否安装成功
lsmod | grep kvm

在这里插入图片描述

如果没有出现kvm信息,可以手动加载kvm内核模块

# 手动加载kvm内核模块
modprobe kvm # 手动加载kvm-intel内核模块--仅限英特尔的CPU
## -a 参数表示同时加载指定模块的所有依赖模块
modprobe kvm-intel# 手动加载kvm-amd内核模块--仅限AMD的CPU
## -a 参数表示同时加载指定模块的所有依赖模块
modprobe -a kvm_amd

1.启用嵌套虚拟化(可选)

参考:RHEL7启用嵌套虚拟化


检查是否启用嵌套虚拟化

# 查看CPU品牌
grep -m 1 'model name' /proc/cpuinfo

image.png

# 检查主机系统中是否有嵌套虚拟化可用
cat /sys/module/kvm_intel/parameters/nested## intel_CPU查看是否开启嵌套虚拟化
cat /sys/module/kvm_intel/parameters/nested## AMD_CPU查看是否开启嵌套虚拟化
cat /sys/module/kvm_amd/parameters/nested

0N禁用虚拟化嵌套,1Y开启嵌套虚拟化


热生效嵌套虚拟化(临时启用)

该方法是临时启用,重启后失效
0N禁用虚拟化嵌套,1Y开启嵌套虚拟化

echo "
# intel_CPU临时开启嵌套虚拟化
Y " > /sys/module/kvm_intel/parameters/nestedecho "
# AMD_CPU临时开启嵌套虚拟化
Y " > /sys/module/kvm_amd/parameters/nested

重新加载模块并验证

# 卸载旧的 kvm 内核模块
## intel_CPU内核模块
modprobe -r kvm_intel# AMD_CPU内核模块
modprobe -r kvm_amd# 激活嵌套功能--
## 重新加载iniel_CPU模块
modprobe kvm_intel nested=1## 重新加载AMD_CPU模块
modprobe kvm_amd nested=1# 检查intel_CPU是否启用嵌套虚拟化
cat /sys/module/kvm_intel/parameters/nested# 检查amd_CPU是否启用嵌套虚拟化
cat /sys/module/kvm_amd/parameters/nested# 结果是Y,透传(嵌套虚拟化)功能开启

永久启用嵌套虚拟化功能

# 在系统启动时自动开启kvm嵌套虚拟化内核模块
# 在宿主机创建kvm-nested.conf文件
vim /etc/modprobe.d/kvm-nested.conf

intel_CPU启用嵌套虚拟化配置:

# intel_CPU启用嵌套虚拟化功能
options kvm_intel nested=1
# 启用 kvm-intel 模块的 shadow VMCS 功能
## 以提高虚拟机的性能和安全性。
options kvm-intel enable_shadow_vmcs=1
# 启用 kvm-intel 模块的 APICv 功能
## 以提高虚拟机的性能和稳定性。
options kvm-intel enable_apicv=1
# 启用 kvm-intel 模块的 EPT 功能
## 以提高虚拟机的性能和安全性。
options kvm-intel ept=1

amd_CPU启用嵌套虚拟化配置:

# amd_CPU启用嵌套虚拟化功能
options kvm_amd nested=1

虚拟机硬件直通

host-passthrough直接将物理CPU暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号.
这种方式是CPU性能最好的,也可以适用于有些应用检查CPU某些特性;但是虚拟机不能迁移到不同型号的CPU上

# 修改虚拟机配置
virsh edit Vm-Name

将文件中的 custom 改为 host-passthrough

<!-- host-passthrough:直接将物理CPU暴露给vm实例使用 -->
<cpu mode='host-passthrough'/>

虚拟机内查看嵌套虚拟化是否成功

# 重启vm实例
reboot# 查看vm实例是否成功启用透传成功
lsmod | grep kvm# 查看VM实例是否支持虚拟化
grep vmx /proc/cpuinfo

2.安装kvm服务器

参考: RHEL7安装虚拟化软件包组

组件名称作用及释义
qemu-kvm即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化,才能真正实现服务器虚拟化。
libvirtKVM管理工具,主要是收集虚拟机的监控数据,如cpu,内存等信息,为不同的虚拟机监视器提供了统一的接口。
libvirt-python可通过python方式调用libvirt API来获取虚拟机的监控数据
libguestfs-tools虚拟机镜像管理工具,用来访问和修改虚拟机磁盘镜像
virt-install命令行工具,为KVM创建虚拟机并完成GuestOS安装
virt-clone用于克隆KVM虚拟机
virt-manager使用图形界面管理KVM虚拟环境的主要工具
virt-viewer用于显示虚拟机的图形控制台
bridge-utils配置网桥
  • libvirt的作用:虚拟机的管理软件
  • virt-install的作用: 虚拟机实例安装工具
  • virt-clone的作用:虚拟机克隆工具
  • qemu-kvm的作用: 虚拟机磁盘工具
  • acpid服务的作用:通过这个服务来执行电源关闭的动作
# 安装kvm服务器
yum install -y libvirt virt-install qemu-kvm qemu-kvm-tools# 安装acpid电源管理服务
yum install -y acpid# 安装virt常用工具
yum install -y virt-top

安装kvm的所有包(不推荐)

有些包一时半会用不上。

# 安装kvm虚拟化套件(大约32个包)
yum install virt* -y# 或
yum –y install qemu-kvm qemu-kvm-tools libguestfs libguestfs-tools libvirt libvirt-python virt-install bridge-utils virt-viewer virt-top virt-v2v virt-clone acpid# 安装gui管理器--可选
yum install -y virt-manager

在这里插入图片描述


关闭防火墙和SELinux

## 永久关闭防火墙
systemctl disable --now firewalld
## 注销firewalld服务
systemctl mask firewalld# 关闭SELinux
## 立即临时关闭SELinux
setenforce 0
## 永久关闭SELinux
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
## 查看SELinux永久策略是否关闭
grep 'SELINUX=' /etc/selinux/config

配置开机自动加载内核

https://blog.csdn.net/omaidb/article/details/122718636

# 在启动时自动加载virtio-net.ko
echo virtio-net >/etc/modules-load.d/virtio-net.conf

启动libvirt服务

libvirtd服务启动会设置net.ipv4.ip_forward =1

# 开机自启动libvirt服务并现在启动
systemctl enable --now libvirtd# 为虚拟机提供关闭电源服务
systemctl enable --now acpid.service

查看是否正确设置了虚拟化

# 查看系统虚拟化功能的完整列表
virsh capabilities# 查看是否正确设置了虚拟化
virt-host-validate

image.png


设置kvm命令软链接(可选)

新版本已经自动将qemu-kvm安装到/usr/bin/目录下

# 创建qemu-kvm的软链接,让用户可以直接通过命令行使用
ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

查看kvm版本

https://www.onitroad.com/jc/linux/how-to-check-kvm-qemu-kvm-version-in-linux.html

# 查看kvm版本
yum info qemu-kvm

image.png

# 查看qemu-kvm的版本
qemu-kvm -version

在这里插入图片描述


查看kvm模块

# 查看kvm模块支持
lsmod | grep kvm
## 有下列内容就说明模块正常

在这里插入图片描述


3.创建桥接网卡

KVM服务器装好后默认是NAT模式,想要指定虚拟机网卡为桥接模式,需要先创建桥接网卡.
https://blog.csdn.net/omaidb/article/details/128792834


3.libvirtd远程管理

https://cloud.tencent.com/developer/article/2168916


http://chatgpt.dhexx.cn/article/ZHrhqlsj.shtml

相关文章

稳定的kvm服务器,kvm服务器

kvm服务器 内容精选 换一换 可以。平台近期对磁盘功能进行了升级&#xff0c;对于系统升级后创建的弹性云服务器&#xff0c;系统最多支持挂载60块磁盘。具体如下&#xff1a;创建弹性云服务器时&#xff0c;您可以为弹性云服务器添加24块磁盘。弹性云服务器创建成功后&#xf…

KVM服务器安装

KVM服务器安装 问题 本例要求安装一台可用的KVM服务器&#xff1a; 1)准备一台CentOS6服务器 2)安装虚拟化相关包组 3)启动libvirtd服务 方案 在CentOS6系统中&#xff0c;KVM虚拟化相关的软件组包括四个&#xff1a;虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台&#xf…

KVM架构VPS服务器有哪些优势?

KVM技术是一种允许用户在一台物理机器上运行多个操作系统的系统。使用这种类型的服务器的主要优势是通过在VPS服务器之间分配资源来实现成本效率和性能优势&#xff0c;还可以达到远程软件同时访问的目的。如果用户想要保证客户的数据安全&#xff0c;同时享受更高的正常运行时…

搭建及使用KVM服务

KVM是基于内核的虚拟化服务&#xff0c;是主机能够运行多个隔离虚拟环境&#xff0c;即虚拟客户机或虚拟机&#xff08;VM&#xff09; 一个完整的虚拟化平台&#xff1a;QEMUKVM (QEMU并不是唯一选项) qemu是一个纯软件&#xff0c;本身不包含或依赖KVM。qemu提供硬件虚…

《云计算》lunix中安装一台KVM服务器

安装一台KVM服务器 问题 本例要求安装一台可用的KVM服务器:准备一台CentOS6服务器安装虚拟化相关包组启动libvirtd服务  方案 在CentOS6系统中,KVM虚拟化相关的软件组包括四个:虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台;如果当前环境不支持中文,则对应的软件组分…

调整KVM服务器

2.调整KVM服务器 问题 沿用练习一&#xff0c;通过对KVM服务器做适当调整&#xff0c;为KVM虚拟机的网络访问及磁盘存储提供条件。主要完成以下事项&#xff1a; 1&#xff09;建立隔离网卡virbr1 2&#xff09;建立桥接网卡br0 3&#xff09;建立一个不小于40G的文件系统&am…

基于PHP的图书管理系统(图片详情版)

前言 项目可包部署 Q 1115487855 交流群&#xff1a;758350964(已满) 交流群2&#xff1a;511496356 一 项目介绍 基于AJAXPHP的图书管理系统(图片详情版) 系统分为前后台 管理员可以上传图书图片和图书详情信息(包括作者&#xff0c;出版社&#xff0c;图书简介&#xff0c…

宠物医院管理系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;宠物医院管理系统当然也不能排除在外。宠物医院管理系统是以实际运用为开发背景&#xff0c;运用软件工程开发方法&…

ThinkPHP5旅游管理系统

ThinkPHP5旅游管理系统 一 系统介绍 本旅游管理系统基于ThinkPHP5开发&#xff0c;系统角色分为用户和管理员两种&#xff0c;系统分为前后台&#xff0c;用户可在前台注册登录、发布行程单和游记等&#xff0c;管理员登录后台进行管理。 技术栈 ThinkPHP5mysqlbootstrapjquer…

学校后台管理系统 php,基于ssm的校园门户网站+后台管理系统

校园门户网站系统 功能分析: 本站点分为前台和后台两个管理层面: (1)后台管理系统主要是对网站前台的信息管理,如管理员对社团组织(一个社团一个账号)、教师信息的管理,管理员可以统筹地对其信息进行查询、添加、删除以及修改操作,确保所有的用户信息的完整和安全,也可以…

信息管理系统项目前端界面设计

信息管理系统 1.图书信息管理系统 2.学生信息管理系统 3.课程信息管理系统 4.档案信息管理系统 5.成绩信息管理系统 许多即将毕业的计算机专业学生不知道如何去做用户登录界面&#xff0c;做完简单页面之后又觉得太low了纯文字不够美观&#xff0c;现在我教你一个方法&…

药店管理系统设计方案开发

随着知识经济的发展,我们对信息的要求越来越高,无论在数量还是在速度方面都要求我们对其有深度的了解,而计算机的发展正满足了我们的需求,就企业竞争的日益剧烈而言,对其管理水平也在不断的提高,于是,计算机信息管理就占据了举足轻重的地位。信息时代的到来,我们认识到:…

Java基础数组编写酒店管理系统

文章目录 Java基础数组编写酒店管理系统需求说明&#xff1a;实现代码&#xff1a;①酒店类(Hotel.java)②房间类(Room.java)③酒店管理测试类(HotelMgtSystem.java) 测试结果&#xff1a; Java基础数组编写酒店管理系统 需求说明&#xff1a; 为某个酒店编写程序&#xff1a…

java 小型超市管理系统_基于jsp的小型超市管理系统-JavaEE实现小型超市管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的小型超市管理系统, 该项目可用各类java课程设计大作业中, 小型超市管理系统的系统架构分为前后台两部分, 最终实现在线上进行小型超市管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类小型超市管…

基于python+django框架+Mysql数据库的新闻信息管理系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的新闻管理系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理会员信…

java企业员工管理系统_java企业员工考勤管理系统

本系统前台主要使用JSP作为开发语言&#xff0c;后台使用SqlServer作为数据库管理系统&#xff0c;开发环境是MyEclipse&#xff0c;服务器采用tomcat&#xff0c;开发出的一个基于Web技术的B/S结构的员工考勤管理系统。 通过员工考勤管理系统这个平台&#xff0c;可以实现员工…

ktv收银管理系统服务器,KTV包厢收银管理系统增强版

KTV包厢收银管理系统增强版是一款面向KTV包厢娱乐行业打造的管理软件。KTV包厢收银管理系统增强版界面简洁&#xff0c;操作直观简单易上手&#xff0c;管理人员无需专门培训即可上手使用&#xff0c;可以大大提高娱乐行业门店如练歌房、KTV歌厅等场所的经营管理效率&#xff0…

酒店管理系统需求分析

一、系统概述 1.1背景 随着计算机技术的飞速发展&#xff0c;信息时代的到来&#xff0c;信息改变了我们社会&#xff0c;各类行业在日常经营管理方面也悄悄的走向规范化和网络化&#xff0c;酒店业作为一个前景广阔同时又竞争激烈的行业&#xff0c;它的内容对于经营的决策者…

Java综合实践——酒店前台客房管理系统

设计一个酒店前台客房管理系统包括酒店客房状态的查询&#xff0c;用户的入住、退房等功能。系统命令如下&#xff1a; search all:查询并输出酒店所有客房的状态。 search客房编号&#xff1a;查询该客房状态。 in 客房编号 用户名&#xff1a;用户入住&#xff0c;例如&#…

mysql足球管理系统_java足球俱乐部管理系统

该足球俱乐部管理系统前台主要使用JSP作为开发语言&#xff0c;后台使用MySQL作为数据库管理系统&#xff0c;开发环境是MyEclipse&#xff0c;服务器采用tomcat&#xff0c;bs模式开发出的一个基于Web技术的B/S结构的俱乐部管理系统。 该系统主要解决俱乐部将实行市场化运作&a…