一则 gfs2 集群文件系统无法挂载的解决案例

  • A+
所属分类:排错 数据存储
  • 本文源自 互联网, 于2018-02-0317:13:24,由 整理发表,共 2604 字。
摘要--原始发布时间:2014-02-01

在使用 cman + gfs2 方案时,无法挂载文件系统,日志如下:
dlm_controld.log 日志信息:dlm_controld fenced_domain_info error -1

使用 cman + gfs2 方案时,无法挂载文件系统,日志如下:

dlm_controld.log 日志信息

    10:22:49 dlm_controld fenced_domain_info error -1

message 日志信息

    10:11:08 h4-61 kernel: GFS2: fsid=: Trying to join cluster "lock_dlm", "cluster:fs"
    10:11:08 h4-61 kernel: dlm: Using TCP for communications

fenced.log 日志信息

    10:25:26 fenced fencing node node3    10:25:26 fenced fence node3 dev 0.0 agent none result: error no method

用strace 查看 dlm_controld 的系统调用,发现一直循环出现下面的信息

    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "51
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
 
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
\) = 32     read(22, "51
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
    socket(PF_FILE, SOCK_STREAM, 0)         = 22
    connect(22, {sa_family=AF_FILE, path=@"fenced_query_sock"}, 20) = 0
    write(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0 \0\) = 32
    read(22, "\355\34\341\17\1\0\1\0\6\0\0\0\0\0\0\0008) = 56
    close(22)                               = 0
    poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)
08) = 56     close(22)                               = 0     poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, ) = 0 (Timeout)

查阅了相关资料后,最终才发现是 分布式锁 dlm 的问题,加入下面参数到 cluster.conf中,问题解决

    <dlm enable_fencing="0"/>

原来dlm_controld一直在等待fencing,而目前集群中没有配置fencing设备,所以导致了文件系统无法挂载

修改后,最终结果如下:

message 日志信息

    10:23:32 kernel: GFS2: fsid=: Trying to join cluster "lock_dlm", "cluster:fs"
    10:23:32 kernel: dlm: Using TCP for communications    10:23:32 kernel: GFS2: fsid=cluster:fs.0: Joined cluster. Now mounting FS...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=0, already locked for use
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=0: Looking at journal...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=0: Done
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=1: Trying to acquire journal lock...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=1: Looking at journal...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=1: Done
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=2: Trying to acquire journal lock...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=2: Looking at journal...
    10:23:32 kernel: GFS2: fsid=cluster:fs.0: jid=2: Done

dlm_controld.log 日志信息

    10:11:08 dlm_controld uevent: add@/kernel/dlm/fs    10:11:08 dlm_controld kernel: add@ fs    10:11:08 dlm_controld uevent: online@/kernel/dlm/fs    10:11:08 dlm_controld kernel: online@ fs    10:11:08 dlm_controld dlm:ls:fs conf 1 1 0 memb 1 join 1 left    10:11:08 dlm_controld fs add_change cg 1 joined nodeid 1
    10:11:08 dlm_controld fs add_change cg 1 we joined    10:11:08 dlm_controld fs add_change cg 1 counts member 1 joined 1 remove 0 failed 0

ok, 问题顺利解决

附: 其他有用的 dlm 相关参数

protocol

通信协议可以为:tcp, sctp, detect which

协议的选择和 rrp_mode 相关,如果为none,则使用tcp

默认值 detect

    <dlm protocol="detect"/>

enable_fencing

encing恢复依赖性开关,默认开启

    <dlm enable_fencing="1"/>

enable_quorum

quorum恢复依赖性开关,默认关闭

    <dlm enable_quorum="0"/>

enable_deadlk

死锁检测开关,默认关闭

    <dlm enable_deadlk="0"/>

参考资料

dlm_controld man page

天使

发表评论

您必须登录才能发表评论!