0x00 前言
随着云计算和虚拟化技术的迅猛发展,KVM(Kernel-based Virtual Machine)作为一种高效的虚拟化解决方案,越来越受到企业和开发者的青睐。OpenEuler 作为一个开源操作系统,旨在为用户提供稳定、安全的运行环境,其内置的 KVM 支持使得用户能够轻松构建和管理虚拟机,从而实现资源的灵活分配和高效利用。
本指南旨在为读者提供一个详细的步骤说明,帮助大家在 OpenEuler 系统中配置 KVM 虚拟化环境。无论您是初学者还是有一定经验的用户,这份指南都将涵盖从环境准备、安装到虚拟机管理的各个方面,确保您能够顺利地搭建并管理自己的虚拟化平台。
通过本指南,您将学习到:
- KVM 的基本概念和优势
- OpenEuler 的环境准备与安装
- KVM 的配置与管理
- 常见问题的解决方案
希望本指南能够帮助您在虚拟化的旅程中迈出坚实的一步,为您的项目带来更多的灵活性与高效性。
0x01 桥接网卡
首先我们需要先配置一个桥接网卡用于我们的电脑宿主机访问该系统里KVM虚拟化主机
#进入网络脚本路径 cd /etc/sysconfig/network-scripts/ #创建一个桥接网卡 nmcli c a con-name br0 ifname br0 type bridge #将ens33的连接修改为从属连接 nmcli c modify 'ens33' connection.slave-type bridge master br0 然后配置需要的静态ip,对网桥网卡进行配置,配置完nmcli c r,再分别nmcli c up 本地网卡,nmcli c up br0
0x02 安装组件
最低硬件需求
在openEuler系统中安装虚拟化组件,最低硬件要求:
- AArch64处理器架构:ARMv8以上并且支持虚拟化扩展
- x86_64处理器架构:支持VT-x
- 2核CPU
- 4GB的内存
- 16GB可用磁盘空间
这里首先需要配置好yum源
安装必要的组件
yum install -y qemu libvirt virt-install systemctl start libvirtd systemctl enable libvirtd
检查是否安装成功
rpm -qi qemu rpm -qi libvirt
KVM模块已经集成在openEuler内核中,因此不需要单独安装。
传输镜像到机器上
0x03 安装虚拟机
virt-install \ --name oepneuler-1 \ --video vga \ --memory 1024 \ --vcpus 1 \ --disk size=20 \ --cdrom /kvm/openEuler.iso \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0,port=5900 \ --noautoconsole #如果提示磁盘大小报错,virsh pool-list --all 检查磁盘大小没问题后使用 --check disk_size=off # 关闭磁盘大小检查 #一键复制版 virt-install --name oepneuler-1 --video vga --memory 1024 --vcpus 1 --disk size=20 --cdrom /kvm/openEuler.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole
virt-install --name vm01 \ --video virtio \ --memory 2048 \ --vcpus 2 \ --disk size=110 \ --cdrom /kvm/openeuler.iso \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0,port=5900 \ --noautoconsole \ --check all=off
参数解释
● --name oepneuler-1: ○ 设置虚拟机的名称为 oepneuler-1。 ● --video vga: ○ 指定虚拟机的显卡类型为 vga。这通常用于图形界面操作。 ● --memory 1024: ○ 分配 1024 MB(即 1 GB)的内存给虚拟机。 ● --vcpus 1: ○ 为虚拟机分配 1 个虚拟 CPU。 ● --disk size=20: ○ 创建一个大小为 20 GB 的虚拟磁盘。默认情况下,磁盘类型为 qcow2(可扩展的磁盘格式)。 ● --cdrom /kvm/openEuler.iso: ○ 指定一个 ISO 文件作为虚拟机的安装介质。在这个示例中,使用的是位于 /kvm/ 目录下的 openEuler.iso。 ● --network bridge=br0: ○ 让虚拟机通过 br0 网络桥接连接到主机的网络。这允许虚拟机与外部网络通信。 ● --graphics vnc,listen=0.0.0.0,port=5900: ○ 配置虚拟机的图形输出使用 VNC 协议。listen=0.0.0.0 表示 VNC 服务器将监听所有可用的网络接口,port=5900 指定 VNC 服务器使用的端口号。 ● --noautoconsole: ○ 不自动打开控制台。这意味着在虚拟机启动后,你不会被自动连接到 VNC 会话,而是需要手动连接。
ss -anltp 可以看到监听端口
通过vnc软件连接上 我这里用remmina进行连接
测试桥接网卡成功生效成功与外部机器进行连接
0x04 虚拟机管理命令
virsh是用于管理虚拟机的命令行工具,提供了一系列命令来创建、启动、停止和管理虚拟机。以下是一些常用的 virsh命令及其功能:
管理
virsh list --all # 列出所有虚拟机及其状态 virsh start vm-01 # 启动虚拟机 vm-01 virsh shutdown vm-01 # 优雅地关闭虚拟机 vm-01 virsh destroy vm-01 # 强制停止虚拟机 vm-01(相当于断电) virsh reboot vm-01 # 重启虚拟机 vm-01 virsh dominfo vm-01 # 显示虚拟机 vm-01 的详细信息 virsh dumpxml vm-01 # 查看虚拟机 vm-01 的 XML 配置 virsh define vm-01.xml # 根据 XML 文件定义新的虚拟机 virsh undefine vm-01 # 删除虚拟机 vm-01 的定义 virsh suspend vm-01 # 暂停虚拟机 vm-01 virsh resume vm-01 # 恢复虚拟机 vm-01 virsh console vm-01 # 连接到虚拟机 vm-01 的控制台 virsh start vm-01 --autostart # 设置虚拟机 vm-01 为开机自启动 virsh list # 列出正在运行的虚拟机
快照
virsh snapshot-create vm-01 #为vm-01虚拟机创建快照 virsh snapshot-create-as vm-01 snap-test #创建快照的同时,指定快照名称snap-test qemu-img snapshot -1 /kvm/os/vm-01.qcow2 #查看快照 virsh snapshot-list vm-01 #查看快照 virsh snapshot-revert vm-01 snap-test #恢复虚拟机至快照状态 virsh snapshot-delete vm-01 snap-test #删除指定快照 virsh snapshot-current vm-01 #删除当前快照(即最近一个快照) virsh snapshot-delete vm-01 --current #同上
克隆
virt-clone -o vm-01 -n vm-02 -f/kvm/os/vm-02.qcow2 virsh start vm-02 #启动虚拟机后,修改hostname,ip等