《从 0 到 1 搭建 CentOS 9 KVM 虚拟化环境:常见难题,都将迎刃而解,助你轻松驾驭虚拟化环境》

《探秘 CentOS 9 安装 KVM:开启高效虚拟化之旅》

在数字化转型的时代巨轮下,虚拟化技术已成为企业与开发者优化资源利用、提升效能的核心驱动力。你是否曾思索,如何在 CentOS 9 系统中搭建起 KVM 虚拟化环境,进而实现资源的灵活编排与高效流转?现在,就让我们一步步深入探索 CentOS 9 安装 KVM 的全过程,为你揭开这一技术的神秘面纱。完成部署后,虚拟机 IP、主机名以及密码的修改等常见难题,都将迎刃而解,助你轻松驾驭虚拟化环境,释放技术潜能。

一、硬件环境准备

1. 服务器要求
  • CPU:支持Intel VT-x/AMD-V(grep -E '(vmx|svm)' /proc/cpuinfo验证)
  • 内存:建议物理内存≥64GB(根据虚拟机需求线性扩展)
  • 存储:建议RAID 10 SSD阵列,或NVMe SSD(IOPS≥50k)
  • 网卡:建议双万兆网卡(bonding做高可用)
2. BIOS设置
  • 开启CPU虚拟化支持
  • 禁用Secure Boot(避免驱动兼容问题)
  • 启用SR-IOV(若需硬件直通)

验证CPU是否支持虚拟化

grep -cE '(vmx|svm)' /proc/cpuinfo
# 如果得到大于0的数说明支持虚拟化

二、宿主机系统配置

1. 关闭Selinux和防火墙

Selinux(Security - Enhanced Linux)是 Linux 系统的安全增强模块,而防火墙可能会对 KVM 的网络通信造成干扰。因此,在安装 KVM 之前,需要将它们关闭。

# 关闭Selinux
setenforce 0&&getenforce && sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
# 防火墙
systemctl stop firewalld.service && systemctl disable firewalld.service
2.安装 epel 软件源

epel(Extra Packages for Enterprise Linux)是由 Fedora 社区提供的一个软件源,包含了许多额外的软件包,为 KVM 的安装提供了必要的支持。

yum install -y epel-release
yum clean all && yum makecache 
dnf install virt-install libvirt-daemon-kvm qemu-kvm -y
  • virt-install:这是一个用于创建和管理虚拟机的强大命令行工具,通过它可以方便地创建、启动、停止虚拟机等。
  • libvirt-daemon-kvm:KVM 虚拟化的守护进程,负责管理 KVM 虚拟机的运行。
  • qemu-kvm:基于 QEMU 的 KVM 虚拟机管理程序,为虚拟机提供硬件模拟和虚拟化支持。
3. 启动并设置开机自启 libvirtd 服务

安装完成后,需要启动libvirtd服务,并将其设置为开机自启,以确保系统重启后 KVM 服务能正常运行。

systemctl start libvirtd && systemctl enable libvirtd
4. 验证 KVM 模块是否加载

使用以下命令检查 KVM 模块是否已成功加载:

lsmod | grep kvm

如果输出包含kvmkvm_intel(Intel CPU)或kvm_amd(AMD CPU),则表示KVM模块已成功加载;否则,可能需要检查内核配置或重新安装KVM。

三、内核参数优化

通过优化内核参数,可以进一步提升 KVM 的性能和稳定性。

# /etc/sysctl.conf
cat >> /etc/sysctl.conf << EOF
vm.swappiness = 10
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
net.ipv4.ip_forward = 1
EOF
sysctl -p

四、网络设置

1.桥接网络配置

桥接网络可以让虚拟机与宿主机处于同一网络中,方便进行网络通信和管理。

systemctl start NetworkManager && systemctl enable NetworkManager
# 安装netplan
dnf install systemd-networkd netplan -y

编辑一下网桥配置文件

cat > /etc/netplan/bridge-config.yaml << EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
      dhcp4: no
  bridges:
    br0:
      interfaces: [ens160]  # 多网卡可以用“,”号分开
      dhcp4: no
      addresses: [192.168.10.10/24]  # 设置静态IP地址和子网掩码
      gateway4: 192.168.10.2         # 设置网关地址(如果需要)
      nameservers:                 # 设置DNS服务器(如果需要)
        addresses: [233.5.5.5, 192.168.10.2]
EOF

执行netplan apply让网桥生效。这里可能需要一些时间,有时甚至要重启系统才能看到br0网桥。

netplan apply &
2.SR-IOV直通(可选)

当需要将物理网卡的部分功能直接透传给虚拟机时,可以启用 SR - IOV。

# 启用SR-IOV , enp5s0f0 是你自己的网卡
echo 4 > /sys/class/net/enp5s0f0/device/sriov_numvfs
# 验证VF
lspci | grep Virtual

五、虚拟机部署

1.下载Cloud镜像

Cloud 镜像经过了优化,并安装了上云所需的工具,使用起来更加方便。

cd /root
wget https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2
2.定制化配置

安装cloud - localds,它可以帮助我们创建包含用户数据和元数据的 ISO 镜像。

# 安装编译依赖
dnf install -y git make
#  克隆代码仓库
git clone https://github.com/canonical/cloud-utils.git
# 编译并安装
cd cloud-utils
make && make install

显示下面的内容,没有报错,说明cloud - localds安装完成。
如果你 git 不到 cloud-utils 可以到我的资源去下载。
https://download.youkuaiyun.com/download/sido777/90426990

echo manpages=cloud-localds.1 growpart.1 resize-part-image.1 write-mime-multipart.1
manpages=cloud-localds.1 growpart.1 resize-part-image.1 write-mime-multipart.1
mkdir -p "/usr/bin" "/usr/share/doc/cloud-utils" "/usr/share/man/man1"
cd bin && install cloud-localds ec2metadata growpart mount-image-callback resize-part-image vcs-run write-mime-multipart "/usr/bin"
cd man && install cloud-localds.1 growpart.1 resize-part-image.1 write-mime-multipart.1 "/usr/share/man/man1/" --mode=0644
3.创建用户数据文件

用户数据文件通常是一个 YAML 格式的文件,用于在实例启动时执行自定义脚本或配置系统。user - data.yaml

cat > /mnt/user-data.yaml << EOF
#cloud-config
users:
  - name: admin
    passwd: 123456
    lock_passwd: false
    groups: [sudo]
    shell: /bin/bash
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_pwauth: True
chpasswd:
  list: |
    root:123456
  expire: false

ssh_pwauth: true

runcmd:
  - sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
  - sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
  - systemctl restart sshd
EOF
4.创建元数据文件(可选)

元数据文件包含了实例的一些基本信息,如实例 ID、主机名等。以下是一个简单的示例meta - data.yaml

cat > /mnt/meta-data.yaml << EOF
instance-id: my-id321a6d4f
local-hostname: Vm-Cos9
EOF
5.网络设置

此文件用于配置云实例的网络设置,不同的云环境和网络模式配置方式有所不同,network - config.yaml

静态 IP地址配置,可参考如下示例:

cat > /mnt/network-config.yaml << EOF
version: 2
ethernets:
  eth0:
    dhcp4: no
    addresses:
      - 192.168.10.100/24
    gateway4: 192.168.10.2
    nameservers:
      addresses:
        - 233.5.5.5
        - 8.8.8.8
EOF
  • version: 2:表明使用的是 NetworkManager 版本 2 的网络配置格式。
  • ethernets:定义以太网接口的配置。
  • eth0:指定要配置的网络接口名称。
  • addresses:设置静态 IP 地址及其子网掩码。
  • gateway4:设置 IPv4 网关地址。
  • nameservers:设置 DNS 服务器地址。

DHCP 配置

若使用 DHCP 自动获取 IP 地址,配置如下:

version: 2
ethernets:
  eth0:
    dhcp4: true

这里 dhcp4: true 表示启用 IPv4 的 DHCP 功能。

6.创建 ISO 镜像

使用 cloud-localds 命令创建包含用户数据和元数据的 ISO 镜像:

cloud-localds --network-config /mnt/network-config.yaml /mnt/config.iso /mnt/user-data.yaml /mnt/meta-data.yaml

六、启动 KVM 实例

# 创建虚拟机目录
mkdir -p /var/lib/libvirt/images/centos9
# 把刚下载的镜像复制到虚拟机目录,命名为centos9.qcow2
cp /root/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2 /var/lib/libvirt/images/centos9/centos9.qcow2
# 复制定制 ISO 镜像到虚拟机目录。
cp /mnt/config.iso /var/lib/libvirt/images/centos9

启到 KVM 虚拟机

virt-install \
  --name centos9 \
  --boot cdrom,hd,menu=on \
  --ram 2048 \
  --vcpus 2 \
  --os-variant=centos8 \
  --disk /var/lib/libvirt/images/centos9/centos9.qcow2 \
  --disk /var/lib/libvirt/images/centos9/config.iso,device=cdrom \
  --network bridge=br0,model=virtio \
  --graphics vnc,port=5901,listen=0.0.0.0 \
  --console pty,target_type=serial \
  --noautoconsole

显示下面的提示,虚拟机启动成功。

Starting install...
Creating domain...                                                                    |         00:00:00
Domain creation completed.

查看一下虚拟机

[root@COS-9 ~]# virsh list --all
 Id   Name      State
-------------------------
 1    centos9   running

ping 一下之前定制的 IP :192.168.10.100

[root@COS-9 ~]# ping 192.168.10.100
PING 192.168.10.100 (192.168.10.100) 56(84) bytes of data.
64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.843 ms
64 bytes from 192.168.10.100: icmp_seq=2 ttl=64 time=0.387 ms
64 bytes from 192.168.10.100: icmp_seq=3 ttl=64 time=0.431 ms
64 bytes from 192.168.10.100: icmp_seq=4 ttl=64 time=0.625 ms
64 bytes from 192.168.10.100: icmp_seq=5 ttl=64 time=0.845 ms
^C
--- 192.168.10.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4083ms
rtt min/avg/max/mdev = 0.387/0.626/0.845/0.195 ms

ssh 到虚拟机看看。ssh root@192.168.10.100

[root@COS-9 ~]# ssh root@192.168.10.100
The authenticity of host '192.168.10.100 (192.168.10.100)' can't be established.
ED25519 key fingerprint is SHA256:ujA3iRkhYLU9S91VyGJ6DeBsauCHxKaK6aVt7HUiS4Y.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.100' (ED25519) to the list of known hosts.
root@192.168.10.100's password:
Activate the web console with: systemctl enable --now cockpit.socket

[root@Vm-Cos9 ~]# ip a | grep "inet " 
    inet 127.0.0.1/8 scope host lo
    inet 192.168.10.100/24 brd 192.168.10.255 scope global noprefixroute eth0
[root@Vm-Cos9 ~]#

七、监控

性能监控

# 安装perf工具
yum install perf -y
# 采集虚拟机性能数据
perf kvm --host --guest record -a

使用 perf report 查看综合分析报告

perf report 是最常用的查看 perf 记录数据的命令,它会以交互式界面的形式展示性能分析结果。

perf report -i perf.data.kvm

通过以上详细步骤,我们成功在 CentOS 9 系统中完成了 KVM 虚拟化环境的搭建,并创建和启动了一个 KVM 虚拟机。在这个过程中,我们从硬件环境准备开始,精心配置宿主机系统,优化内核参数,设置网络环境,部署虚拟机,并最终启动 KVM 实例。每一个步骤都紧密相连,缺一不可,共同构建了一个高效、稳定、安全的虚拟化环境。希望本文能够帮助你顺利搭建自己的 KVM 虚拟化环境,开启虚拟化的高效之旅。同时,随着虚拟化技术的不断发展,我们还可以进一步探索更多的功能和应用场景,为企业和个人的数字化转型提供更强大的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值