OpenEuler 中配置 KVM 虚拟化环境指南

简介: 本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。

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等
相关文章
|
4天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
6天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1549 7
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
9天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
637 25
|
6天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
208 3
|
1天前
|
Java 开发者
【编程进阶知识】《Java 文件复制魔法:FileReader/FileWriter 的奇妙之旅》
本文深入探讨了如何使用 Java 中的 FileReader 和 FileWriter 进行文件复制操作,包括按字符和字符数组复制。通过详细讲解、代码示例和流程图,帮助读者掌握这一重要技能,提升 Java 编程能力。适合初学者和进阶开发者阅读。
99 60
|
12天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
607 5
|
12天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
vue3+Ts 二次封装ElementUI form表单
【10月更文挑战第8天】
106 56
|
25天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。