====== 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