9.16. VM 磁盘
9.16.1. 热插虚拟机磁盘 复制链接链接已复制到粘贴板!
您可以在不停止虚拟机(VM)或虚拟机实例(VMI)的情况下添加或删除虚拟磁盘。
只有数据卷和持久性卷声明 (PVC) 才能热插和热拔。您无法热插或热拔容器磁盘。
热插磁盘在重新引导后仍会附加到虚拟机。您必须拔出磁盘以将其从虚拟机中删除。
每个虚拟机都有一个 virtio-scsi 控制器,以便热插磁盘可以使用 SCSI 总线。virtio-scsi 控制器克服了 VirtIO 的限制,同时保持其性能优势。它高度可扩展,支持超过 400 万个磁盘的热插拔。
当您热插磁盘到 VirtIO (virtio-blk)总线时,每个磁盘会在虚拟机中使用 PCI Express (PCIe)插槽。根据 Available VirtIO Ports 表中指定的创建虚拟机,PCIe 插槽数量有限并自动设置。因此,您可以将 virtio-blk 用于不超过可用插槽数的少量磁盘。
9.16.1.1. 使用 Web 控制台热插和热拔磁盘 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform web 控制台在虚拟机运行时将其附加到虚拟机 (VM) 来热插磁盘。
热插磁盘会附加到虚拟机,直到您拔出为止。
先决条件
- 您必须至少有一个数据卷或持久性卷声明(PVC)可用于热插。
流程
-
在 web 控制台中进入到 Virtualization
VirtualMachines。 - 选择一个正在运行的虚拟机来查看其详情。
-
在 VirtualMachine 详情页面中,点 Configuration
Storage。 添加热插磁盘:
- 点击 Add。
- 在 Add disk (hot plugged) 窗口中,从 Source 列表中选择磁盘,然后点 Save。
- 可选:选择接口总线的类型。选项为 VirtIO 和 SCSI。默认的总线类型是 VirtIO。
可选:更改现有热插磁盘的接口总线类型:
-
点磁盘旁边的 Options 菜单
并选择 Edit 选项。
- 在 Interface 字段中,选择所需的选项。
-
点磁盘旁边的 Options 菜单
可选: 热插磁盘:
-
点磁盘旁边的选项菜单
,然后选择 Detach。
- 单击 Detach。
-
点磁盘旁边的选项菜单
9.16.1.2. 使用 CLI 热插和热拔磁盘 复制链接链接已复制到粘贴板!
您可以使用命令行在虚拟机 (VM) 运行时热插和热拔磁盘。
热插磁盘会附加到虚拟机,直到您拔出为止。
先决条件
- 您必须至少有一个数据卷或持久性卷声明(PVC)可用于热插。
流程
运行以下命令来热插磁盘:
$ virtctl addvolume <virtual-machine|virtual-machine-instance> \ --volume-name=<datavolume|PVC> \ [--bus <bus_type>] [--serial=<label_name>]-
可选的
--bus标志允许您指定添加磁盘的总线类型。选项为virtio和scsi。默认总线类型是virtio。 -
可选
--serial标志允许您添加您选择的字母数字字符串标签。这有助于您识别客户机虚拟机中的热插磁盘。如果没有指定这个选项,则标签默认为热插数据卷或 PVC 的名称。
-
可选的
运行以下命令来热拔磁盘:
$ virtctl removevolume <virtual-machine|virtual-machine-instance> \ --volume-name=<datavolume|PVC>
9.16.2. 扩展虚拟机磁盘 复制链接链接已复制到粘贴板!
您可以通过扩展磁盘的持久性卷声明(PVC)来增加虚拟机(VM)磁盘的大小。
如果您的存储供应商不支持卷扩展,您可以通过添加空白数据卷来扩展虚拟机的可用虚拟存储。
您不能缩小虚拟机磁盘的大小。
9.16.2.1. 通过扩展磁盘的 PVC 来增加虚拟机磁盘大小 复制链接链接已复制到粘贴板!
您可以通过扩展磁盘的持久性卷声明(PVC)来增加虚拟机(VM)磁盘的大小。要指定增加的 PVC 卷,您可以使用 web 控制台运行虚拟机。另外,您可以在 CLI 中编辑 PVC 清单。
如果 PVC 使用文件系统卷模式,磁盘镜像文件会扩展到可用大小,同时为文件系统开销保留一些空间。
9.16.2.1.1. 在 web 控制台中扩展虚拟机磁盘 PVC 复制链接链接已复制到粘贴板!
您可以在 web 控制台中增加虚拟机磁盘 PVC 的大小,而无需留在 VirtualMachines 页并保持虚拟机运行。
流程
- 在 Administrator 或 Virtualization 视角中,打开 VirtualMachines 页。
- 选择正在运行的虚拟机以打开其 详情页。
- 选择 Configuration 选项卡,再点 Storage。
点您要扩展的磁盘旁的选项菜单
。选择 Edit 选项。
这会打开 Edit disk 对话框。
- 在 PersistentVolumeClaim size 字段中,输入所需的大小。
- 点击 Save。
您可以输入大于当前值的任何值。但是,如果新值超过可用大小,则会显示错误。
9.16.2.1.2. 通过编辑清单来扩展虚拟机磁盘 PVC 复制链接链接已复制到粘贴板!
先决条件
-
已安装 OpenShift CLI(
oc)。
流程
编辑您要扩展的虚拟机磁盘的
PersistentVolumeClaim清单:$ oc edit pvc <pvc_name>更新磁盘大小:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vm-disk-expand spec: accessModes: - ReadWriteMany resources: requests: storage: 3Gi1 # ...- 1
- 指定新磁盘大小。
9.16.2.2. 通过添加空白数据卷来扩展可用虚拟存储 复制链接链接已复制到粘贴板!
您可以通过添加空白数据卷来扩展虚拟机的可用存储。
先决条件
- 您必须至少有一个持久性卷。
-
已安装 OpenShift CLI(
oc)。
流程
如以下示例所示创建
DataVolume清单:apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: blank-image-datavolume spec: source: blank: {} storage: resources: requests: storage: <2Gi>1 storageClassName: "<storage_class>"2 运行以下命令来创建数据卷:
$ oc create -f <blank-image-datavolume>.yaml
9.16.4. 将虚拟机磁盘迁移到不同的存储类 复制链接链接已复制到粘贴板!
您可以在不停止虚拟机或虚拟机实例(VMI)的情况下,将一个或多个虚拟磁盘迁移到不同的存储类。
9.16.4.1. 使用 Web 控制台将虚拟机磁盘迁移到不同的存储类 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台将附加到虚拟机(VM)的一个或多个磁盘迁移到不同的存储类。当在正在运行的虚拟机上执行此操作时,虚拟机的操作不会中断,迁移磁盘上的数据仍可以访问。
使用 OpenShift Virtualization Operator,您只能一次启动一个虚拟机的存储类迁移,虚拟机必须正在运行。如果您需要一次迁移更多虚拟机,或迁移运行和停止的虚拟机的组合,请考虑使用 Migration Toolkit for Containers (MTC)。
Migration Toolkit for Containers 不是 OpenShift Virtualization 的一部分,需要单独的安装。
先决条件
- 您必须具有数据卷或持久性卷声明(PVC)可用于存储类迁移。
- 集群必须具有可用于实时迁移的节点。作为存储类迁移的一部分,虚拟机将实时迁移到不同的节点。
- 虚拟机必须正在运行。
流程
-
在 web 控制台中进入到 Virtualization
VirtualMachines。 点虚拟机旁边的 Options 菜单
并选择 Migration Storage。 您还可以通过选择 Actions
Migration Storage,从 VirtualMachine 详情页访问这个选项。 或者,在树形视图中右键点虚拟机,然后从弹出菜单中选择 Migration。
- 在 Migration 详情页中,选择是否只迁移整个虚拟机存储或所选卷。如果点 Selected volumes,请选择您要迁移的任何磁盘。点 Next 继续。
- 在 Destination StorageClass 页中的可用选项列表中,选择要迁移到的存储类。点 Next 继续。
- 在 Review 页中,查看受影响的磁盘和目标存储类的列表。要启动迁移,请点 Migrate VirtualMachine storage。
- 停留在 Migrate VirtualMachine 存储页中,以观察进度并等待确认迁移成功完成。
验证
-
在 VirtualMachine 详情页中,进入到 Configuration
Storage。 - 验证所有磁盘在 Storage class 列中列出了预期的存储类。
9.16.5. 在实时虚拟机中插入 CD-ROM 复制链接链接已复制到粘贴板!
要在不重启虚拟机的情况下将存储设备附加到虚拟机(VM),您可以将虚拟机配置为使用虚拟 CD-ROM 驱动器,并在驱动器中插入 ISO 镜像。
这也使得可以从虚拟机中的 CD-ROM 安装操作系统。
在正在运行的虚拟机中插入和弹出 CD-ROM 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
9.16.5.1. 使用命令行在实时虚拟机中插入 CD-ROM 复制链接链接已复制到粘贴板!
要在 CD-ROM 存储设备上将数据提供给正在运行的虚拟机(VM),请在虚拟机中创建一个虚拟 CD-ROM 驱动器,并将 CD-ROM 作为 ISO 镜像插入到驱动器中。
设置虚拟 CD-ROM 驱动器需要重启虚拟机,但之后,您可以在虚拟机运行时在驱动器中插入和弹出 ISO 镜像。
在正在运行的虚拟机中插入和弹出 CD-ROM 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
先决条件
必须启用
DeclarativeHotplugVolumes功能门。为确保这一点,HyperConvergedCR 必须包含spec.featureGates配置部分中的declarativeHotplugVolumes: true行:apiVersion: hco.kubevirt.io/v1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: featureGates: declarativeHotplugVolumes: true必须禁用
HotplugVolumes功能门。使用临时卷需要这个功能门,但与DeclarativeHotplugVolumes不兼容。apiVersion: hco.kubevirt.io/v1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: featureGates: HotplugVolumes: false- 集群中有 CD-ROM 的 ISO 镜像。
流程
运行以下命令来编辑您要插入 CD-ROM 的虚拟机配置:
$ oc edit vm <vm-name> -n <namespace>其中:
-
<vm-name>是虚拟机的名称 -
<namespace>是包含虚拟机的项目命名空间的名称
-
将
cdrom磁盘添加到虚拟机配置的spec.template.spec.domains.devices.disks部分。例如:apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm spec: runStrategy: Always template: spec: domain: devices: disks: - cdrom: bus: sata name: cdrom- 如果虚拟机正在运行,请将其关闭。
在虚拟机配置的
spec.template.spec.volumes部分中插入 CD-ROM 卷。例如:apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm spec: template: spec: volumes: - dataVolume: name: cdrom-example hotpluggable: true name: cdrom您可以在虚拟机运行时以这种方式插入 CD-ROM,但 dataVolume 必须设置
hotpluggable: true参数。- 可选:在客户端操作系统中,验证是否已检测到 CD-ROM。
-
可选:弹出 CD-ROM 卷。为此,请从虚拟机配置的
spec.template.spec.volumes部分中删除cdrom卷。您可以在虚拟机运行时执行此操作。
9.16.5.2. 使用 Web 控制台在实时虚拟机中插入 CD-ROM 复制链接链接已复制到粘贴板!
要在 CD-ROM 存储设备上将数据提供给正在运行的虚拟机(VM),请在虚拟机中创建一个虚拟 CD-ROM 驱动器,并将 CD-ROM 作为 ISO 镜像插入到驱动器中。
设置虚拟 CD-ROM 驱动器需要重启虚拟机,但您可以在虚拟机运行时在驱动器中插入和弹出 ISO 镜像。
在正在运行的虚拟机中插入和弹出 CD-ROM 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
先决条件
必须启用
DeclarativeHotplugVolumes功能门。为确保这一点,HyperConvergedCR 必须包含spec.featureGates配置部分中的declarativeHotplugVolumes: true行:apiVersion: hco.kubevirt.io/v1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: featureGates: declarativeHotplugVolumes: true必须禁用
HotplugVolumes功能门。使用临时卷需要这个功能门,但与DeclarativeHotplugVolumes不兼容。apiVersion: hco.kubevirt.io/v1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: featureGates: HotplugVolumes: false
流程
-
在 OpenShift Container Platform web 控制台中进入 Virtualization
VirtualMachines。 - 点您要在其中插入 CD-ROM 的虚拟机的名称。
- 在 VM 详情页上,点 Configuration 选项卡。
- 打开 Storage 窗格。
点击 Add。
此时会打开一个下拉菜单。
- 点 CD-ROM。
- 在 Name 字段中,为 CD-ROM 驱动器设备添加名称。
选择要作为 CD-ROM 卷添加到驱动器中的 ISO 镜像。要做到这一点,点下拉菜单,然后从集群中可用的卷中进行选择。
或者,您可以上传新的 ISO 文件,并在创建后将其插入到 CD-ROM 驱动器中。要做到这一点:
- 确保选中 Upload a new ISO file to the cluster 行。
- 在 Upload ISO 字段中拖放 ISO 文件,或者点 Upload 并选择您要上传的 ISO 镜像。
- 在 Upload mode 字段中,选择 Mount uploaded ISO as DataVolume。
点击 Add。
CD-ROM 驱动器被添加到存储列表中。
- 如果虚拟机正在运行,请关闭或重启它。
-
要将附加到 CD-ROM 驱动器的 ISO 文件作为 CD-ROM 卷插入虚拟机,请点 CD-ROM 驱动器旁的 Options 菜单
,然后点 Inject。您可以在虚拟机运行时执行此操作。
- 可选:在客户端操作系统中,验证是否已检测到 CD-ROM。
-
可选: 要从虚拟机弹出 CD-ROM,请点 web 控制台中的 CD-ROM 设备 旁边的 Options 菜单
,然后选择 Eject。您可以在虚拟机运行时执行此操作。