2.3.2. 尽可能让每个节点分配其自身文件
由于分布式锁定管理器(DLM)的工作方式,如果所有文件都是由一个节点分配,而其他节点需要向那些文件中添加块,就会造成更多的锁定竞争。
在 GFS(版本 1)中,所有锁定都是由中央锁定管理器进行管理,其任务是控制整个集群的锁定。这就造成统一锁定管理器(GULM)可能会出问题,因为这是一个单点失败。GFS2 的替换锁定方案 DLM 是在整个集群中分布锁定。如果集群中的任意节点失败,其锁定会由其他节点恢复。
使用 DLM,第一个锁定资源(比如文件)的节点成为该节点的“主锁定”。其他节点可以锁定那个资源,但它们必须首先向主锁定要求授予权限。每个节点都知道哪个锁定是哪个节点的主锁定,且每个节点都知道它为哪个节点发放了锁定授权。锁定主节点中的锁比锁定其他节点中的锁要快得多,因为后者必须停止并请求主锁定的授权。
因为在很多文件系统中,GFS2 分配程序会尝试将同一文件中块放在一起以减少磁头的移动,并极大提高性能。将块分配到文件的节点很可能需要为新的块使用并锁定同一资源组(除非那个资源组中所有的块都在使用中)。如果锁定包含将其数据分配到数据块的资源组,则系统将运行更迅速(即如果您让首先打开该文件的节点执行所有新块写入操作,则系统运行会更迅速)。