9.3. virtctl 命令


virtctl 客户端是用于管理 OpenShift Virtualization 资源的命令行实用程序。

表 9.2. virtctl 常规命令
命令描述

virtctl version

查看 virtctl 客户端和服务器版本。

virtctl help

查看 virtctl 命令列表。

virtctl <command> -h|--help

查看特定命令的选项列表。

virtctl 选项

查看任何 virtctl 命令的全局命令选项列表。

9.3.1. VM 和 VMI 管理命令

您可使用 virtctl 管理虚拟机 (VM) 或虚拟机实例 (VMI) 状态,并迁移虚拟机。

表 9.3. virtctl VM 管理命令
命令描述

virtctl start <vm_name>

启动虚拟机。

virtctl start --paused <vm_name>

以暂停状态启动虚拟机。这个选项可让您从 VNC 控制台中断引导过程。

virtctl stop <vm_name>

停止虚拟机。

virtctl stop <vm_name> --grace-period 0 --force

强制停止虚拟机。这个选项可能会导致数据不一致或数据丢失。

virtctl pause vm|vmi <vm_name>

暂停 VM 或 VMI。机器状态保存在内存中。

virtctl unpause vm|vmi <vm_name>

取消暂停 VM 或 VMI。

virtctl migrate <vm_name>

迁移虚拟机。

virtctl restart <vm_name>

重启虚拟机。

9.3.2. VM 和 VMI 连接命令

您可使用 virtctl 连接到串行控制台,公开端口、设置代理连接、指定端口,以及打开到虚拟机的 VNC 连接。

表 9.4. virtctl console,expose, 和 vnc 命令
命令描述

virtctl console <vmi_name>

连接到 VMI 的串行控制台。

virtctl expose <vm_name>

创建转发 VM 或 VMI 的指定端口的服务,并在节点的指定端口上公开该服务。

virtctl vnc --kubeconfig=$KUBECONFIG <vmi_name>

打开到 VMI 的虚拟网络客户端 (VNC) 连接。

通过 VNC 访问 VMI 的图形控制台需要在本地机器上有一个远程查看器。

virtctl vnc --kubeconfig=$KUBECONFIG --proxy-only=true <vmi_name>

显示端口号,并使用任何查看器通过 VNC 连接手动连接到 VMI。

virtctl vnc --kubeconfig=$KUBECONFIG --port=<port-number> <vmi_name>

如果该端口可用,则指定端口号用于在指定端口上运行代理。

如果没有指定端口号,代理会在随机端口上运行。

9.3.3. VM 卷导出命令

您可使用 virtctl vmexport 命令来创建、下载或删除从虚拟机、虚拟机快照或持久性卷声明 (PVC) 导出的卷。

表 9.5. virtctl vmexport 命令
命令描述

virtctl vmexport create <vmexport_name> --vm|snapshot|pvc=<object_name>

创建一个 VirtualMachineExport 自定义资源 (CR) 来从虚拟机、虚拟机快照或 PVC 导出卷。

  • --vm: 导出虚拟机的 PVC。
  • --snapshot :导出 VirtualMachineSnapshot CR 中包含的 PVC。
  • --pvc: 导出 PVC。
  • 可选: --ttl=1h 指定生存时间。默认持续时间为 2 小时。

virtctl vmexport delete <vmexport_name>

手动删除 VirtualMachineExport CR。

virtctl vmexport download <vmexport_name> --output=<output_file> --volume=<volume_name>

下载在 VirtualMachineExport CR 中定义的卷。

  • --output 指定文件格式。示例: disk.img.gz.
  • --volume 指定要下载的卷。如果只有一个卷可用,则此标志是可选的。

可选:

  • --keep-vme 在下载后保留 VirtualMachineExport CR。默认的行为是在下载后删除 VirtualMachineExport CR 的默认行为。
  • --insecure 启用不安全的 HTTP 连接。

virtctl vmexport download <vmexport_name> --<vm|snapshot|pvc>=<object_name> --output=<output_file> --volume=<volume_name>

创建一个 VirtualMachineExport CR,然后下载 CR 中定义的卷。

9.3.4. VM 内存转储命令

您可使用 virtctl memory-dump 命令在 PVC 上输出虚拟机 (VM) 内存转储。您可以指定现有的 PVC,或使用 --create-claim 标志来创建新 PVC。

先决条件

  • PVC 卷模式必须是 FileSystem
  • PVC 必须足够大以保存内存转储。

    计算 PVC 大小的公式为 (VMMemorySize + 100Mi)* FileSystemOverhead,其中 100Mi 是内存转储开销。

  • 您必须运行以下命令来在 HyperConverged 自定义资源中启用热插功能:

    $ oc patch hco kubevirt-hyperconverged -n openshift-cnv \
      --type json -p '[{"op": "add", "path": "/spec/featureGates", \
      "value": "HotplugVolumes"}]'

下载内存转储

您必须使用 virtctl vmexport download 命令下载内存转储:

$ virtctl vmexport download <vmexport_name> --vm\|pvc=<object_name> \
  --volume=<volume_name> --output=<output_file>
表 9.6. virtctl memory-dump 命令
命令描述

virtctl memory-dump get <vm_name> --claim-name=<pvc_name>

在 PVC 上保存虚拟机的内存转储。内存转储状态显示在 VirtualMachine 资源的 status 部分。

可选:

  • --create-claim 会创建一个具有适当大小的新 PVC。这个标志有以下选项:

    • --storage-class=<storage_class>: 为 PVC 指定存储类。
    • --access-mode=<access_mode>: 指定 ReadWriteOnceReadWriteMany

virtctl memory-dump get <vm_name>

使用相同的 PVC 重新运行 virtctl memory-dump 命令。

这个命令覆盖以前的内存转储。

virtctl memory-dump remove <vm_name>

删除内存转储。

如果要更改目标 PVC,则必须手动删除内存转储。

这个命令会删除虚拟机和 PVC 之间的关联,以便在 VirtualMachine 资源的 status 部分中不会显示内存转储。PVC 不受影响。

9.3.5. 镜像上传命令

您可使用 virtctl image-upload 命令将虚拟机镜像上传到数据卷中。

表 9.7. virtctl image-upload 命令
命令描述

virtctl image-upload dv <datavolume_name> --image-path=</path/to/image> --no-create

将虚拟机镜像上传到已存在的数据卷中。

virtctl image-upload dv <datavolume_name> --size=<datavolume_size> --image-path=</path/to/image>

将虚拟机镜像上传到指定请求大小的新数据卷中。

9.3.6. 环境信息命令

您可使用 virtctl 查看版本、文件系统、客户机操作系统和登录用户的信息。

表 9.8. virtctl 环境信息命令
命令描述

virtctl fslist <vmi_name>

查看客户机机器上可用的文件系统。

virtctl guestosinfo <vmi_name>

查看客户机机器上操作系统的信息。

virtctl userlist <vmi_name>

查看客户机机器上的登录用户。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.