avatar

瓜生花子八宝粥

少壮不努力 老了看浏览器

  • 首页
  • 开源项目
  • Linux
  • Windows
  • Docker
  • 中间件
  • 数据库
主页 Linux KVM 环境部署
文章

Linux KVM 环境部署

发表于 2024-12-4 更新于 2024-12- 4
作者 jepwei
27~35 分钟 阅读

KVM 环境配置指南

本文旨在为 Linux 运维工程师提供在 CentOS 系统上配置 KVM 虚拟化环境的详细步骤。通过优化配置,您可以提升系统性能、增强安全性,并高效管理虚拟机。

目录

  1. 准备工作
    • 1.1 禁用 SELinux
    • 1.2 停用防火墙和网络管理器
    • 1.3 检查虚拟化支持
    • 1.4 启用 IP 转发
    • 1.5 安装必要的软件包
  2. 启动 KVM
    • 2.1 启动并配置 libvirtd
  3. 配置网络桥接
    • 3.1 复制网络配置文件
    • 3.2 编辑 ifcfg-enp2s0
    • 3.3 编辑 ifcfg-br0
    • 3.4 重启网络服务
    • 3.5 验证网络配置
  4. 创建虚拟机
    • 4.1 创建虚拟磁盘
    • 4.2 使用 virt-install 创建虚拟机
    • 4.3 创建 Windows 虚拟机
  5. 总结

1. 准备工作

在开始配置 KVM 之前,需要进行一些基础设置,以确保系统环境适合虚拟化。

1.1 禁用 SELinux

SELinux 的强制访问控制可能会干扰 KVM 的正常运行。为了避免潜在的问题,建议暂时禁用 SELinux。

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0

注意:禁用 SELinux 会降低系统的安全性。完成 KVM 配置后,您可以根据需要重新启用并配置 SELinux 策略。

1.2 停用防火墙和网络管理器

为了简化网络配置,暂时停止并禁用防火墙和 NetworkManager 服务。

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager

警告:停用防火墙会暴露系统于潜在的网络威胁。建议在完成配置后,根据实际需求重新配置防火墙。

1.3 检查虚拟化支持

确认 CPU 是否支持虚拟化技术(Intel VT-x 或 AMD-V)。

egrep '(vmx|svm)' --color=always /proc/cpuinfo
  • 有输出:表示支持虚拟化。
  • 无输出:需要在服务器的 BIOS 设置中启用虚拟化支持。

1.4 启用 IP 转发

启用 IP 转发以支持虚拟机的网络通信。

sudo sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sudo sysctl -p

1.5 安装必要的软件包

安装 KVM 及其相关工具包。

sudo yum -y install libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v virt-install libguestfs-tools

说明:

  • libvirt:虚拟化管理工具。
  • bridge-utils:网络桥接工具。
  • virt-manager:图形化虚拟机管理工具。
  • 其他工具包用于虚拟机创建和管理。

2. 启动 KVM

2.1 启动并配置 libvirtd

启动 libvirtd 服务并创建必要的符号链接。

sudo systemctl restart libvirtd
sudo ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
sudo virsh list --all
  • virsh list --all:列出所有虚拟机状态,确保 libvirtd 正常运行。

3. 配置网络桥接

配置网络桥接以允许虚拟机通过宿主机访问外部网络。

3.1 复制网络配置文件

进入网络配置目录并复制现有的网络接口配置文件。

cd /etc/sysconfig/network-scripts/
sudo cp ifcfg-enp2s0 ifcfg-br0

注意:ifcfg-enp2s0 文件名可能因系统不同而有所变化。请根据实际情况选择正确的网络接口配置文件。同时,需要生成新的 UUID。

3.2 编辑 ifcfg-enp2s0

修改原始网络接口配置文件,使其作为桥接接口的一部分。

sudo vim ifcfg-enp2s0

修改内容如下:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0"
NM_CONTROLLED="no"
UUID="随机生成的UUID1"
DEVICE="eth0"
ONBOOT="yes"
BRIDGE="br0"

说明:

  • 将 NM_CONTROLLED 设置为 no,以防止 NetworkManager 管理该接口。
  • UUID 应该是唯一的,可使用 uuidgen 生成。

3.3 编辑 ifcfg-br0

配置新的桥接接口。

sudo vim ifcfg-br0

修改内容如下:

TYPE="Bridge"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
NM_CONTROLLED="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="br0"
UUID="随机生成的UUID2"
DEVICE="br0"
ONBOOT="yes"
IPADDR=192.168.248.60
NETMASK=255.255.255.0
GATEWAY=192.168.248.1
DNS1=8.8.8.8
DNS2=1.1.1.1

说明:

  • IPADDR、NETMASK、GATEWAY、DNS1 和 DNS2 应根据实际网络环境进行调整。
  • UUID 应是唯一的。

3.4 重启网络服务

应用网络配置更改。

sudo /etc/init.d/network restart

3.5 验证网络配置

确认桥接网络配置是否正确。

ip a
brctl show
  • ip a:查看网络接口和 IP 地址。
  • brctl show:查看桥接接口状态。

4. 创建虚拟机

4.1 创建虚拟磁盘

使用 qemu-img 创建虚拟磁盘镜像。

qemu-img create -f qcow2 centos7-test01.qcow2 15G

说明:

  • -f qcow2:指定磁盘格式为 QCOW2,支持快照和动态扩展。
  • 15G:设置磁盘大小为 15GB。

4.2 使用 virt-install 创建虚拟机

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

示例命令:

virt-install \
  --name=centos7_example_192.168.1.100 \
  --vcpu=32 \
  --ram=131072 \
  --disk path=/home/kvm_imgs/centos7_example_192.168.1.100.qcow2,format=qcow2,bus=virtio \
  --cdrom=/opt/CentOS-7-x86_64-DVD.iso \
  --noautoconsole \
  --vnc \
  --vnclisten=0.0.0.0 \
  --network bridge=br0,model=virtio \
  --network bridge=br1,model=virtio \
  --vncport=5910
virt-install \
  --name=centos7_example_192.168.1.100 \
  --vcpu=32 \
  --ram=131072 \
  --disk path=/home/kvm_imgs/centos7_example_192.168.1.100.qcow2,format=qcow2,bus=virtio \
  --boot=hd \
  --noautoconsole \
  --vnc \
  --vnclisten=0.0.0.0 \
  --network bridge=br0,model=virtio \
  --network bridge=br1,model=virtio \
  --vncport=5910

参数说明:

  • --name:虚拟机名称。
  • --vcpu:分配的虚拟 CPU 数量。
  • --ram:分配的内存大小(单位:MB)。
  • --disk:虚拟磁盘路径及参数。
  • --cdrom:安装镜像路径。
  • --noautoconsole:不自动连接到控制台。
  • --vnc:启用 VNC 访问。
  • --vnclisten:VNC 监听地址。
  • --network:网络桥接配置。
  • --vncport:指定 VNC 端口。

优化建议:

  • 根据宿主机资源合理分配 CPU 和内存,避免资源过载。
  • 确保 VNC 端口未被其他服务占用。

4.3 创建 Windows 虚拟机

为 Windows 虚拟机配置必要的驱动(如 VirtIO 驱动)。

示例命令:

virt-install \
  --name=win7_example_192.168.67.203 \
  --vcpu=16 \
  --ram=8192 \
  --disk path=/home/kvm_imgs/win7_example_192.168.67.203.qcow2,format=qcow2,bus=virtio,cache=none \
  --cdrom=/opt/windows7_ultimate_dvd.iso \
  --disk /opt/virtio-win.iso,device=floppy \
  --network bridge=br0,model=virtio \
  --vnc \
  --vncport=5903 \
  --vnclisten=0.0.0.0 \
  --noautoconsole \
  --os-type=windows \
  --os-variant=win7 \
  --graphics vnc,listen=0.0.0.0

说明:

  • --disk /opt/virtio-win.iso,device=floppy:加载 VirtIO 驱动 ISO,以便在 Windows 安装过程中加载驱动。
  • --os-type 和 --os-variant:指定操作系统类型和版本,以优化虚拟硬件配置。
  • 确保 virtio-win.iso 路径正确,并根据需要下载最新版本的 VirtIO 驱动。

优化建议:

  • 为 Windows 虚拟机分配适当的资源,避免过度配置。
  • 使用 VirtIO 驱动提升虚拟硬盘和网络性能。

5. 总结

通过以上步骤,您已经在 CentOS 系统上成功配置了 KVM 虚拟化环境,并创建了 Linux 和 Windows 虚拟机。以下是一些建议以进一步优化和维护您的虚拟化环境:

  • 安全性:

    • 重新启用并配置防火墙,确保虚拟机与外界的安全通信。
    • 配置 SELinux 策略,增强系统安全性。
  • 性能优化:

    • 根据实际负载调整虚拟机资源分配。
    • 使用 VirtIO 驱动提升虚拟硬件性能。
  • 备份与恢复:

    • 定期备份虚拟机配置和数据,以防数据丢失。
    • 使用快照功能快速恢复虚拟机到特定状态。
  • 监控与管理:

    • 利用 virt-manager 或其他管理工具监控虚拟机性能。
    • 自动化管理任务,如虚拟机启动、停止和资源分配。

通过持续优化和管理,您可以确保虚拟化环境的高效运行,满足业务需求。


注意事项:

  1. 敏感信息处理:本文中的 IP 地址(如 192.168.1.100 和 192.168.67.203)已替换为示例地址。请根据实际网络环境进行调整,避免使用真实的敏感信息。

  2. 系统兼容性:本文基于 CentOS 系统编写,若在其他 Linux 发行版上操作,部分命令和配置路径可能有所不同,请根据实际情况调整。

  3. 资源管理:确保宿主机有足够的资源(CPU、内存、存储)支持虚拟机的运行,避免资源争用影响系统稳定性。

  4. 版本更新:虚拟化技术和工具不断更新,建议定期检查并升级相关软件包,以获取最新的功能和安全补丁。


希望本指南能帮助您顺利配置和管理 KVM 虚拟化环境。如有疑问或需要进一步的帮助,请参考官方文档或社区资源。

Linux
Linux
许可协议: 
分享

相关文章

7月 16, 2025

ubuntu 设置时间显示为24小时制

对ubuntu默认的时间显示格式不太满意,查阅了相关资料进行修改为24小时制度,特此记录和分享给需要设置的网友 查看当前的timezone root@jumpserver:~# timedatectl Local time: Sat 2024-03-23 12:45:5

6月 10, 2025

KVM 虚拟机创建模板

查看--os-type支持的参数 osinfo-query os # 列出所有已知操作系统 win7 virt-install --name=win7_zpcl_ip --vcpu=8,sockets=1,cores=8,threads=1 --ram=16384 --disk path=/home

1月 15, 2025

cpu 内存占用脚本

本文介绍了两个版本的Linux压力测试脚本,分别用于CPU和内存的压力测试。CPU压力测试脚本通过无限循环创建指定数量的进程以占用CPU资源;内存压力测试脚本则通过创建临时内存块来模拟内存占用,支持指定大小和停止运行。用户需根据用法说明参数执行脚本。该文档适合需要进行性能测试的Linux用户。

下一篇

Nginx 限制地区访问

上一篇

Linux KVM qemu文件版本转换

最近更新

  • 1panel 部署
  • jumpserver 堡垒机部署
  • ubuntu 设置时间显示为24小时制
  • pritunl vpn 部署
  • dockovpn 部署

热门标签

nacos openvpnas 资源分享 docker oracle mysql ubuntu 开源项目 虚拟化 Linux

目录

©2025 瓜生花子八宝粥. 保留部分权利。

使用 Halo 主题 Chirpy