将内存、vCPU、硬盘添加到 Linux KVM 虚拟机

举报
Tiamo_T 发表于 2022/09/22 23:49:10 2022/09/22
【摘要】 在之前的 Linux KVM 系列文章中,解释了如何安装 Linux KVM并创建一个 Guest VM。 但是,一旦您创建了访客虚拟机,您就需要知道如何在虚拟机上执行一些日常维护活动。

在之前的 Linux KVM 系列文章中,解释了如何安装 Linux KVM并创建一个 Guest VM。

但是,一旦您创建了访客虚拟机,您就需要知道如何在虚拟机上执行一些日常维护活动。

本教程将解释如何执行以下 Linux KVM VM 活动:

  1. 向虚拟机添加内存
  2. 将 vCPU 添加到 VM
  3. 将磁盘添加到 VM
  4. 保存虚拟机配置
  5. 删除虚拟机


1.添加内存到虚拟机

要向 VM 添加额外内存,您应该执行以下操作:

  • 关闭你的虚拟机
  • 编辑 VM 文件并增加分配给此 VM 的最大内存值
  • 重启虚拟机
  • 使用 virsh setmem 将内存设置为为此 VM 分配的最大内存。

在这个例子中,让我们将 myRHELVM1 的 VM 的内存从 2GB 增加到 4GB。

首先,使用 virsh shutdown 关闭虚拟机,如下所示:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

接下来,使用 virsh edit 编辑 VM:

# virsh edit myRHELVM1

查找下面的行并将内存的值更改为以下内容。在我的示例中,之前它是 2097152:

<memory unit='KiB'>4194304</memory>

请注意,上述值以 KB 为单位。进行更改后,保存并退出:

# virsh edit myRHELVM1
Domain myRHELVM1 XML configuration edited.

使用更新的配置文件重新启动 VM。现在您将看到最大内存从 2G 增加到 4G。

您现在可以将 VM 内存动态修改为最大 4G 限制。

使用 virsh create 创建域 XML 文件

# virsh create /etc/libvirt/qemu/myRHELVM1.xml
Domain myRHELVM1 created from /etc/libvirt/qemu/myRHELVM1.xml

查看此域的可用内存。如下所示,即使最大可用内存为 4GB,该域也只有 2GB(已用内存)。

# virsh dominfo myRHELVM1 | grep memory
Max memory:     4194304 KiB
Used memory:    2097152 KiB

使用 virsh setmem 将此域的内存设置为 4GB,如下所示:

# virsh setmem myRHELVM1 4194304

现在,以下内容表明我们已为该域分配了 4GB(已用内存)。

# virsh dominfo myRHELVM1 | grep memory
Max memory:     4194304 KiB
Used memory:    4194304 KiB

2. 将 VCPU 添加到 VM

要增加分配给 VM 的虚拟 CPU,请执行 virsh 编辑并更改 vcpu 参数,如下所述。

在这个例子中,让我们将 myRHELVM1 的 VM 的内存从 2GB 增加到 4GB。

首先,使用 virsh shutdown 关闭虚拟机,如下所示:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

接下来,使用 virsh edit 编辑 VM:

# virsh edit myRHELVM1

查找以下行并将 vcpu 的值更改为以下内容。在我的示例中,之前它是 2。

<vcpu placement='static'>4</vcpu>

使用 virsh create 创建域 XML 文件

# virsh create /etc/libvirt/qemu/myRHELVM1.xml
Domain myRHELVM1 created from /etc/libvirt/qemu/myRHELVM1.xml

查看分配给该域的虚拟 CPU,如下所示。这表明我们已将 vCPU 从 2 增加到 4。

# virsh dominfo myRHELVM1 | grep -i cpu
CPU(s):         4
CPU time:       21.0s

3.添加磁盘到虚拟机

在此示例中,我们在此 VM 上只有两个虚拟磁盘(vda1 和 vda2)。

# fdisk -l | grep vd
Disk /dev/vda: 10.7 GB, 10737418240 bytes
/dev/vda1   *           3        1018      512000   83  Linux
/dev/vda2            1018       20806     9972736   8e  Linux LVM

创建新存储设备并将其附加到 Linux KVM 来宾 VM 涉及两个步骤:

  • 一、创建虚拟磁盘镜像
  • 将虚拟磁盘映像附加到 VM

让我们再创建一个虚拟磁盘并将其附加到我们的 VM。为此,我们首先需要使用 qemu-img create 命令创建一个磁盘映像文件,如下所示。

在以下示例中,我们将创建一个大小为 7GB 的虚拟磁盘映像。磁盘映像通常位于 /var/lib/libvirt/images/ 目录下。

# cd /var/lib/libvirt/images/

# qemu-img create -f raw myRHELVM1-disk2.img 7G
Formatting 'myRHELVM1-disk2.img', fmt=raw size=7516192768

要附加新创建的磁盘映像,请使用 virsh attach-disk 命令,如下所示:

# virsh attach-disk myRHELVM1 --source /var/lib/libvirt/images/myRHELVM1-disk2.img --target vdb --persistent
Disk attached successfully

上面的 virsh attach-disk 命令有以下参数:

  • myRHELVM1 虚拟机的名称
  • –source 源磁盘映像的完整路径。这是我们使用上面的 qemu-image 命令创建的。即:myRHELVM1-disk2.img
  • --target 这是设备挂载点。在此示例中,我们要将给定的磁盘映像附加为 /dev/vdb。请注意,我们实际上并不需要指定 /dev。只要指定 vdb 就足够了。
  • –persistent 表示附加到 VM 的磁盘将是持久的。

如下所示,新的 /dev/vdb 现在可以在 VM 上使用。

# fdisk -l | grep vd
Disk /dev/vda: 10.7 GB, 10737418240 bytes
/dev/vda1   *           3        1018      512000   83  Linux
/dev/vda2            1018       20806     9972736   8e  Linux LVM
Disk /dev/vdb: 7516 MB, 7516192768 bytes

现在,您可以对 /dev/vdb 设备进行分区,并创建多个分区 /dev/vdb1、/dev/vdb2 等,并将其挂载到 VM。如前所述,使用fdisk 创建分区。

与从来宾 VM 分离磁盘类似,您可以使用以下命令。但请注意指定正确的 vd*,否则您最终可能会删除错误的设备。

# virsh detach-disk myRHELVM1 vdb
Disk detached successfully

4. 保存虚拟机配置

如果您对 VM 进行了大量更改,建议您保存配置。

使用 virsh dumpxml 文件进行备份并保存 VM 的配置信息,如下所示。

# virsh dumpxml myRHELVM1 > myrhelvm1.xml

# ls myrhelvm1.xml
myrhelvm1.xml

获得 XML 格式的配置文件后,您始终可以使用 virsh create 命令从此 XML 文件重新创建来宾 VM,如下所示:

virsh create myrhelvm1.xml

5.删除KVM虚拟机

如果您出于测试目的创建了多个 VM,并且想删除它们,则应执行以下三个步骤:

  • 关闭虚拟机
  • 销毁虚拟机(并取消定义)
  • 删除磁盘映像文件

在此示例中,让我们删除 myRHELVM2 虚拟机。首先,关闭这个虚拟机:

# virsh shutdown myRHELVM2
Domain myRHELVM2 is being shutdown

接下来,销毁此 VM,如下所示:

# virsh destroy myRHELVM2
Domain myRHELVM2 destroyed

除了销毁它之外,您还应该取消定义 VM,如下所示:

# virsh undefine myRHELVM2
Domain myRHELVM2 has been undefined

最后,从 /var/lib/libvirt/images 目录中删除您为此 VM 创建的所有磁盘映像文件:
现在您可以删除 /var/lib/libvirt/images 下的磁盘 img 文件

rm /var/lib/libvirt/images/myRHELVM2-disk1.img
rm /var/lib/libvirt/images/myRHELVM2-disk2.img
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。