2017年2月9日木曜日

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

さて、geminiの方は環境が整ったと思うので、それに合わせてcancerも設定しよう。

ファイルシステム作成等はgemini側で行っているので、cancerのみで実施すべき部分だけ書いておいた。
ほぼほぼ、geminiと同じ作業を行えばいい。
(cancer) $ sudo apt-get update
(cancer) $ sudo apt-get install gfs2-utils
(cancer) $ sudo tunegfs2 -l /dev/vg-gfs2/lv-gfs
(cancer) $ sudo mkdir /mnt/gfs2

(cancer) $ sudo apt-get update
(cancer) $ sudo apt-get install corosync
(cancer) $ sudo cp -pi /etc/corosync/corosync.conf \
/etc/corosync/corosync.conf.orig
(cancer) $ sudo vi /etc/corosync/corosync.conf
以下のように修正・追記していく。(geminiの時と同じだ)
totem {
cluster_name: debian

cluster_name: mycluster

interface {
bindnetaddr: 127.0.0.1

bindnetaddr: 192.168.55.0
}
}
(cancer) $ diff /etc/corosync/corosync.conf.orig \
/etc/corosync/corosync.conf
(cancer) $ systemctl status corosync
(cancer) $ sudo systemctl restart corosync
(cancer) $ systemctl status corosync

(cancer) $ sudo apt-get update
(cancer) $ sudo apt-get install dlm

(cancer) $ ls -l /dev/misc
あ…あれ…?geminiの時は/dev/miscができなかったのに、cancerの時は自動で作成された…。
OS再起動いらないな…。
(cancer) $ systemctl status dlm

(cancer) $ sudo mkdir /etc/dlm
(cancer) $ sudo bash -c "/usr/sbin/dlm_tool dump_config > /etc/dlm/dlm.conf"
(cancer) $ sudo vi /etc/dlm/dlm.conf
--以下の内容
enable_quorum_lockspace=1
↓この行を以下のように書き換え(geminiの時と同じ)
enable_quorum_lockspace=0
--ココまで

(cancer) $ sudo systemctl restart dlm
(cancer) $ sudo systemctl status dlm

(cancer) $ sudo mount -t gfs2 /dev/vg-gfs2/lv-gfs /mnt/gfs2
(cancer) $ df /mnt/gfs2
(cancer) $ grep gfs2 /etc/mtab

(cancer) $ dlm_tool ls -n
(cancer) $ dlm_tool status

(cancer) $ sudo touch /mnt/gfs2/test
(cancer) $ sudo bash -c "echo hogehoge >> /mnt/gfs2/test"
(cancer) $ sudo bash -c "echo fugafuga >> /mnt/gfs2/test"
(cancer) $ cat /mnt/gfs2/test
(cancer) $ sudo rm /mnt/gfs2/test

あっさり終了。

そしたら、ocfs2の時と同じテストを実施してみる。
(gemini) $ ls -ld /mnt/gfs2
(gemini) $ sudo chmod 777 /mnt/gfs2
(gemini) $ ls -ld /mnt/gfs2
(cancer) $ ls -ld /mnt/gfs2

(gemini) $ cp /etc/hosts /mnt/gfs2/
(gemini) $ ls -l /mnt/gfs2
(cancer) $ ls -l /mnt/gfs2
問題なく両方から参照出来る。

(gemini) $ cat /mnt/gfs2/hosts
(cancer) $ cat /mnt/gfs2/hosts
問題ない。

(gemini) $ vi /mnt/gfs2/hosts
(cancer) $ vi /mnt/gfs2/hosts
ocfs2の時と同じで、後から実行したcancerの方が、「スワップファイルが既に存在しているよ」という警告が出た。

というわけで、cancer側でまず強制的に開いて、geminiの方で更新して保存終了、cancer側でも更新保存してみる。
ocfs2の時とまったく同じ挙動。

次のテスト。
(gemini) $ rm /mnt/gfs2/hosts
(gemini) $ ls -l /mnt/gfs2/hosts
(cancer) $ ls -l /mnt/gfs2/hosts

(gemini) $ dd if=/dev/urandom of=/mnt/gfs2/randomio bs=1M count=1024
(cancer) $ dd if=/dev/urandom of=/mnt/gfs2/randomio bs=1M count=1024
あれ?ocfs2の時は、2ノード同時に始めて同時に終わったと思ったけど、今回のgfs2だとcancerの方が少し終わるの遅かったぞ?
何か違いがあるのかな?いや、何度かテストしてみたら、ほぼ同じタイミングで終わる。

やはり、ロックはflock等を使ってアプリケーションレイヤーで対応する、ということなのかもしれないな。

ちなみに、ocfs2とgfs2でどちらが速いのか?ってことで、簡単にI/O性能を測ってみたけど、ほとんど差が出なかった。
もっと厳密に計測すれば、それぞれの特徴が分かるんだろうけど…。

んで…。
実はocfs2にせよgfs2にせよ、ボリュームマネージャにLVMを用いるのなら、LVMもクラスタ対応のCLVMを使用するべきだった。
次回はCLVMに挑戦してみるよー。

0 件のコメント:

コメントを投稿