安装 Linux KVM 并通过示例创建 Guest VM

举报
Tiamo_T 发表于 2022/09/14 23:50:54 2022/09/14
【摘要】 KVM 代表基于内核的虚拟机。 顾名思义,这是基于内核的虚拟化技术,适用于支持虚拟化的硬件上的 Linux 操作系统。

KVM 代表基于内核的虚拟机。

顾名思义,这是基于内核的虚拟化技术,适用于支持虚拟化的硬件上的 Linux 操作系统。

客户操作系统可以完全虚拟化或半虚拟化。

准虚拟化通过有效地使用处理器和内存等资源,使多个操作系统能够在一组硬件上运行。在 Para 虚拟化中,操作系统被修改为与虚拟机一起工作,这将最大限度地减少执行在虚拟环境中难以运行的操作所需的执行时间。

这是关于 KVM 的系列文章中的第一篇。

1. 管理虚拟机的工具

KVM 包提供了 qemu-kvm,一个管理虚拟机的特定于管理程序的工具。

您可以使用名为 libvirt 的软件包代替此工具,这是一种更方便且推荐的虚拟机管理方式。该软件包括一个 API 库、一个守护程序 (libvirtd) 和一个命令行实用程序 (virsh)。

您可以使用此 libvirt 工具来管理在 KVM、Xen、VMWARE ESX 等上运行的任何现有虚拟机。支持的虚拟机管理程序的完整列表在libvirt上列出。

可用于管理来宾 VM 的其他工具很少。

  • virt-manager(虚拟机管理器):VM 来宾的图形管理工具。
  • vm-install:一个基于脚本的菜单驱动实用程序,用于定义 VM 来宾并安装其操作系统。
  • virt-viewer:VM Guest 的 X 查看器客户端,支持 x509 证书身份验证和 SASL 身份验证的 TLS/SSL 加密。

2.检查硬件上的虚拟化支持

要检查您的 CPU 是否支持硬件虚拟化,请执行以下命令。

# egrep '(vmx|svm)' /proc/cpuinfo

如果您在 flags 部分的输出中看到 vmx 或 svm,则您的硬件 (CPU) 支持虚拟化。

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm 
constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni 
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 
popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid

3.安装KVM包

使用发行版特定的包管理工具(例如,RedHat 和 CentOS 上的 yum)安装 KVM 包。

# yum install kvm

安装主 kvm 软件包后,请安装以下 KVM 相关软件包,这些软件包将帮助您管理系统上的 VM。

# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

以下是我机器上安装的 KVM 相关包。您系统上的版本号可能略有不同。

# rpm -qa | egrep "virt|kvm|qemu"
python-virtinst-0.600.0-18.el6.noarch
qemu-img-0.12.1.2-2.415.el6.x86_64
libvirt-0.10.2-29.el6.x86_64
virt-viewer-0.5.6-8.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64
libvirt-python-0.10.2-29.el6.x86_64
virt-manager-0.9.0-19.el6.x86_64
virt-top-1.0.4-3.15.el6.x86_64
libvirt-client-0.10.2-29.el6.x86_64
gpxe-roms-qemu-0.9.7-6.10.el6.noarch
virt-what-1.11-1.2.el6.x86_64

安装软件包后,建议重新启动计算机以加载所有 KVM 和 libvirt 模块,即使您可以使用modprobe 命令重新加载它。

您可以使用 vm-install(用于 SUSE Linux)和 virt-install(用于 RedHat)的 Virtul 机器管理器安装来宾操作系统。

当您的显示设置(通过超越、reflectionX 或其他一些显示管理器)时,它提供了一个图形界面来创建虚拟机向导,指导您完成安装过程。如果没有设置显示,即当使用 ssh 连接机器而没有 X11 转发时,vm-install 提供了一个命令行向导以交互方式设置 VM 来宾进行安装。

4. 创建访客虚拟机的网络先决条件

默认情况下,虚拟机只能访问同一服务器上的其他虚拟机(以及主机本身)。如果您希望 VM 能够访问您的 VLAN,那么您必须按照此处的说明在主机上创建一个网桥。

编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 并添加“BRIDGE=br0”行(确保删除所有静态 IP)。

创建文件 /etc/sysconfig/network-scripts/ifcfg-br0 并添加如下所示的条目。您可以使用静态或 dhcp。在这种情况下,我使用了静态 IP。

DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

如果您正在运行防火墙(如 iptables),请创建一个规则以允许桥接流量。

5. 创建访客虚拟机的额外先决条件

VM 映像文件的默认位置在 /var/lib/libvirt/images 下。请确保此目录下有足够的可用空间。如果没有,您可以在创建 VM 时将镜像文件指向不同的目录。

通过添加以下行在 /etc/sysctl.conf 中启用 IP 转发:

inet.ipv3.ip_forward=1

在测试阶段,如果您正在运行 SELinux,请将 SELinux 设置为 permissive mode 以禁用它。

完成上述更改后重新启动系统。

6. 使用 virt-install 创建一个新的 Guest VM

virt-install 工具用于创建虚拟机。此工具可用于交互或非交互模式。

在以下示例中,我将创建 VM 所需的所有值作为命令行参数传递给 virt-install 命令。

# virt-install \
 -n myRHELVM1 \
 --description "Test VM with RHEL 6" \
 --os-type=Linux \
 --os-variant=rhel6 \
 --ram=2048 \
 --vcpus=2 \
 --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \
 --graphics none \
 --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \
 --network bridge:br0

在上面的 virt-install 命令中:

  • n您的虚拟机的名称
  • 描述关于你的虚拟机的一些有效描述。例如:应用服务器、数据库服务器、Web服务器等。
  • os-type操作系统类型可以是 Linux、Solaris、Unix 或 Windows。
  • os-variant上述 os-type 的分发类型。例如对于linux,可以是rhel6、centos6、ubuntu14、suse11、fedora6等。对于windows,可以是win2k、win2k8、win8、win7
  • VM 的ram内存(以 MB 为单位)
  • vcpu虚拟机的虚拟 CPU 总数。
  • 磁盘路径=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 存储 VM 映像文件的路径。以 GB 为单位的大小。在此示例中,此 VM 映像文件为 10GB。
  • graphics none这指示 virt-install 在 VM 串行端口上使用文本控制台,而不是图形 VNC 窗口。如果您设置了 xmanager,则可以忽略此参数。
  • cdrom指示安装映像的位置。您可以指定 NFS 或 http 安装位置(代替 –cdrom)。例如,–location=http://.com/pub/rhel6/x86_64/
  • network bridge:br0本例使用桥接适配器 br0。也可以在任何特定端口而不是桥接适配器上创建自己的网络。如果要使用 NAT,请使用如下所示的网络参数,其虚拟网络名称为 VMnetwork1。所有网络配置文件都位于虚拟机的 /etc/libvirt/qemu/networks/ 下。例如:–network network=VMnetwork1

7.列出虚拟机

您可以使用“console=tty0 console=ttyS0,115200”编辑 grub 菜单,以在安装过程中在 SSH 窗口上显示屏幕控制台。这将允许您通过引导式安装来安装操作系统。否则,您可以使用 X 服务器进行显示。

以下命令将显示操作系统上安装的所有虚拟机。在此示例中,我们在此系统上安装了两个 VM。

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     dev-dev-vm                     running
 2     myRHELVM1                      running

8. 编辑虚拟机配置文件

创建 VM 后,您将在以下位置看到 VM 配置文件。配置文件的名称将是带有 .xml 扩展名的 VM 的名称。

# ls -l /etc/libvirt/qemu/myRHELVM1.xml
-rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml

您应该避免手动编辑此文件,而应使用命令 virsh edit。要编辑域(虚拟机),请执行以下操作:

virsh edit myRHELVM1

9. 连接到虚拟机控制台

要连接到虚拟机的控制台,请使用以下命令。您可以使用“ctrl + ]”退出虚拟机控制台。

virsh console myRHELVM1

如果您的主机上没有运行 X 服务器,则连接到 VM 串行控制台可能是在网络不可用时登录 VM 的唯一方法。

设置对 VM 控制台的访问与物理服务器没有什么不同,您只需将适当的内核引导参数添加到 VM。

例如,对于 RHEL 虚拟机(或 CentOS 虚拟机),将以下参数附加到 /etc/grub.conf 中的内核启动行,然后重新启动虚拟机。

console=tty0 console=ttyS0,115200

或者,您也可以将以下条目添加到 /etc/grub.conf 文件中。

serial --unit=0 --speed=115200
terminal --timeout=5 serial console

10. 显示虚拟机信息

要显示 VM 信息,请使用以下命令:

# virsh dominfo myRHELVM1
Id:             5
Name:           myRHELVM1
UUID:           58083ae7-51db-50c3-64d8-bc4c49f642d0
OS Type:        Linux
State:          running
CPU(s):         2
CPU time:       207.6s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)

11. 显示 VM CPU 和内存使用情况

要显示虚拟机 CPU 和内存使用情况,请使用 virt-top 命令,如下所示。

# virt-top
virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB
3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0
CPU: 0.1%  Mem: 4096 MB (4096 MB by guests)
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME
    5 R    0    0 1546    0  0.0  6.0   3:29.55 dev-dev-vm
    8 R    0    0 1546    0  0.0  6.0   1:42.17 myRHELVM2
    -

12. 使用 virsh 关闭、重启或启动 VM

要关闭 VM,请执行以下操作:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

要重新启动 VM,请执行以下操作:

# virsh reboot myRHELVM1

要启动或打开虚拟机电源,请执行以下操作。虚拟机启动后,执行“virsh list –all”查看所有正在运行的虚拟机。

# virsh start myRHELVM1
Domain myRHELVM1 started

在 KVM 系列的下一篇文章中,我们将详细介绍如何在单个 VM 上编辑和操作配置。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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