GlusterFSのdisperseを試す(その2)

とりあえずxattrsが云々というからにはzfsはダメだろうから、UFS on ZVOLな構成で続けてみた。
まだ道のりは長そう。

相変わらずマウントできないなーと思って3ノードのログを見比べていたらこんなものを見つけた。
タイミングとしてはgluster volume createであろう。

[2016-01-12 17:51:18.413120] E [client-handshake.c:1496:client_query_portmap_cbk] 0-gv0-client-2: failed to get the port number for remote subvolume. Please run 'gluster volume status' on server to see if brick process is running.

3台のうちある1台でだけ出ていて、これのせいかxattrsがbrickに設定されず、最終的に0-gv0-disperse-0: Mismatching xdata in answers of 'LOOKUP'に至っているものと推測。

下手な検索を何度かして、これにたどり着いた。

Bug 894556 – Failed to get the port number for remote subvolume error when starting a volume for the first time.

またBugですかいな。WORKSFORMEでCloseされてるけど。
NFS ServerとBrickのrace conditionだと言われてる。ということは、もしかして先にダミーのVolumeを作っておけばいい?

# gluster volume create dummy 10.0.0.1:/glusterfs-data/dummy 10.0.0.2:/glusterfs-data/dummy 10.0.0.3:/glusterfs-data/dummy
# gluster volume create disperse gv0 10.0.0.1:/glusterfs-data/dummy 10.0.0.2:/glusterfs-data/dummy 10.0.0.3:/glusterfs-data/dummy

これで先のエラーは出なくなった。WORKSFORMEじゃないよ、raceだってわかってるんだから直しなよ……。

で、これでも動かなかったので少し調べたら、rpcbindの設定が一台だけ間違っていた。恥ずかしい。
一台だけ、しかもこのマシンがucarpのMASTERを取ってて、以下の設定を追加してた。
これを外すことでとりあえずは解決。

rpcbind_flags="-h 10.0.0.127"

これでマウントして読み書きできるようになった。
できるが、書き込み中に一台のノードをぶっちぎったらエラーを山ほど吐きっぱなしになって復旧しなくなった。

[2016-01-15 01:01:54.466105] W [ec-combine.c:76:ec_iatt_combine] 0-gv0-disperse-0: Failed to combine iatt (inode: 11735403145588290470-11735403145588290470, links: 1-1, uid: 0-0, gid: 0-0, rdev: 322123661424-571232551144, size: 148176896-148209664, mode: 100644-100644)
[2016-01-15 01:01:54.466154] N [ec-generic.c:819:ec_combine_lookup] 0-gv0-disperse-0: Mismatching iatt in answers of 'GF_FOP_LOOKUP'
[2016-01-15 01:01:54.466169] W [ec-common.c:162:ec_check_status] 0-gv0-disperse-0: Operation failed on some subvolumes (up=7, mask=7, remaining=0, good=5, bad=2)
[2016-01-15 01:01:54.466222] E [ec-helpers.c:400:ec_loc_setup_path] 0-gv0-disperse-0: Invalid path '' in loc
[2016-01-15 01:01:54.466252] W [ec-common.c:121:ec_heal_report] 0-gv0-disperse-0: Heal failed (error 12)
[2016-01-15 01:01:54.466284] E [ec-helpers.c:400:ec_loc_setup_path] 0-gv0-disperse-0: Invalid path '' in loc
[2016-01-15 01:01:54.466333] I [dht-layout.c:663:dht_layout_normalize] 0-gv0-dht: Found anomalies in  (gfid = ae930c59-e4ab-4142-a2dc-86fbeccab3a6). Holes=1 overlaps=0
[2016-01-15 01:01:54.466396] E [nfs3-helpers.c:3616:nfs3_fh_resolve_inode_lookup_cbk] 0-nfs-nfsv3: Lookup failed: : Input/output error
[2016-01-15 01:01:54.466415] E [nfs3.c:2148:nfs3_write_resume] 0-nfs-nfsv3: Input/output error: (10.33.4.177:631) gv0 : ae930c59-e4ab-4142-a2dc-86fbeccab3a6
[2016-01-15 01:01:54.466430] W [nfs3-helpers.c:3401:nfs3_log_common_res] 0-nfs-nfsv3: XID: 5408ef49, WRITE: NFS: 5(I/O error), POSIX: 14(Bad address)

というわけでさらに持ち越し。
いい加減動いて欲しい。