6.14. VM 磁盘
6.14.1. 热插虚拟机磁盘
您可以在不停止虚拟机(VM)或虚拟机实例(VMI)的情况下添加或删除虚拟磁盘。
只有数据卷和持久性卷声明 (PVC) 才能热插和热拔。您无法热插或热拔容器磁盘。
即使重启后,热插拔磁盘仍会保留给虚拟机。您必须分离磁盘才能从虚拟机中删除它。
您可以使热插磁盘持久保留,使其永久挂载在虚拟机上。
每个虚拟机都有一个 virtio-scsi
控制器,以便热插磁盘可以使用 scsi
总线。virtio-scsi
控制器克服了 virtio
的限制,同时保持其性能优势。它高度可扩展,支持超过 400 万个磁盘的热插拔。
常规 virtio
不适用于热插磁盘,因为它不可扩展。每个 virtio
磁盘都使用虚拟机中的一个有限的 PCI Express (PCIe) 插槽。PCIe 插槽也被其他设备使用,必须提前保留。因此,插槽可能按需提供。
6.14.1.1. 使用 Web 控制台热插和热拔磁盘
您可以使用 OpenShift Dedicated web 控制台在虚拟机运行时将其附加到虚拟机(VM)来热插磁盘。
热插磁盘会附加到虚拟机,直到您拔出为止。
您可以使热插磁盘持久保留,使其永久挂载在虚拟机上。
先决条件
- 您必须至少有一个数据卷或持久性卷声明(PVC)可用于热插。
流程
-
在 web 控制台中进入到 Virtualization
VirtualMachines。 - 选择一个正在运行的虚拟机来查看其详情。
-
在 VirtualMachine 详情页面中,点 Configuration
Disks。 添加热插磁盘:
- 点 Add disk。
- 在 Add disk (hot plugged) 窗口中,从 Source 列表中选择磁盘,然后点 Save。
可选: 热插磁盘:
- 点磁盘 旁边的选项菜单,然后选择 Detach。
- 单击 Detach。
可选:使热插磁盘持久:
- 点磁盘旁的选项菜单 并选择 Make persistent。
- 重启虚拟机以应用更改。
6.14.1.2. 使用命令行热插和热拔磁盘
您可以使用命令行在虚拟机 (VM) 运行时热插和热拔磁盘。
您可以使热插磁盘持久保留,使其永久挂载在虚拟机上。
先决条件
- 您必须至少有一个数据卷或持久性卷声明(PVC)可用于热插。
流程
运行以下命令来热插磁盘:
$ virtctl addvolume <virtual-machine|virtual-machine-instance> \ --volume-name=<datavolume|PVC> \ [--persist] [--serial=<label-name>]
-
使用可选
--persist
标志,将热插磁盘作为永久挂载的虚拟磁盘添加到虚拟机规格中。停止、重新启动或重新启动虚拟机以永久挂载虚拟磁盘。指定--persist
标志后,您无法再热插或热拔虚拟磁盘。Persist
标志适用于虚拟机,不适用于虚拟机实例。 -
可选
--serial
标志允许您添加您选择的字母数字字符串标签。这有助于您识别客户机虚拟机中的热插磁盘。如果没有指定这个选项,则标签默认为热插数据卷或 PVC 的名称。
-
使用可选
运行以下命令来热拔磁盘:
$ virtctl removevolume <virtual-machine|virtual-machine-instance> \ --volume-name=<datavolume|PVC>
6.14.2. 扩展虚拟机磁盘
您可以通过扩展磁盘的持久性卷声明(PVC)来增加虚拟机(VM)磁盘的大小。
如果您的存储供应商不支持卷扩展,您可以通过添加空白数据卷来扩展虚拟机的可用虚拟存储。
您不能缩小虚拟机磁盘的大小。
6.14.2.1. 扩展虚拟机磁盘 PVC
您可以通过扩展磁盘的持久性卷声明(PVC)来增加虚拟机(VM)磁盘的大小。
如果 PVC 使用文件系统卷模式,磁盘镜像文件会扩展到可用大小,同时为文件系统开销保留一些空间。
流程
编辑您要扩展的虚拟机磁盘的
PersistentVolumeClaim
清单:$ oc edit pvc <pvc_name>
更新磁盘大小:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vm-disk-expand spec: accessModes: - ReadWriteMany resources: requests: storage: 3Gi 1 # ...
- 1
- 指定新磁盘大小。
6.14.2.2. 通过添加空白数据卷来扩展可用虚拟存储
您可以通过添加空白数据卷来扩展虚拟机的可用存储。
先决条件
- 您必须至少有一个持久性卷。
流程
如以下示例所示创建
DataVolume
清单: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
数据卷的其他资源