通过简单地使用连接到两个虚拟机的CSV上的Hyper-V Shared VHDX进行文件共享?
我正在testingSVHDX在我的环境中,我不能得到它的工作。 我们通过FCbuild立了故障转移群集和由SAN支持的CSV,我将SVHDX放在CSV上,并将该磁盘连接到两个虚拟机。 现在我在磁盘上有不一致性,因为我在VM1上保存了几个文件,在VM2上看不到它们,CHKDSK报告了错误。 我甚至可以在共享磁盘上创build具有相同名称的文件。
是。 您不能在多台计算机之间共享文件系统,除非文件系统明确地devise为这样。 因为计算机caching元信息并假定他们是所有者。
共享VHDX是块共享,而不是文件共享。
现在对于一个小题目,因为你离第一个问这个问题的人很远。 磁盘是块设备。 它通过响应诸如“读取块23971”和“写入块1082”的命令而工作。 文件系统是存储映射到块设备上的数据的一种方式。 当你写一个文件的时候,文件系统代码会在磁盘上find一些空闲的块,并把你的数据写入它们中。 对于这个讨论可能更重要的是,它将其他数据写到logging文件名的磁盘上,文件被保存在什么块中,谁可以访问文件等等。
如果两台不同的机器使用同一个块设备,他们需要协调他们的行为,否则他们会互相扯皮,每个人都认为他们会决定数据在磁盘上的位置,以及数据的位置是如何logging的。
所以,如果你想共享一个磁盘,最常见的方式就是把它交给一台计算机,让这台计算机拥有这个磁盘,通过networking文件系统(如NFS或SMB)与其他人共享。 所有其他计算机通过networking请求数据。 文件服务器拥有磁盘并对其进行pipe理。 客户端只能看到文件。 所有者(文件服务器)将文件映射到块上。
但是在less数情况下,您希望两台或更多台计算机直接使用块设备(磁盘)。 要做到这一点,你需要把这两台或者更多台电脑紧紧地连接在一起,以便他们协调行动。 这被称为“形成一个集群”。 然后你需要在磁盘上运行一个集群文件系统。 在没有任何第三方软件的情况下运行Windows时,群集文件系统的唯一select是CSVFS。 运行Linux或其他操作系统时,您还有其他select。
同样,我的build议是为您的任务使用文件服务器。 但是Shared VHDX的目的是允许一个虚拟机集群运行一个集群文件系统。
当您想要从两个虚拟机中构build一个SQL Server群集时,这主要是有用的(当Windows是guest虚拟机时),以便SQL本身具有高可用性。
或者,您可以使用Shared VHDX构build多虚拟机Windows文件服务器群集。 您可能会这样做,因为即使其中一台物理主机死亡,您也希望文件服务器群集可供其客户端使用。
如果没有共享的VHDX,如果环境中的一台物理主机死亡,这个假设的SQL或文件服务器集群将脱离networking一段时间。 如果主机本身是集群的,那么只要发生故障,VM就会在另一个节点上重新启动。 但从客户的angular度来看,会有一些停机时间。 (使用SQL Server,仍然会有一些停机时间,但是客户端可以pipe理它,使用文件服务器集群,可以使客户端只要运行SMB 3.0或更高版本,就可以实现自动故障转移并且不要删除连接。)