一、准备工作

1. 检查硬件虚拟化支持

KVM 要求处理器支持硬件虚拟化技术:Intel VT-x(虚拟化技术扩展)或 AMD-V(虚拟化技术扩展)。

检查方法:

  1. 使用以下命令检查 CPU 是否支持虚拟化:

    egrep '(vmx|svm)' /proc/cpuinfo
    • 输出含有 vmx 的为 Intel 处理器支持虚拟化

    • 输出含有 svm 的为 AMD 处理器支持虚拟化

    注意:如果没有输出,可能需要进入 BIOS 并启用虚拟化技术(Intel VT-x 或 AMD-V)。

2. 更新系统

在安装软件包之前,先确保 RHEL 9 系统是最新的。

sudo dnf update -y

二、安装 KVM 和虚拟化工具

在 RHEL 9 中,虚拟化软件包可以通过软件组来安装,包含 KVM 核心组件和其他工具。

1. 安装 KVM 和相关组件

运行以下命令安装 KVM、libvirt(虚拟机管理工具)、virt-install(命令行安装虚拟机工具)和 virt-manager(图形界面虚拟机管理工具)。

sudo dnf install -y @virtualization
sudo dnf install -y virt-install virt-manager libvirt libvirt-devel qemu-kvm

安装包解释:

  • @virtualization:安装虚拟化相关软件组

  • virt-install:命令行工具,用于创建虚拟机

  • virt-manager:图形化界面管理虚拟机的工具

  • libvirt:虚拟机管理工具,提供服务管理 KVM

  • libvirt-devel:用于开发的库

  • qemu-kvm:QEMU(Quick Emulator)是 KVM 的默认虚拟机管理程序(Hypervisor)


三、启动和配置 KVM 服务

1. 启动 libvirtd 服务

libvirt 是 KVM 的核心服务,负责管理虚拟机的生命周期。

sudo systemctl enable --now libvirtd
  • enable:设置开机自启

  • --now:立即启动服务

你可以用以下命令检查服务是否正在运行:

sudo systemctl status libvirtd

2. 加入 libvirt 组(可选)

为了简化操作,将当前用户加入 libvirt 组,这样无需使用 sudo 就能管理虚拟机。

sudo usermod -aG libvirt $(whoami)
newgrp libvirt

3. 验证 KVM 内核模块是否加载

验证 KVM 内核模块(kernel module)是否正确加载:

sudo lsmod | grep kvm

输出中应该有类似如下的内容:

kvm_intel             32768  0
kvm                   90112  1 kvm_intel

其中:

  • kvm_intel 表示这是 Intel 的虚拟化模块

  • 对于 AMD 的处理器,则是 kvm_amd

如果没有看到相应模块,说明 KVM 模块未加载,可以手动加载:

sudo modprobe kvm

四、网络配置(可选,桥接网络)

虚拟机默认通过 NAT 网络访问外部网络。如果希望虚拟机能作为局域网中的独立主机,使用桥接网络会更合适。

1. 安装桥接工具

sudo dnf install -y bridge-utils

2. 创建桥接网络

首先创建一个新的网桥接口。你可以修改现有的网络连接,或者添加新的桥接。

使用 NetworkManager 创建桥接:

  1. 打开 /etc/NetworkManager/system-connections/ 目录,并找到现有的网络连接配置文件(文件名格式类似于 eno1.nmconnection)。

  2. 编辑该文件,将 type 设置为 bridge

[connection]
id=bridge0
type=bridge
interface-name=br0

[bridge]
stp=false
  1. 重启 NetworkManager:

sudo systemctl restart NetworkManager
  1. 配置完成后,可以使用 ip addrnmcli 命令查看网桥是否创建成功。


五、创建虚拟机

可以使用命令行工具 virt-install 或图形化工具 virt-manager 来创建和管理虚拟机。

1. 使用命令行工具 virt-install 创建虚拟机

假设有一个 RHEL 9 的 ISO 镜像文件在 /var/lib/libvirt/images/rhel-9.iso,并希望创建一台虚拟机。

sudo virt-install \
--name=rhel-vm \
--ram=4096 \
--vcpus=4 \
--os-type=linux \
--os-variant=rhel9.0 \
--cdrom=/var/lib/libvirt/images/rhel-9.iso \
--network bridge=br0 \
--disk path=/var/lib/libvirt/images/rhel-vm.qcow2,size=20 \
--graphics=none \
--console pty,target_type=serial

参数解释:

  • --name=rhel-vm:虚拟机名称

  • --ram=4096:分配 4GB 内存

  • --vcpus=4:分配 4 个虚拟 CPU 核心

  • --os-type=linux:操作系统类型

  • --os-variant=rhel9.0:指定 RHEL 9 版本

  • --cdrom=/path/to/iso:指定 ISO 镜像

  • --network bridge=br0:使用 br0 网桥网络

  • --disk path=/path/to/disk,size=20:指定虚拟硬盘位置及大小(20GB)

  • --graphics=none:无图形化界面(使用命令行安装)

  • --console pty,target_type=serial:使用串行终端

2. 使用图形化工具 virt-manager

  1. 在终端中运行 virt-manager

    sudo virt-manager
  2. 通过图形化界面创建虚拟机,步骤包括:

    • 选择 本地安装媒体

    • 指定 ISO 镜像文件。

    • 分配内存和 CPU。

    • 配置虚拟硬盘大小和位置。

    • 选择网络类型(默认 NAT,或者桥接网桥)。


六、虚拟机的管理

1. 使用 virsh 管理虚拟机

virsh 是 libvirt 提供的命令行工具,用于管理虚拟机的生命周期。

查看虚拟机状态:

sudo virsh list --all

启动虚拟机:

sudo virsh start rhel-vm

关闭虚拟机:

sudo virsh shutdown rhel-vm

强制停止虚拟机:

sudo virsh destroy rhel-vm

删除虚拟机:

sudo virsh undefine rhel-vm

设置虚拟机开机自动启动:

sudo virsh autostart rhel-vm

七、其他常见问题与解决方案

1. KVM 无法启动虚拟机?

  • 检查 libvirtd 服务是否正常运行:

    sudo systemctl status libvirtd
  • 确认 CPU 是否支持虚拟化,并且虚拟化技术在 BIOS 中启用。

2. 图形界面无法使用?

  • 确保安装了 virt-manager,并正确启动 X11 会话(远程服务器可能需要 X forwarding 配置)。

3. 网络无法连通?

  • 检查网络设置,特别是桥接网络的配置,确保虚拟机使用正确的桥接接口。

基于RHEL 9 搭建 KVM 虚拟化环境的更多相关文章

  1. kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

    平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...

  2. 配置基于Devstack的嵌套KVM虚拟化

    本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...

  3. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  4. kvm虚拟化环境的搭建

    首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...

  5. CentosX64使用yum快速搭建xen虚拟化环境

    Xen的大名想必已经被众SA所熟知.Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达100个满特征的操作系统.操作系统必须进行显式地修改(“移植”)以在Xen上运行( ...

  6. 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 修改 ...

  7. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  8. [转] 基于Gitlab CI搭建持续集成环境

    [From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...

  9. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  10. 基于ARM64的Qemu/KVM学习环境搭建

    作者:pengdonglin137@163.com 在没有aarch64架构的开发板的情况下,可以使用Qemu来模拟一个支持KVM的AArch64位的host,然后再在其上运行一个开启KVM加速的Qe ...

随机推荐

  1. CF301B Yaroslav and Time 题解

    CF301B 这不最短路的板子题吗? 思路 用 \(ak\) 代表走到第 \(k\) 点时的可恢复单位时间的值. \(i\) 到 \(j\) 的距离是 \(\left ( \left | xi-xj ...

  2. php 开发规范

    ===========================框架========================= · 使用laravel框架,原因:tp的框架路由和orm没有laravel好用 · 使用强 ...

  3. 新项目加入mybatisplus,我给自己挖了个坑 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 上述问题的解决办法:1首先看看@mapp ...

  4. SSL/TLS 深入浅出

    SSL,https(HTTP over SSL), X.509, SSL 证书 ,证书申请 /导入/签发, 等名词,想必有一定工作经验的小伙伴,一定都会略有耳闻,或者至少也听神边大神念叨过.虽然司空见 ...

  5. RPA美团外卖商家中心批量发送消息

    美团外卖商家中心批量发送消息,首先我们需要确定给谁发,发送什么内容 给谁发:可以传入美团用户名.美团订单号.美团将通过此条件进行搜索进入会话框 发送什么内容:批量发送信息给不同的用户,比如给不同的订单 ...

  6. 【SpringBoot】02 概述

    [目标] - 什么是SpringBoot? 并不是新技术,只是一个Spring的加强 解脱XML配置,增加了新的注解,但是并不是新的内容 - 新型配置文件技术 YAML - 自动装配原理[了解即可,不 ...

  7. 计算机领域:学术写作中的conducive的含义表示

    "Conducive" 的意思是"有助于"或"有益于".在学术和正式的写作中,"conducive" 常用于描述某种情况 ...

  8. 【开启报名】同学看过来,Apache DolphinScheduler开源之夏课题任务正式发布!

    如果你还拥有着一张有效的"学生证",在这个充满机遇的夏天,我们诚邀你加入一个充满挑战和机遇的开源冒险--开源之夏. 这不仅是一个简单的编程开发活动,假如你成功参加并结项之后,还能获 ...

  9. CF1992场题解

    Only Pluses 算法:数学. 题意简述:有三个数,每次选择一个数 \(x\),使得 \(x\) 增加一,至多操作 \(5\) 次,最后求出这三个数的乘积最大值. 简单题,一眼秒了.考虑把这 \ ...

  10. 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)

    本章开始补充一些基础的图形绘制,比如绘制:直线.曲线.圆/椭形.矩形.这一章主要分享一下本示例是如何开始绘制一个图形的,并以绘制圆/椭形为实现目标. 请大家动动小手,给我一个免费的 Star 吧~ 大 ...