探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践
随着云计算和虚拟化技术的不断进步,虚拟化在管理服务器、隔离资源以及提升性能方面的好处越来越明显。麒麟操作系统Kylin OS是我们国家自己开发的操作系统,在政府机构和企业中用得很多。这篇文章会教你如何在麒麟操作系统上设置QEMU-KVM虚拟化环境,让你能够更有效地管理和分开不同的操作系统及应用程序。

什么是QEMU-KVM虚拟化?
QEMU-KVM是基于QEMU(Quick Emulator)和 KVM(Kernel-based Virtual Machine)技术的虚拟化平台。QEMU负责虚拟化硬件资源的模拟,而KVM是Linux内核提供的硬件加速虚拟化技术。结合这两者,可以在一台物理主机上高效地运行多个虚拟机,每个虚拟机都有独立的操作系统和资源。

部署虚拟化
安装qemu-kvm及其依赖包。运行以下命令:
sudo yum install -y qemu-kvm libvirt virt-install bridge-utils
qemu-kvm:KVM虚拟化的核心组件。libvirt:用于管理虚拟机的库。virt-install:用于通过命令行创建虚拟机的工具。bridge-utils:用于网络桥接配置的工具。
启动libvirt服务
虚拟化管理工具libvirt需要启动并设置为开机自动启动。运行以下命令:
systemctl start libvirtd
systemctl enable libvirtd
创建虚拟机
创建虚拟机主要有两种方法:一种是用传统的办法,通过安装系统镜像来设置;另一种是使用云镜像,就是用已经配置好的模板来快速生成多台一样的虚拟机。
传统方式
在传统虚拟化方式下,虚拟机的创建通常是基于一个操作系统的安装镜像文件(ISO 文件)。通过安装过程,虚拟机会从该镜像文件中引导系统安装程序,进而完成操作系统的安装与配置。
准备系统镜像
首先,您需要准备一个操作系统的ISO镜像文件。例如,您可以使用麒麟操作系统的安装镜像,也可以使用其他Linux发行版如Ubuntu、CentOS等的镜像文件。
创建一个虚拟磁盘,相当于我们的系统盘。
qemu-img create -f qcow2 /home/kylin-vm.qcow2 20G
创建虚拟机
可以使用 virt-install 命令来创建虚拟机,并指定 ISO 镜像作为引导源。
例如,以下命令将在麒麟操作系统上创建一台名为kylin-vm 的虚拟机,使用麒麟操作系统的安装镜像进行安装:
sudo virt-install \
--name kylin-vm \
--vcpus 2 \
--memory 4096 \
--cdrom /home/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso \
--disk path=/home/kylin-vm.qcow2,size=20 \
--os-type linux \
--os-variant rhel7 \
--network network=default \
--graphics vnc \
--console pty,target_type=serial \
--boot cdrom
参数说明:
name:指定虚拟机的名称vcpus:分配2核心memory:分配4G内存cdrom:指定系统镜像的路径disk:指定硬盘的路径文件os-type:指定系统的类型,linux或Windowsnetwork:指定网络的类型,默认NAT模式。graphics: 指定虚拟机的图形界面方式
云镜像方式
云镜像方式是基于已经安装并配置好的操作系统镜像文件(通常为 QCOW2 格式),这些镜像包含了操作系统以及必要的配置和软件包。在该方式下,虚拟机创建的过程更加快速,因为操作系统已经事先配置好,虚拟机只是直接复制镜像中的内容。
准备云镜像文件
首先,您需要准备一个云镜像文件(例如 .qcow2 格式)。 以ubuntu为例子,从以下网址下载云镜像
http://cloud-images-archive.ubuntu.com/releases/noble/release-20240423/ubuntu-24.04-server-cloudimg-amd64.img
编辑元数据信息
配置用户与SSH,并设置主机名。
cat > user-data << EOF
#cloud-config
user: root
password: password@321
chpasswd: { expire: False }
ssh_pwauth: True
package_update: true
packages:- qemu-guest-agent
EOFcat > meta-data << EOF
instance-id: my-cloud-vm
local-hostname: ubuntu-cloud
EOF
生成cloud-init ISO
genisoimage -output ubuntu-cloud-vm.iso -volid cidata -joliet -rock user-data meta-data
创建虚拟机
利用 virt-install 命令的 --import 选项,您可以直接从现有的云镜像文件创建虚拟机,而无需进行操作系统安装过程。
virt-install \
--name ubuntu-cloud-vm \
--vcpus 2 \
--memory 1024 \
--disk path=/var/lib/libvirt/images/ubuntu-24.10-vm1.img \
--disk path=/var/lib/libvirt/images/ubuntu-cloud-vm.iso \
--import \
--os-type linux \
--os-variant ubuntu24.04 \
--network network=default \
--graphics none \
--console pty,target_type=serial
启动成功,可以通过以下界面查看虚拟机的状态
[root@kylin-node2 ~]# virsh list --allId Name State
----------------------------------1 ubuntu-cloud-vm running
管理虚拟机
- 常用命令
virsh list --all # 查看所有虚拟机
virsh start kylin-vm1 # 启动虚拟机
virsh shutdown kylin-vm1 # 正常关闭
virsh destroy kylin-vm1 # 强制停止
virsh edit kylin-vm1 # 编辑虚拟机配置
virsh undefine kylin-vm1 # 删除虚拟机(需先destroy)
- 连接虚拟机控制台
virsh console kylin-vm1 # 进入串口控制台(需在虚拟机内启用ttyS0)
总结
通过在麒麟系统上部署qemu-kvm虚拟化环境,我们可以高效地实现虚拟机的管理和资源隔离。虚拟化技术不仅提高了硬件资源的利用率,还提供了更高的灵活性和可扩展性,适用于多种应用场景 。
相关文章:
探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践
随着云计算和虚拟化技术的不断进步,虚拟化在管理服务器、隔离资源以及提升性能方面的好处越来越明显。麒麟操作系统Kylin OS是我们国家自己开发的操作系统,在政府机构和企业中用得很多。这篇文章会教你如何在麒麟操作系统上设置QEMU-KVM虚拟化环境&#…...
[ComfyUI] 最新控制模型EasyControl,吉卜力风格一键转绘
一、EasyControl介绍 玩ComfyUI的都知道Controlnet的重要性,可以根据约束来引导图片的生成,这也是ComfyUI商业化里面很重要的一环。 不过之前我们用的Controlnet都是基于Unet技术框架下的。 最近出的这个EasyControl有点不一样,是基于DiT&a…...
项目执行中的目标管理:从战略到落地的闭环实践
——如何让目标不“跑偏”、团队不“掉队”? 引言:为什么目标管理决定项目成败? 根据PMI研究,47%的项目失败源于目标模糊或频繁变更。在复杂多变的项目环境中,目标管理不仅是制定KPI,更是构建“方向感-执行…...
《计算机视觉度量:从特征描述到深度学习》—深度学习工业检测方案评估
谢谢各位粉丝的支持,过去了一年多才再次更新技术博客。原因是个人家庭和技术发展在这短短一年多,发生了很大变化。本人身为技术博主,也在不断的探索和研究新技术在工业检测领域的技术方案。 并在这期间已经完成了基础的工业检测大模型的设计…...
网页防篡改与盗链防护:实时监控与自动化修复实践
摘要:针对网页内容篡改与盗链问题,本文基于群联AI云防护系统,详解如何通过哈希校验、实时监控与CDN联动实现秒级修复,并提供Python与AWS S3集成代码。 一、网页安全的核心需求 防篡改:保障页面内容完整性,…...
LR(0)
LR0就是当我处在自动机为红色这些结束状态的时候,这些红色状态就代表我们识别到了一个句柄,那现在的问题就是识别到了句柄,那要不要对他进行归约?LR0就是我不管当前指针指向的终结符是什么,我都拿它做规约 这里的二号状…...
鸿蒙开发-页面跳转
1.路由使用 //1.引入路由 import router from ohos.router//2.使用跳转router.pushUrl({url: "pages/Show"})2.页面跳转 import { router } from kit.ArkUI;Entry Component struct LoginPage {State message: string 登陆页;build() {Row() {Column() {Text(this…...
#MES系统中的一些相关的名词
📌MES系统 部分 术语表 缩写英文全称中文名称详细解释MESManufacturing Execution System制造执行系统用于连接计划系统与生产现场,实时管理和控制整个生产过程,覆盖物料、人员、设备、质量、指令等。ERPEnterprise Resource Planning企业资…...
无人船 | 图解基于视线引导(LOS)的无人艇制导算法
目录 1 视线引导法介绍2 LOS制导原理推导3 Lyapunov稳定性分析4 LOS制导效果 1 视线引导法介绍 视线引导法(Line of Sight, LOS)作为无人水面艇(USV)自主导航领域的核心技术,通过几何制导与动态控制深度融合的机制&am…...
LeetCode LCR157 套餐内商品的排列顺序
生成字符串的全部排列(去重):从问题到解决方案的完整解析 问题背景 在编程和算法设计中,生成字符串的所有排列是一个经典问题。它不仅出现在算法竞赛中,也在实际开发中有着广泛的应用,比如生成所有可能的…...
3.2.2.3 Spring Boot配置拦截器
在Spring Boot应用中配置拦截器(Interceptor)可以对请求进行预处理和后处理,实现如权限检查、日志记录等功能。通过实现HandlerInterceptor接口并注册到Spring容器,拦截器可以自动应用到匹配的请求路径。案例中,创建了…...
cryptozombies合约6
我们就快完成我们的随机僵尸制造器了,来写一个公共的函数把所有的部件连接起来。 写一个公共函数,它有一个参数,用来接收僵尸的名字,之后用它生成僵尸的DNA。 实战演习 创建一个 public 函数,命名为 createRandomZom…...
大模型文生图
提示词分4个部分:质量,主体,元素,风格 质量:杰作,高质量,超细节,完美的精度,高分辨率,大师级的; 权重:把图片加括号,&am…...
.NET MCP 示例
服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例,它使用标准输入输出(stdio)作为传输方式,并实现了一个简单的回显工具: using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…...
daz dForce to UE 的原理分析
dForce是物理模拟,不是关键帧动画: dForce是一个物理引擎。当你运行模拟时,Daz Studio会根据你设置的物理属性(如裙子的重量、布料的硬度、摩擦力)、环境因素(如重力、风力)以及与角色的碰撞&am…...
LeetCode 118题解 | 杨辉三角
题目链接: https://leetcode.cn/problems/pascals-triangle/description/ 题目如下: 解题过程如下: 杨辉三角就是一个不规则的二维数组,实际上是一个直角三角形。如图所示: 杨辉三角特点:每一行的第一个和最后一个都是…...
『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解
『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器,这些容器可以分为两类 用户程序所在的容器,数量可多可少Pause 容器,这是每个 Pod 都会有的一个根容器,它的作用有两个 可…...
裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4%
数据集详情: 裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4% 2394总图像 数据集分割 训练集占比 70% 1673图片 有效集20% 477图片 测试集...
数据库索引深度解析:原理、类型与高效使用实践
🧠 一句话理解索引是什么? 索引就是数据库中的“目录”或“书签”,它能帮助我们快速找到数据的位置,而不是一页页地翻整本书。 🧩 一、为什么需要索引?(用生活化例子秒懂) 想象你在…...
React 记账本项目实战:多页面路由、Context 全局
在本文中,我们将分享一个使用 React 开发的「记账本」项目的实战经验。该项目通过 VS Code 完成,包含首页、添加记录页、编辑页等多个功能页面,采用了 React Router 实现路由导航,使用 Context API 管理全局的交易记录状态,并引入数据可视化组件呈现不同月份的支出情况。项…...
易路iBuilder智能体平台:人力资源领域AI落地,给“数据权限管控”一个最优解
近日,加拿大电子商务巨头Shopify的CEO Tobias Ltke分享了一份内部备忘录,明确表示有效使用AI已成为公司对每位员工的基本期望,并指出:各团队在招募新员工前,必须先确定是否能够利用AI完成工作。 而在全球范围内&#…...
【3】k8s集群管理系列--包应用管理器helm之chart资源打包并推送到harbor镜像仓库
一、chart资源打包 helm package ./web-chart # 当前目录会生成一个tgz的压缩文件二、安装help push插件(用于推送前面打包的文件,到镜像仓库) .1 下载help-push二进制文件 wget https://github.com/chartmuseum/helm-push/releases/down…...
用 Python 从零构建异步回显服务器
简介 让我们从 0 开始,搭建一个异步服务输出服务器。 套接字 套接字(socket),是不同计算机中实现通信的一种方式,你可以理解成一个接口,它会在客户端和服务端建立连接,一台发送数据ÿ…...
mybatis--多对一处理/一对多处理
多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…...
QT Sqlite数据库-教程002 查询数据-上
【1】DQL语句: DQL语句(数据查询语言),用来查询数据记录。DQL 基本结构由 SELECT FROM、WHERE、JOIN 等子句构成。DQL 语句并不会改变数据库,而是让数据库将查询结果发送结果集给客户端,返回的结果是一张虚…...
Kubernetes Operator 是什么,以及它们的用途
最近一个朋友问我关于EKS的升级问题: 场景: 如果我有 100 个 EKS 集群需要升级,那么所有集群都安装了安全插件。由于我不想在升级后手动在每个EKS中重复安装此插件,如何实现EKS升级后自动安装这个安全插件? 答案有多…...
鸿蒙开发08-泛型类型和函数
泛型类型和函数允许创建的代码在各种类型上运行,而不仅支持单一类型,类型参数是一种特殊的变量,它代表类型而不是值。 泛型函数的基本语法如下: function 函数名<类型参数>(参数: 类型参数): 类型参数 {// 函数体return 参…...
C语言十大经典数学应用
C语言在解决数学问题方面非常有用,因为它提供了丰富的数学函数和运算符。以下是一些经典的C语言数学题,这些题目可以帮助你提高编程和数学能力。 1. 计算圆的面积 给定圆的半径,计算圆的面积。 #include <stdio.h> #include <mat…...
计算机视觉——图像金字塔与目标图像边缘检测原理与实践
一、两个图像块之间的相似性或距离度量 1.1 平方差和(SSD) 平方差和(SSD) 是一种常用的图像相似性度量方法。它通过计算两个图像在每个对应位置的像素值差的平方和来衡量两个图像之间的整体差异。如果两个图像在每个位置的像素值…...
VRoid-Blender-Unity个人工作流笔记
流程 VRoid 选配模型>减面、减材质>导出vrm Blender(先有CATS、vrm插件) 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…...
