サーバトラブルでアクセスできなくなっていた当ブログですが、いくつかの原因が重なっていたために原因究明に手こずりました。今後のために一部始終を書いておきます。
まず、環境ですが、このサーバはXen の仮想マシン上で動かしています。ホストOS、ゲストOSともに CentOS です。最初に起こったことは、どうやらI/Oエラーのようで、下記のようなメッセージが出ています。
Oct 24 05:52:00 blog kernel: lost page write due to I/O error on dm-0
Oct 24 05:52:00 blog kernel: Buffer I/O error on device dm-0, logical block 1763824
おそらくこの結果、仮想マシンごとハングアップしたんじゃないかと思います。この後、blogを表示できないことに気付き、ネットワークごしにアクセスしてみたのですが反応がないので、ホストOS上でゲストOSの再起動をかけました。しかし、無反応のままです。
ゲストOSの起動時に、Xen の xm コマンドのオプションでコンソールへ接続してみたのですが、起動中のメッセージは表示されるものの、その後無反応になります。ネットワークからも接続できません。仮想マシンごとハングしているのかとも思ったのですが、仮想マシンのファイルシステムのイメージファイルをホストOS側でマウントしてみると、cron 等のログが更新され続けていることがわかりました。仮想マシンは動いているようです。
普段は使っていない画面出力をディスプレイにつなげて、ホストOSの画面をGUIで見てみました。Xen の virt-manager という GUI のツールを使ってみます。するとちゃんとゲストOSの画面に接続できて、ログインできるじゃないですか。仮想マシンはちゃんと動いています。
どうやらttyコンソールが無反応なのは設定が足りないようです。調べてみると、CentOS ではいくつかの設定が必要なことがわかりました。ゲストOS側で以下のファイルを編集します。
まず、/etc/securetty というファイルに下記の一行を追加します。
xvc0
そして、/etc/inittab というファイルに下記の一行を追加します。
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
一度リブートすれば、ホストOS側からゲストOS側のttyコンソールに接続できるようになります。
ようやくログインして調べられるようになったので、あれこれ見ていると、IPアドレスが以前と変わっていることを発見しました。DHCPに割り当てているアドレス範囲のアドレスになっています。アドレスを設定している /etc/sysconfig/network-scripts/ifcfg-eth0 というファイルが以下のような内容になっています。アドレスの値の部分は隠させていただきました。
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
ファイルの日付を見ると、最初にリブートをかけた時刻になっています。しかも、元のファイルはご丁寧に「.bak」という拡張子を付けられて残されています。どうも自動的に書き換えられたとしか思えません。
これを下記のように変更します。
DEVICE=eth0
BOOTPROTO=static
HWADDR=xx:xx:xx:xx:xx:xx
IPADDR=192.168.0.xxx
NETMASK=255.255.255.0
ONBOOT=yes
これでネットワークを再起動すれば、元の状態に戻りました。
最初は外からまったくアクセスできないので、いったい何が起きたのかわからず焦りました。復旧できないようなら別なマシンにblogを再構築しようかとまで思いました。わかってみれば簡単なことなのですが、突き止めるまでは試行錯誤を繰り返してずいぶんと時間がかかってしまいました。それにしてもネットワーク設定のファイルが書き換えられた原因がわかりません。また、I/Oエラーはそれ以後出ていないようですが、その原因もわかっていません。それを突き止めないと、また同じことが起きるかもしれません。安定運用には前途多難です。忘れた頃にまた発生するかもしれないので、この記事を書いて記録としておきます。
と思ったのですが、よく考えたら同じことが起きたらこの記事はサーバがダウンしてしまうので読めませんね。その時は Google のキャッシュに頼ることとしましょうか。
Xen による仮想サーバの運用はまだまだわからないことがたくさんあります。今回のトラブルには関係なかったのですが、ゲストOSがホストOSを通じてネットワークにつながる仕組みや設定方法などを勉強しました。いざという時のためにはもっとしっかり学んでおいたほうがよさそうです。
悪戦苦闘していた折り、此処にたどり着きました。
貴重な情報に感謝感激です。
これでgoogleカレンダーがより快適に使えます。
ありがとうございました。
どういたしまして。お役に立ててなによりです。
とても便利ですよね。