7.15. VM 磁盘
7.15.1. 热插虚拟机磁盘
您可以在不停止虚拟机(VM)或虚拟机实例(VMI)的情况下添加或删除虚拟磁盘。
只有数据卷和持久性卷声明 (PVC) 才能热插和热拔。您无法热插或热拔容器磁盘。
热插磁盘在重新引导后仍会附加到虚拟机。您必须分离磁盘才能从虚拟机中删除它。
您可以使热插磁盘持久保留,使其永久挂载在虚拟机上。
每个虚拟机都有一个 virtio-scsi
控制器,以便热插磁盘可以使用 scsi
总线。virtio-scsi
控制器克服了 virtio
的限制,同时保持其性能优势。它高度可扩展,支持超过 400 万个磁盘的热插拔。
常规 virtio
不适用于热插磁盘,因为它不可扩展。每个 virtio
磁盘都使用虚拟机中的一个有限的 PCI Express (PCIe) 插槽。PCIe 插槽也被其他设备使用,必须提前保留。因此,插槽可能按需提供。
7.15.1.1. 使用 Web 控制台热插和热拔磁盘
您可以使用 OpenShift Container Platform web 控制台在虚拟机运行时将其附加到虚拟机 (VM) 来热插磁盘。
热插磁盘会附加到虚拟机,直到您拔出为止。
您可以使热插磁盘持久保留,使其永久挂载在虚拟机上。
先决条件
- 您必须至少有一个数据卷或持久性卷声明(PVC)可用于热插。
流程
-
在 web 控制台中进入到 Virtualization
VirtualMachines。 - 选择一个正在运行的虚拟机来查看其详情。
-
在 VirtualMachine 详情页面中,点 Configuration
Disks。 添加热插磁盘:
- 点 Add disk。
- 在 Add disk (hot plugged) 窗口中,从 Source 列表中选择磁盘,然后点 Save。
可选: 热插磁盘:
- 点磁盘 旁边的选项菜单,然后选择 Detach。
- 单击 Detach。
可选:使热插磁盘持久:
- 点磁盘旁的选项菜单 并选择 Make persistent。
- 重启虚拟机以应用更改。
7.15.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>
7.15.2. 扩展虚拟机磁盘
您可以通过扩展磁盘的持久性卷声明(PVC)来增加虚拟机(VM)磁盘的大小。
如果您的存储供应商不支持卷扩展,您可以通过添加空白数据卷来扩展虚拟机的可用虚拟存储。
您不能缩小虚拟机磁盘的大小。
7.15.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
- 指定新磁盘大小。
7.15.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
数据卷的其他资源