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

开发 系统
这篇文章会教你如何在麒麟操作系统上设置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
  • 1.
  • qemu-kvm:KVM虚拟化的核心组件。
  • libvirt:用于管理虚拟机的库。
  • virt-install:用于通过命令行创建虚拟机的工具。
  • bridge-utils:用于网络桥接配置的工具。

1. 启动libvirt服务

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

systemctl start libvirtd
systemctl enable libvirtd
  • 1.
  • 2.

三、创建虚拟机

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

1. 传统方式

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

(1) 准备系统镜像

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

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

qemu-img  create -f qcow2  /home/kylin-vm.qcow2   20G
  • 1.

(2) 创建虚拟机

可以使用 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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

参数说明:

  • name:指定虚拟机的名称
  • vcpus:分配2核心
  • memory:分配4G内存
  • cdrom:指定系统镜像的路径
  • disk:指定硬盘的路径文件
  • os-type:指定系统的类型,linux或Windows
  • network:指定网络的类型,默认NAT模式。
  • graphics: 指定虚拟机的图形界面方式

2. 云镜像方式

云镜像方式是基于已经安装并配置好的操作系统镜像文件(通常为 QCOW2 格式),这些镜像包含了操作系统以及必要的配置和软件包。在该方式下,虚拟机创建的过程更加快速,因为操作系统已经事先配置好,虚拟机只是直接复制镜像中的内容。

(1) 准备云镜像文件

首先,您需要准备一个云镜像文件(例如 .qcow2 格式)。 以ubuntu为例子,从以下网址下载云镜像

http://cloud-images-archive.ubuntu.com/releases/noble/release-20240423/ubuntu-24.04-server-cloudimg-amd64.img
  • 1.

(2) 编辑元数据信息

配置用户与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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

(3) 生成cloud-init ISO

genisoimage -output ubuntu-cloud-vm.iso -volid cidata -joliet -rock user-data meta-data
  • 1.

(4) 创建虚拟机

利用 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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

启动成功,可以通过以下界面查看虚拟机的状态:

[root@kylin-node2 ~]# virsh list --all
 Id   Name              State
----------------------------------
 1    ubuntu-cloud-vm   running
  • 1.
  • 2.
  • 3.
  • 4.

四、管理虚拟机

常用命令:

virsh list --all           # 查看所有虚拟机
virsh start kylin-vm1      # 启动虚拟机
virsh shutdown kylin-vm1   # 正常关闭
virsh destroy kylin-vm1    # 强制停止
virsh edit kylin-vm1       # 编辑虚拟机配置
virsh undefine kylin-vm1   # 删除虚拟机(需先destroy)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

连接虚拟机控制台:

virsh console kylin-vm1    # 进入串口控制台(需在虚拟机内启用ttyS0)
  • 1.

五、总结

通过在麒麟系统上部署qemu-kvm虚拟化环境,我们可以高效地实现虚拟机的管理和资源隔离。虚拟化技术不仅提高了硬件资源的利用率,还提供了更高的灵活性和可扩展性,适用于多种应用场景 。

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2020-06-18 16:39:10

KVM虚拟化虚拟机

2011-05-05 09:32:59

CentOS 5.6KVM

2021-11-19 14:11:49

虚拟机QuickguiLinux

2020-11-23 07:19:15

Linux虚拟化KVM

2009-11-24 09:15:54

Linux内核虚拟机KVM架构

2023-08-17 16:51:00

虚拟化QEMUKVM

2017-05-25 11:08:20

虚拟化云计算在线迁移

2014-02-21 11:20:34

KVMXen虚拟机

2011-02-16 14:49:17

虚拟机

2017-07-01 07:02:41

虚拟化迁移

2021-03-28 18:23:22

Linux虚拟化Virtqueue

2010-11-19 16:53:14

桌面虚拟化虚拟机

2018-02-07 14:02:46

2010-08-30 10:11:25

XenKVM虚拟机迁移

2010-01-14 14:21:05

CentOS系统

2021-02-14 16:49:22

Linux虚拟化Virtio

2020-02-24 08:00:20

云的计算解决方案虚拟机

2020-12-08 05:58:57

CPU虚拟化虚拟机

2023-04-26 07:51:36

虚拟机操作系统进程

2012-05-18 10:22:23

点赞
收藏

51CTO技术栈公众号