Menu Close

2.7.2. 在可能的情况下,每个节点分配自己的文件

当为 GFS2 文件系统开发应用程序时,建议您在可能的情况下为每个节点分配它自己的文件。由于分布式锁管理器(DLM)的工作方式,如果所有文件都被一个节点分配,则有更多锁定竞争,而其他节点则需要向这些文件添加块。

过去,术语"锁 master"过去用于表示当前锁定请求的协调者,这些请求源自于本地或来自集群中的远程节点。锁定请求协调器的术语稍具误导,因为它实际上是一个资源(在 DLM 术语中),与锁定请求是排队、拒绝或拒绝的关系。在 DLM 中使用术语的意义上,应该使用 "first among equals",因为 DLM 是一个 peer-to-peer 系统。

在 Linux 内核 DLM 实现中,首先使用锁定的节点会成为锁定请求的协调器,此后它不会变化。这是 Linux 内核 DLM 的实现详情,而不是一般的 DLM 属性。将来的更新可能会允许协调特定锁定的锁定请求,以便在节点间移动。

协调锁定请求的位置对锁定请求的启动器是透明的,但对请求延迟的影响除外。当前实现的一个结果是,如果对初始工作负载造成不平衡的情况(例如,在其他人执行任何 I/O 命令前,通过整个文件系统进行一次节点扫描)可能会导致集群中其他节点的锁定延迟与执行文件系统初始扫描的节点进行比较。

与很多文件系统一样,GFS2 分配程序会尝试在同一文件中让块保持接近,以减少磁盘头的移动并提升性能。将块分配给文件的节点可能需要为新块使用和锁定同一资源组(除非该资源组中的所有块都被使用)。如果包含文件的资源组的锁定请求协调器分配其数据块(让首先打开该文件的节点更快)时,文件系统将更快运行。