2017年2月9日木曜日

共有ファイルシステム(corosync&dlm&gfs2その2)

というわけで、corosyncとdlmの2つを導入してみよう。

gfs2のマニュアルを見ると、corosyncをセットアップ後にdlmをセットアップする流れになっている。

というわけで、corosyncの導入から実施する。
(gemini) $ sudo apt-get update
(gemini) $ sudo apt-get --simulate install corosync
(gemini) $ sudo apt-get install corosync

そしたら、corosyncで導入されたファイル一覧を見てみる。
(gemini) $ dpkg -L corosync
/etc/corosync/corosync.conf というファイルが作られてるな。これを参考に設定ファイルを作ればいいだろう。

と思って/etc/corosync/corosync.confを見てみたが、結構色々な設定が入っている。
各種パラメータの意味を把握するのは必要に応じて実施するとして、とりあえず最低限の設定だけ入れてみる。
(gemini) $ sudo cp -pi /etc/corosync/corosync.conf \
/etc/corosync/corosync.conf.orig
(gemini) $ sudo vi /etc/corosync/corosync.conf

以下のように修正・追記していく。
totem {
cluster_name: debian

cluster_name: mycluster

interface {
bindnetaddr: 127.0.0.1

bindnetaddr: 192.168.55.0
}
}

差分確認しておこう。
(gemini) $ diff /etc/corosync/corosync.conf.orig \
/etc/corosync/corosync.conf

gfs2ファイルシステムを作成する時のオプション-tに用いたラベルのうち、前半分(前回の例だと-t mycluster:mygfs2のmycluster部分)と、corosync.confのcluster_nameは合わせる必要がある。

修正したところ以外が変更されてたりしないことを確認したら、corosyncの状態を確認して起動する。
(gemini) $ systemctl status corosync
(gemini) $ sudo systemctl restart corosync
(gemini) $ systemctl status corosync
これで良いのだろうか…。

続いて、dlmをセットアップする。
corosyncと同様に、導入するところからだ。
(gemini) $ sudo apt-get update
(gemini) $ sudo apt-get --simulate install dlm
(gemini) $ sudo apt-get install dlm

む?dlmインストール時の自動セットアップでfailedになったな。
ちょっと確認してみるか。
(gemini) $ journalctl -xe
(gemini) $ systemctl -l status dlm.service
(gemini) $ systemctl -o verbose dlm.service
う~ん。/dev/misc/dlm-control とかいうデバイスファイルが無い、という理由でコケてるみたいだな…。
いやマテ…。/dev/dlm-controlというデバイスファイルは出来上がってるぞ…。
なぜ、/dev/miscという存在しないディレクトリを見に行っているんだ?

まさかと思うが…一旦再起動してみよう。
(gemini) $ sudo shutdown -r now
(gemini) $ systemctl status
え?正常になってるぞ…?

(gemini) $ systemctl status dlm
あれ?やっぱり動いている。

まさか…
(gemini) $ ls -l /dev/misc
ぐはっ、ディレクトリも出来てて、シンボリックリンクも出来てる。
OS再起動が必要だったか…。(/dev 関係だから再起動した方がいいのだろうけど、エントリ追加ぐらいオンラインで出来るはずだよな…)

気を取り直して、とりあえずdlmパッケージにてインストールされたファイルは…と。
(gemini) $ dpkg -L dlm
設定ファイルの類や、サンプルファイルは無いな…。

と言っても、dlm.confのmanは存在している。これを見る限り、やっぱり/etc/dlm/dlm.confというファイルを作らないといけないようだな。

ファイルの内容はdlm.conのmanを見てもイマイチ分からない。
どうやら、現在の設定内容を出力するコマンドがあるらしい。それを使って設定ファイルのテンプレートを作ってみる。
(gemini) $ sudo mkdir /etc/dlm
(gemini) $ sudo bash -c "/usr/sbin/dlm_tool dump_config > /etc/dlm/dlm.conf"
(gemini) $ cat /etc/dlm/dlm.conf
--以下の内容になっていた
daemon_debug=0
foreground=1
log_debug=0
timewarn=0
protocol=detect
debug_logfile=0
enable_fscontrol=0
enable_plock=1
plock_debug=0
plock_rate_limit=0
plock_ownership=0
drop_resources_time=10000
drop_resources_count=10
drop_resources_age=10000
post_join_delay=30
enable_fencing=0
enable_concurrent_fencing=0
enable_startup_fencing=1
enable_quorum_fencing=1
enable_quorum_lockspace=1
help=-1
version=-1
--ココまで

各パラメータの詳細はヨクワカラン。
ただ、lockspaceのところとかはちょっと書き換えておく。
(gemini) $ sudo vi /etc/dlm/dlm.conf
--以下の内容
enable_quorum_lockspace=1
↓この行を以下のように書き換え
enable_quorum_lockspace=0
--ココまで

書けたら、dlmを再起動してみる。
(gemini) $ sudo systemctl restart dlm
(gemini) $ sudo systemctl status dlm

なんかsyslogにたくさん出てくる…。quorumがどうとか…。
数十秒で止まったけど…。後日調査だな。

では今度こそマウント。
(gemini) $ sudo mount -t gfs2 /dev/vg-gfs2/lv-gfs /mnt/gfs2
(gemini) $ df /mnt/gfs2
(gemini) $ grep gfs2 /etc/mtab
マウント出来た。

dlm_toolコマンドで確認してみよう。
(gemini) $ dlm_tool ls
(gemini) $ dlm_tool status
動いてるっぽいな…。

I/O確認もしておこう。
(gemini) $ sudo touch /mnt/gfs2/test
(gemini) $ sudo bash -c "echo hogehoge >> /mnt/gfs2/test"
(gemini) $ sudo bash -c "echo fugafuga >> /mnt/gfs2/test"
(gemini) $ cat /mnt/gfs2/test
(gemini) $ sudo rm /mnt/gfs2/test
問題なさそうだ。

ちなみに、前回書いた dlm_jadd コマンドは、ジャーナルを1つ追加してしまい、元に戻すことが出来ないようなので、当該ファイルシステムをマウントするホストが増えたら実施するようにしよう。
(Ubuntuで、gfs2ファイルシステムのジャーナル数を確認する方法が分からない…)

とりあえず、geminiでgfs2を作成、マウントすることは出来た。
次回はcancerで同じgfs2をマウント、両ノードでの書き込みテストをしてみる。

0 件のコメント:

コメントを投稿