glusterfs でvolumeが削除できなくなってて迷走 | no news.

glusterfs でvolumeが削除できなくなってて迷走

ひさびさにglusterfsをいじったらなんかおかしなことになってた。
マウントは問題なさそうなんだけど、実際に中身を見るとエラーになる。

# mount -t glusterfs 192.168.89.30:/test /mnt/test/
# mount | grep test
192.168.89.30:/test on /mnt/test type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
# ls /mnt/test
ls: cannot access /mnt/test: Transport endpoint is not connected
#

面倒くさいからvolumeを作りなおそうと思って削除しようと思い停止しようとしたら。

# gluster volume stop test
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
Volume test is not in the started state
#

あ、start状態じゃないの?じゃあ削除で。

# gluster volume delete test
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
Volume test does not exist

え、ボリューム自体無いの?いやあるはず。

# gluster volume info test

Volume Name: test
Type: Stripe
Status: Stopped
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: 192.168.89.30:/export/sda1/test
Brick2: 192.168.89.31:/export/sda1/test
Brick3: 192.168.89.32:/export/sda1/test
#

やっぱあるよなぁ。。。なんか設定ファイルとか壊れてるのかな?と思ったけどよく考えたら設定ファイルをいじった覚えがない。コマンドしか使ってない。のでそれっぽいディレクトリをリネームしてごまかす。

# /etc/init.d/glusterfs-server stop
[ ok ] Stopping glusterd service: glusterd.
# cd /etc/
# mv glusterd/ glusterd-bak/
# mv glusterfs/ glusterfs-bak
# /etc/init.d/glusterfs-server start
[ ok ] Starting glusterd service: glusterd.
# gluster peer status
Connection failed. Please check if gluster daemon is operational.
#

まあ、ですよね~ディレクトリ作ります。更にログに下記のものが出ていたので元のをコピーする。

[2014-08-31 17:22:24.593157] E [glusterfsd.c:361:get_volfp] 0-glusterfsd: /etc/glusterfs/glusterd.vol: No such file or directory

元のはこんな感じ。

# cat /etc/glusterfs/glusterd.vol
volume management
type mgmt/glusterd
option working-directory /etc/glusterd
option transport-type socket,rdma
option transport.socket.keepalive-time 10
option transport.socket.keepalive-interval 2
end-volume

#

コピー終わったらgluster-server再起動してもう一回チャレンジ

# /etc/init.d/glusterfs-server restart
[....] Stopping glusterd service: glusterdstart-stop-daemon: warning: failed to kill 4180: No such process
. ok
[ ok ] Starting glusterd service: glusterd.
# gluster peer status
No peers present
#

元のサーバーのUUIDが今のと変わっていたので、こちらもコピー

# cp glusterd-bak/glusterd.info glusterd/
#

ピアの追加

# gluster peer probe 192.168.89.31
Probe successful
# gluster peer probe 192.168.89.32
Probe on host 192.168.89.32 port 24007 already in peer list
# gluster peer status
Number of Peers: 2

Hostname: 192.168.89.31
Uuid: e8e02862-b321-4de3-bd15-3ae51f29f5fa
State: Accepted peer request (Connected)

Hostname: 192.168.89.32
Uuid: 4ccc7d22-86de-4a0f-8434-ed2add499e55
State: Peer in Cluster (Connected)
#

で、なんだっけ?ボリュームを確認してみる

# gluster volume info
No volumes present
#

ないですね。では作成

# gluster volume create test 192.168.89.30:/export/sda1/test 192.168.89.31:/export/sda1/test 192.168.89.32:/export/sda1/test
Host 192.168.89.31 not connected
#

192.168.89.31がつながってないと来たか。たしかによく見ると31と32ではstateが違う。
つながってる方:State: Peer in Cluster (Connected)
ダメな方:State: Accepted peer request (Connected)

# gluster peer status
Number of Peers: 2

Hostname: 192.168.89.31
Uuid: e8e02862-b321-4de3-bd15-3ae51f29f5fa
State: Accepted peer request (Connected)

Hostname: 192.168.89.32
Uuid: 4ccc7d22-86de-4a0f-8434-ed2add499e55
State: Peer in Cluster (Connected)
# 

こういう時は再起動だろう。全部のサーバでglusterfs-server再起動。

# gluster peer status
Number of Peers: 2

Hostname: 192.168.89.31
Uuid: e8e02862-b321-4de3-bd15-3ae51f29f5fa
State: Peer in Cluster (Connected)

Hostname: 192.168.89.32
Uuid: 4ccc7d22-86de-4a0f-8434-ed2add499e55
State: Peer in Cluster (Connected)
#

とりあえず認識したようだ。

# gluster volume create test 192.168.89.30:/export/sda1/test 192.168.89.31:/export/sda1/test 192.168.89.32:/export/sda1/test
Volume test already exists
# gluster volume delete test
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
Volume test does not exist
#

振り出しに戻る(´・ω・`)これあれか、他のノードの情報が復元されてる?となると全部のサーバーに対してディレクトリ作りなおさなきゃダメ?

振り返ってみると

  • glusterfs-serverを停止
  • /etc/glusterd /etc/glusterfsをリネーム後、再作成
  • /etc/glusterfs/glusterd.volと/etc/glusterd/glusterd.infoを元のファイルからコピー
  • glusterfs-serverを開始

でサラの状態に戻るはず。やってみました。ログが残っていないけど、peerもない状態になったのでpeer probeしました。今度はIPアドレスじゃなくて名前で指定した。hostnameが変わっている。

# gluster peer status
Number of Peers: 2

Hostname: sv02
Uuid: e8e02862-b321-4de3-bd15-3ae51f29f5fa
State: Peer in Cluster (Connected)

Hostname: sv03
Uuid: 4ccc7d22-86de-4a0f-8434-ed2add499e55
State: Peer in Cluster (Connected)
#

ここでボリューム作成&開始&マウント。

# gluster volume create test stripe 3 sv01:/export/sda1/test sv02:/export/sda1/test sv03:/export/sda1/test
Creation of volume test has been successful. Please start the volume to access data.
# gluster volume start test
Starting volume test has been successful
# mount -t glusterfs sv01:/test /mnt/test/
# ls /mnt/test/
1 2 3 4 5 6 7 8 9
#

なんとか復帰したけど、これをもし本番で使ってたらと思うと胃が痛む(´・ω・`)

まあでも、peerに関する情報は/etc/glusterfs もしくは/etc/glusterdにあることがわかったのでよしとしよう。

/etc/glusterd/glusterd.info

これはpeerと言うか自身のUUIDだね。今回みたいに全部のpeerの設定を消してしまう場合はとっておく必要なかったね。

/etc/glusterfs/glusterd.vol

これもどのpeerでも内容同じだったからそのままでよかったね。ということは

/etc/glusterd/

以下のディレクトリが問題だったってことだ。詳細はいつか調べておこう(´・ω・`)

スポンサーリンク
レクタングル大

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大