6.5. 使用 GFS2 锁定转储对 GFS2 性能进行故障排除


如果由于使用 GFS2 缓存而导致集群性能增加,您可能会看到大量和增长的 I/O 等待时间。您可以使用 GFS2 的锁转储信息来确定问题的原因。

GFS2 锁转储信息可以从 debugfs 文件中收集,该文件可在以下路径名称中找到,假设 debugfs 被挂载到 /sys/kernel/debug/

/sys/kernel/debug/gfs2/fsname/glocks
Copy to Clipboard Toggle word wrap

文件的内容是一系列行。每行以 G 开头: 表示一个 glock,后面的行缩进一个空格,代表文件中紧靠它们前面的一项与 glock 相关的信息。

使用 debugfs 文件的最佳方法是,在应用程序遇到问题时使用 cat 命令获得一份文件完整内容的副本(如果您有大量 RAM 和大量缓存的 inode,则可能需要很长时间),然后在以后查看得到的数据。

注意

创建 debugfs 文件的两个副本会很有用,一个副本需要几秒钟甚至一两分钟。通过比较与同一个 glock 号相关的两个跟踪中的持有者信息,您可以判断工作负载是否有进展(只是缓慢)或者它是否被卡住(这一直是一个 bug,应该立即报告给红帽支持)。

debugfs 文件中以 H 开头的行:(持有者)代表锁请求已授权或等待授权。持有者行 f 上的 flags 字段:显示什么:'W' 标志指的是等待请求,"H"标记指的是已授予的请求。有大量等待请求的 glock 可能是正在经历特殊竞争的请求。

下表显示了 glock 标记和 glock 持有者标记的含义。

Expand
表 6.1. Glock 标记
标志名称含义

b

Blocking

当设置了 locked 标记时有效,并指示可能会阻止来自 DLM 请求的操作。对于演示操作和"try"锁定,这个标记会被清除。这个标志的目的是允许收集 DLM 响应时间的统计数据,与其他节点与降级锁无关。

d

Pending demote

推迟(远程)降级请求

D

Demote

降级请求(本地或者远程)

f

Log flush

释放这个 glock 前需要提交该日志

F

Frozen

回复忽略的远程节点 -- 恢复正在进行。这个标志与文件系统冻结无关,它使用不同的机制,但仅在恢复中使用。

i

Invalidate in progress

这个 glock 下无效页面的进程中

I

Initial

设定何时将 DLM 锁定与这个 glock 关联

l

Locked

这个 glock 处于更改状态中

L

LRU

glock 出现在 LRU 列表中时设置

o

Object

设置 glock 何时与对象关联(即类型为 2 glocks 的内节点,以及类型为 3 的 glock 的资源组)

p

Demote in progress

glock 正在响应降级请求

q

Queued

设定当拥有者排队到 glock 时,并在 glock 保留时清除,但没有剩余所有者。作为算法的一部分使用,计算 glock 的最小保留时间。

r

Reply pending

从远程节点接收的回复正在等待过程中

y

Dirty

释放这个 glock 前需要冲刷到磁盘中的数据

Expand
表 6.2. Glock 拥有者标记
标志名称含义

a

Async

不要等待 glock 结果(以后轮询结果)

A

Any

接受任意兼容锁定模式

c

No cache

取消锁定时,立即降级 DLM 锁定

e

No expire

忽略随后的锁定取消请求

E

exact

必须有准确的锁定模式

F

First

设定赋予这个锁定的第一个拥有者

H

Holder

表示赋予请求的锁定

p

Priority

在队列头启用 ENQUEUE 拥有者

t

Try

"try" 锁定

T

Try 1CB

发送回调的 "try" 锁定

W

Wait

等待请求完成的设置

在确定了导致问题的 glock 后,下一步就是找出与其相关的 inode 。glock 号(n: 在 G:行上)表示这个。它是格式 type/number,如果 type 为 2,则 glock 是一个内节点 glock,number 是一个内节点号。要跟踪 inode ,您可以运行 find -inum number,其中 number 是 glocks 文件中从十六进制格式转换为十进制格式的 inode 号。

警告

如果您在正在经历锁竞争的文件系统上运行 find 命令,您可能会使问题更糟。当您查找竞争的 inode 时,最好在运行 find 命令前停止应用程序。

下表显示了不同 glock 类型的含义。

Expand
表 6.3. Glock 类型
类型号锁定类型使用

1

Trans

事务锁定

2

Inode

内节点元数据和数据

3

Rgrp

源组群元数据

4

Meta

超级块

5

Iopen

内节点最近探测

6

Flock

flock(2)syscall

8

Quota

配额操作

9

Journal

Journal mutex

如果识别出的 glock 是不同的类型,那么最可能是类型 3(资源组)。如果您在正常负载时看到大量进程正在等待其它 glock 类型,请向红帽支持提交报告。

如果您看到在资源组锁定中排队了大量等待的请求,,那么可能有很多原因。一个原因可能是,在文件系统中,相对于资源组有大量的节点。另一个可能的原因是,文件系统可能接近完全被使用(平均来讲,需要较长的搜索时间)通过添加更多存储并使用 gfs2_grow 命令扩展文件系统来改善这两种情况。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat