了解群集共享卷的体系结构和组件
在实现和使用 CSV 时,了解其体系结构和组件非常重要。
CSV 体系结构
CSV 包含映射到每个群集节点上 C:\ClusterStorage\ 目录中的子目录的共享卷。 此方法提供一个命名空间,所有 CSV 内容都可以通过群集中任何节点上的相同名称和路径使用。
注意
CSV 卷管理器是 CSV 文件系统堆栈中的一个软件组件,负责将 CSV 卷作为 C:\ClusterStorage\ 目录中的子目录公开。
CSV 文件系统堆栈的一个关键模块是 CSV 卷管理器。 这是确保 CSV 作为本地卷显示的驱动程序。 在下图中,存储池中的每个卷都有自己的文件系统目录。 例如,C:\ClusterStorage\Volume 1 文件夹映射到 Volume1。
虽然每个节点都可以独立读取和写入卷上的各个文件,但单个节点充当该卷的 CSV 所有者(或协调器)。 该节点托管卷的装载。 你可以选择将单个卷分配给特定的所有者,但是,故障转移群集会自动在群集节点之间分发 CSV 所有权。 分发机制考虑每个节点拥有的 CSV 数。 群集服务会在添加、删除或重启节点等更改后重新均衡所有权。
注意
故障转移群集管理器在“磁盘”面板中将 CSV 卷的协调器节点标记为“所有者节点”。 这也是显示在 Get-ClusterSharedVolume
Windows PowerShell cmdlet 的输出中的名称。
在 CSV 卷上对文件系统元数据进行更改时,所有者负责实施这些更改、管理业务流程,并在有权访问该卷的所有群集节点中同步它们。 这些更改包括启动、创建、迁移或删除磁盘文件位于卷上的 VM 等。 所有者使用其 NTFS 或 ReFS 堆栈应用更改,并依赖 SMB 3.x 将它们复制到与基础存储建立连接的其他群集节点。 元数据更改不涉及从非所有者群集节点到托管卷的共享存储的直接通信,如下图所示。
另一方面,打开 CSV 卷上的文件的标准写入和读取操作不会影响元数据。 实际上,与基础存储建立连接的每个群集节点都可以独立执行这些操作,而无需依赖该卷的 CSV 所有者。 与元数据更新不同,此类操作构成了绝大多数存储活动。 直接 I/O 会绕过卷堆栈(包含 NTFS 或 ReFS 特定组件)并直接到达基础存储。 因此,CSV 体系结构优化了 I/O 性能,同时仍然保留了文件系统的完整性。
所有者节点还将存储连接失败和阻止给定节点直接与存储通信的存储操作的负面影响降到最低。 在发生此类事件时,需要与基础存储通信的节点通过群集网络将磁盘 I/O 重定向到对应卷的所有者节点。 如果当前协调器节点遇到存储连接故障,所有磁盘 I/O 操作都会暂时排队,而群集会自动将协调器角色分配给新节点。
CSV 支持两种 I/O 重定向模式,具体取决于触发从直接模式进行切换的事件类型:
文件系统重定向。 当第三方备份应用程序执行 CSV 卷的快照时,可能会发生这种情况。 在这种情况下,会在文件系统级别进行重定向。 I/O 操作会遍历原始节点上的 CSVFS,并通过 SMB 到达所有者节点。 在那里,它们通过 NTFS 或 ReFS 文件系统堆栈到达目标磁盘,这类似于元数据更新的路径。 下图演示了此场景。 节点 1 表示在文件系统重定向模式下操作的群集节点。 节点 2 充当节点所有者角色。
块重定向。 当节点与卷失去连接时会发生这种情况,但是卷仍保持联机状态。 重定向在块级别发生。 在这种情况下,I/O 操作也会遍历原始节点上的 CSVFS,并通过 SMB 传输到所有者节点。 但是,它们像直接 I/O 一样会绕过所有者节点上的 NTFS 或 ReFS 堆栈,这会显著提高其性能。 下图演示了此场景。 与之前一样,节点 1 表示在文件系统重定向模式下操作的群集节点。 节点 2 充当节点所有者角色。
注意
可以通过使用 Get-ClusterSharedVolumeState
Windows PowerShell cmdlet 来标识每个节点的 CSV 卷的状态,包括其 I/O 重定向模式和原因。
重定向的 I/O 流量可在多个群集网络之间传递,这得益于 CSV 与 SMB 3.x 功能(如 SMB 多通道和 SMB 直通)的集成。