在不关闭实例的情况下调整云VM磁盘的大小(Google cloud)

时间:2018-11-11 11:06:48

标签: google-compute-engine nfs disk

因此,我看到谷歌计算中有一个选项(我假设其他云VM供应商中存在相同的选项,因此问题不是专门针对谷歌计算,而是基于底层技术),无需重新启动计算机即可调整磁盘大小,我问这怎么可能?

即使在guest虚拟机中创建了磁盘后,即使它实际上对磁盘使用了某种抽象并且他们并未将物理磁盘实际分配给VM,也只是磁盘的一部分(或部分磁盘数量) VM具有一定大小,如何在不重新启动的情况下进行更改?它会以某种方式利用NFS吗?

1 个答案:

答案 0 :(得分:3)

这几天直接将其内置到磁盘协议中。自从1990年代末以来就已经对磁盘进行了虚拟化(通过诸如iSCSI / FibreChannel之类的网络协议,或者通过诸如VMware之类的软件仿真硬件),这种功能已经存在了一段时间。

与VMware模型一样,GCE不需要任何其他网络跃点或协议即可完成此操作;虚拟机管理程序仅将虚拟磁盘公开为物理设备,而来宾知道虚拟磁盘的大小可以更改并进行处理。 GCE在其磁盘上使用了一种特定于虚拟化的驱动程序类型,称为VirtIO SCSI,但该功能也可以在许多其他驱动程序类型(跨许多操作系统)中实现。


由于可以随时调整磁盘大小,因此磁盘协议需要一种方法来告知客户机已发生更新。一般而言,在大多数协议中,其工作原理如下:

  • 管理员通过虚拟机管理程序UI(或他们使用的任何存储虚拟化UI)调整磁盘大小。
  • 来宾内部不会发生任何事件,直到向磁盘发出IO为止。
  • 来宾操作系统通过来宾操作系统中的设备驱动程序向磁盘发出IO命令。
  • 管理程序模拟IO命令,注意到磁盘已调整大小并且尚未向来宾发出警报,并向来宾返回响应,告诉来宾更新设备视图。
  • 来宾操作系统识别出此响应,并通过其他命令重新查询设备大小和其他详细信息。

我不确定100%,但是我相信它的结构之所以如此,是因为传统上磁盘无法将更新发送到操作系统,除非操作系统先请求它们。这可能是因为磁盘无法知道有多少空闲内存可以写入,即使这样做,也无法将对内存的访问与OS同步。但是,启用超高吞吐量/超低延迟SSD和NVRAM的限制变得越来越不真实,因此诸如NVMe之类的新磁盘协议在执行此操作时可能会略有不同(我不知道)。