====== Troubleshooting ======
===== root partitionをブリックに指定すると、失敗する =====
> gluster volume create vol01 replica 2 transport tcp adm01:/mnt/addVol/gfs01/ adm02:/mnt/addVol/gfs01/
volume create: vol01: failed: The brick adm01:/mnt/addVol/gfs01 is is being created in the root partition.
It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the
end of the command if you want to override this behavior.
メッセージに書かれている通り、「force」オプションを指定すれば良い
> gluster volume create vol01 replica 2 transport tcp adm01:/mnt/addVol/gfs01/ adm02:/mnt/addVol/gfs01/ force
volume create: vol01: success: please start the volume to access data
===== ReplicaVolを構成しているノードが壊れた場合 =====
adm01/02の2つのノードでReplicaVolumeを作成した環境の健康な状態
> gluster vol status
Status of volume: vol01
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick adm01:/mnt/addVol/gfs01 49152 Y 2554
Brick adm02:/mnt/addVol/gfs01 49152 Y 2507
NFS Server on localhost 2049 Y 2566
Self-heal Daemon on localhost N/A Y 2567
NFS Server on adm02 N/A N N/A
Self-heal Daemon on adm02 N/A N N/A
There are no active volume tasks
不健康な(amd02に異常が起った)状態
> gluster vol status
Status of volume: vol01
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick adm01:/mnt/addVol/gfs01 49152 Y 2554
NFS Server on localhost 2049 Y 2566
Self-heal Daemon on localhost N/A Y 2567
There are no active volume tasks
==== 壊れたノードを削除する ====
ボリュームからブリックを外す
> gluster volume remove-brick vol01 replica 1 adm02:/mnt/addVol/gfs01/
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit force: success
peerからノードを外す
> gluster peer detach adm02
peer detach: success
==== 新しいノードを追加する ====
peerにノード登録
> gluster peer probe adm02
peer probe: success
ボリュームにブリック追加
> gluster volume add-brick vol01 replica 2 adm02:/mnt/addVol/gfs01/ force
volume add-brick: success
==== レプリケーション再構築 ====
> gluster vol heal vol01 full
Launching Heal operation on volume vol01 has been successful
Use heal info commands to check status
===== ブリック追加できない =====
==== ブリック追加しようとするとfaliled ====
> gluster volume add-brick vol01 replica 2 adm02:/mnt/addVol/gfs01/
volume add-brick: failed:
==== ログを見ても大した情報がない ====
[2014-04-08 01:38:03.178829] W [rpc-transport.c:175:rpc_transport_load] 0-rpc-transport: missing 'option transport-type'. defaulting to "socket"
[2014-04-08 01:38:03.182308] I [socket.c:3480:socket_init] 0-glusterfs: SSL support is NOT enabled
[2014-04-08 01:38:03.182423] I [socket.c:3495:socket_init] 0-glusterfs: using system polling thread
[2014-04-08 01:38:03.254488] I [cli-rpc-ops.c:1695:gf_cli_add_brick_cbk] 0-cli: Received resp to add brick
[2014-04-08 01:38:03.254575] I [input.c:36:cli_batch] 0-: Exiting with: -1
==== 追加される側で追加してみる ====
> gluster volume add-brick vol01 replica 2 adm02:/mnt/addVol/gfs01/ force
volume add-brick: failed: /mnt/addVol/gfs01 or a prefix of it is already part of a volume
過去にどこかのブリックに追加されていたために、拡張情報が存在している。
ブリックの再利用が問題なければ、拡張情報を削除する。
==== 拡張情報の削除 ====
有志で公開されている簡単削除のスクリプトを利用する。
> vi cleanbrick.sh
#!/bin/sh
if [[ ! -d $1 ]]; then
echo "usage: $0 <brickdir>"
exit 1
fi
getfattr -m . $1 2> /dev/null |
grep -E '^trusted\.(glusterfs|gfid|afr|dht|hsrepl)' |
while read xa; do
echo "removing $xa on $1"
setfattr -x $xa $1
done
echo "removing $1/.glusterfs"
rm -rf $1/.glusterfs
> ./cleanbrick.sh /mnt/addVol/gfs01