当使用带有 nas 的 vmware 时,文件如何从一个 vm 复制到另一个 vm

当使用带有 nas 的 vmware 时,文件如何从一个 vm 复制到另一个 vm

编辑:根据 Zac67 的回答,编辑了我原来的问题,以澄清我所要求的内容

如果我在 vSphere 中有两个虚拟机,即虚拟机 A 和虚拟机 B,它们的虚拟硬盘位于同一个 NAS 上,我在它们之间复制一个文件,文件的字节是否会从 NAS 复制到虚拟机的硬件,然后再发送回虚拟机进行写入?我想知道 vmware 是否尝试进行任何类型的优化,如果它虚拟化了事务的所有硬件(在本例中为所有 NIC),它是否只会将字节从一个虚拟硬盘复制到另一个虚拟硬盘,而不会将字节发送到虚拟机 A 和虚拟机 B 正在运行的物理硬件上。

答案1

当文件从客户机复制到客户机时,主机只会看到磁盘操作和网络流量。

底层的“在虚拟机 A 上读取磁盘数据”和“在虚拟机 B 上写入磁盘数据”不能与网络流量相关 - 这需要主机详细了解和理解所有客户机操作。

NAS/存储也一样,某个地方有读取操作,而另一个地方有写入操作。这两个操作是否相关以及两者之间进行何种处理,已经远远超出了存储的范围。

理解实际发生情况的关键是思考层。每一层都有自己的用途,不需要关心其他层发生了什么。

本质上,每个客人已经实现了几层:

  • 复制数据的应用程序
  • DOS 处理文件打开、读取、文件创建和写入请求
  • 文件系统将这些请求映射到块存储
  • 块存储驱动程序将实际的读写请求交给(虚拟)磁盘硬件
  • SMB 客户端访问网络共享(假设是 Windows 客户机)
  • 中间网络层
  • 虚拟网卡发送和接收网络数据包

主机的作用是为虚拟机提供虚拟硬件(CPU、RAM、存储、NIC),这些硬件实际上与其他虚拟机共享,甚至可能在网络的其他地方实现(网络存储)。

编辑:使用存储 API 有所不同。但是,由于主机无法访问(也不理解)客户文件级别,因此您只能轻松地在 VMFS 级别复制文件。

在客户文件级别进行复制将涉及从客户机上卸载 VMDK、确定什么放到哪里(文件系统分析)、复制所需的块以及相应地调整目标文件系统(可能更容易暂时移动 VMDK)。

也许可以使用 API 直接复制所需的块,而不是通过 API 复制它(我不是开发人员)——这实际上可以指示 NAS 在没有主机干预的情况下进行复制。

相关内容