0

我看到了以下讨论并有一些问题: live resize of a NVMe drive

如果 nvme 设备的物理容量发生变化(例如,从 10GB 到 20GB),操作系统如何在不重新启动的情况下检测到它?

在上面的链接中,重新扫描 pci 总线是解决方案。

当执行重新扫描时,操作系统是否要求 nvme 设备更新其元信息(例如,容量等)?

操作系统具体如何与磁盘交互?(如何从磁盘读取更改的设备参数,而不是内存中的旧设备参数?)

4

1 回答 1

0

这可能是一个 AWS 虚拟机,所以磁盘实际上是一个虚拟磁盘。您不能像物理升级其容量那样调整物理磁盘的大小(您需要更改磁盘)。

话虽如此,这台机器可能运行在 1 类管理程序之上。我对这些的理解是,虚拟机 (VM) 作为进程在最小操作系统(管理程序)之上的不同环上运行。当虚拟机执行特权指令时,它会触发保护故障,因此管理程序可以检查谁实际触发了故障(是来宾内核还是来宾内核中的用户模式进程?)。如果它是来宾内核,则它可以代表来宾执行该指令。否则,它可能会做真正内核会做的事情(触发异常)。它可以分辨出区别,因为来宾内核运行在与 ring 3(用户模式)不同的 ring 中。

话虽如此,NVME 设备不是 PCI,而是 NVME。NVME 驱动器的主控制器是 PCI。要重新扫描 NVME 驱动器,您将读/写一些内存映射到 RAM 中的寄存器,并询问 NVME PCI 主机控制器找到的不同磁盘的大小是多少。众所周知,PCI 在某些情况下是可热插拔的(类似于 USB),但大多数情况下不在消费类主板上。我认为当 PCI 设备热插拔时您不会受到任何中断,因此您需要重新扫描设备。

对于 NVME,在交换磁盘/更改大小时是否会收到中断取决于主机控制器。至于虚拟磁盘,它可能取决于很多不同的东西。您绝对可以在这里进行 PCI 重新扫描。我猜这取决于管理程序、操作系统和主机控制器配置。

于 2022-01-16T08:06:01.607 回答