当前位置: 首页 > news >正文

探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践

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

什么是QEMU-KVM虚拟化?

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

部署虚拟化

安装qemu-kvm及其依赖包。运行以下命令:

sudo yum install -y qemu-kvm libvirt virt-install bridge-utils
  • qemu-kvmKVM虚拟化的核心组件。
  • libvirt:用于管理虚拟机的库。
  • virt-install:用于通过命令行创建虚拟机的工具。
  • bridge-utils:用于网络桥接配置的工具。

启动libvirt服务

虚拟化管理工具libvirt需要启动并设置为开机自动启动。运行以下命令:

systemctl start libvirtd
systemctl enable libvirtd

创建虚拟机

创建虚拟机主要有两种方法:一种是用传统的办法,通过安装系统镜像来设置;另一种是使用云镜像,就是用已经配置好的模板来快速生成多台一样的虚拟机。

传统方式

在传统虚拟化方式下,虚拟机的创建通常是基于一个操作系统的安装镜像文件(ISO 文件)。通过安装过程,虚拟机会从该镜像文件中引导系统安装程序,进而完成操作系统的安装与配置。

准备系统镜像

首先,您需要准备一个操作系统的ISO镜像文件。例如,您可以使用麒麟操作系统的安装镜像,也可以使用其他Linux发行版如UbuntuCentOS等的镜像文件。

创建一个虚拟磁盘,相当于我们的系统盘。

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:指定系统的类型,linuxWindows
  • network:指定网络的类型,默认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
EOF

cat > 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 --all
 Id   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虚拟化环境,我们可以高效地实现虚拟机的管理和资源隔离。虚拟化技术不仅提高了硬件资源的利用率,还提供了更高的灵活性和可扩展性,适用于多种应用场景 。

相关文章:

  • 26-JavaScript简介和基本使用(JavaScript)
  • 面试篇 - GPT-1(Generative Pre-Training 1)
  • 【分享】Ftrans文件摆渡系统:既保障传输安全,又提供强集成支持
  • 【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(一)
  • 机器视觉用消色差双合透镜
  • RockyLinux9 部署 Zabbix7 完整步骤
  • Springboot下载文件, 文件名中文是乱码, 空格变加号
  • Web前端开发——超链接与浮动框架(下)
  • 机器学习项目一:虚假新闻检测
  • yum安装MySQL数据库
  • MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移
  • Unified Modeling Language,统一建模语言
  • centOS 安装和配置docker
  • 《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》
  • 3.7 字符串基础
  • 树莓派第5代主板连接cis摄像头
  • Python学习笔记(列表相关操作)
  • 供应商涨价,项目如何控制采购成本
  • ⑫交换机引流设备案例
  • What Was the “Game Genie“ Cheat Device, and How Did It Work?
  • 第八届进博会将致力于打造“五个高”,为展商增值赋能
  • 18条举措!上海国际金融中心进一步提升跨境金融服务便利化
  • 竹笋食用不当,小心“鲜”变“险”
  • 人均300+的日料,是后厨拆开的预制料理包
  • 海南医科大学继续开展部门正职竞聘上岗,致力营造“谁有本事谁来”
  • 多地市场监管部门公开征集居民水电气计量不准确、收费不规范问题线索