2017年5月8日月曜日

まずは両ノードで起動

さて、これでバックアップの取得は完了したので、検証開始だ。

まずは、leo を gemini / cancer の両ノードで起動してみよう。
ここでは、後から起動した方が「ファイルがロックされてるぜよ」と言われて起動に失敗する、というのを期待していた…、が、なんと!両ノードで起動できてしまった。

とりあえずそれを見てみよう。
(virt-manager を使って、コンソールを見ておこう。)
(gemini) $ virsh start leo
起動できたら ssh でログインして普通に操作可能なことを確認しておく。
(cancer) $ virsh start leo
なんと、cancer 上の leo も起動できてしまった。

そして、gemini→leo にログインしてた sshセッションも切れたはずだ。
gemini→leo も cancer→leo も同じ IPアドレスなので、後から上がってきた cancer→leo が奪ってしまったような格好だ。

それぞれのコンソールからローカルログインして、ping等で他のマシンとの疎通を確認してみよう。cancer→leo がネットワーク疎通出来るはずだ。

しかしコレ、ディスク I/O とか大丈夫なのだろうか…。
gemini→leo 側でディスクに書き込んで、cancer→leo 側で見てみる。
(gemini) $ echo "test" > test.txt
(cancer) $ ls
gemini→leo で作ったファイルは、cancer→leo では確認できない。

逆はどうだろうか?
(cancer) $ echo "test2" > test2.txt
(gemini) $ ls
やっぱり確認できない。
どういうことだろうか…?

おっと?しばらく放置していたら、cancer→leo のコンソールにエラーが。
--
EXT4-fs error (device dm-0): ext4_mb_generate_buddy:758: group 321, block bitmap and bg descriptor inconsistent: 31900 vs 31901 free clusters
Aborting journal on device dm-0-8.
EXT4-fs (dm-0): Remounting filesystem read-only
EXT4-fs error (device dm-0): ext4-journal_check_start:56: Detected aborted journal
--
だそうだ。
更新処理でバッティングが起きて、リードオンリーで再マウントされたっぽいぞ。
(leo) $ grep vg-root /etc/mtab
確かに、ro になっている。

gemini→leo の方はどうだろう?
(leo) $ grep vg-root /etc/mtab
こっちは rw だ。

このままではとても危険な香りがするので停止しよう。
cancer→leo から停止。
(leo) $ sudo systemctl poweroff
続いて、gemini→leo
(leo) $ sudo systemctl poweroff

gemini→leo をもう一度起動して、ファイルの状態を確認してみよう。
(gemini) $ virsh start leo
(leo) $ ls
おっと!?test.txt が作られておらず、test2.txt が作られているな…。
が、中身が空だ。

ssh でログインしたら、先程 cancer→leo で起きたのと同じようなエラーが発生。リードオンリーになってしまった。
再起動して再確認。
(leo) $ sudo systemctl reboot
起動中に fsck が実行された。やはりファイルシステム上に問題が起きたようだ。
しかも、修復できなかったっぽい。
initramfs でコンソールが出てきたので、fsck をかけてみる。
(initramfs) fsck.ext4 -y /dev/mapper/leo--vg-root
成功したら、もう一度再起動。
(initramfs) reboot

なんとか修復されて起動はしてきた。
が、やはり test2.txt が空で存在している。

同時起動は出来てしまうが、ゲストOS のファイルシステムが壊れてしまうようだ。当たり前なんだが…。
逆に、同時起動を禁止するような制御をして欲しかったが…。まだ今の KVM にはその機能が搭載されていないか。将来的にも搭載されるかどうか…。
当面は、2重起動にならないように気をつける、という対策ぐらいしかないな。

とりあえず、ゴミの test2.txt は削除しておこう。
(leo) $ rm test2.txt

この後、ライブマイグレーションに挑戦したいので、leo は起動したままにしておく。

0 件のコメント:

コメントを投稿