本記事では、ThinkCentre A50(8320-87J)にcentOSを入れて、常時立ち上げでサーバとして運用する場合に注意すべきことを書く。
カーネルパラメータ
このマシンにsshdを入れて、常時立ち上げ状態にして1日ほど経過すると、sshでログインが異常に遅くなる(あるいはログインできない)症状が発生した。また、このサーバに直接ログインを試みると、同じように異常に時間がかかったり、フリーズしたりすることもある。
ネットで調べてみると、割り込み要求を処理するapicという機能を停止して、ブートすると解決するらしい。実際に、/boot/grub/grub.confで、次のようにnoapicというカーネルパラメタを与えてブートするように設定した。
#kernel /vmlinuz-2.6.18-xxx.xxx.xxx.el5 ro root=LABEL=/1 <-- コメント kernel /vmlinuz-2.6.18-xxx.xxx.xxx.el5 ro root=LABEL=/1 noapic <-- 追加
すると、以降、上で説明した症状は現れなくなった。
追記: この設定をして、サーバを運用していたところ、1日とは言わないまでも1週間以内にはサーバがダウンしてしまう症状が現れた。ネットワークの設定ミスやケーブル不良などの他の要因を取り除いても依然として症状は現れた。一部のサービスだけがダウンしているのならまだしも、ログを見るかぎりでは、すべてのサービスのログが一斉に途切れていた。
この症状から推測すると、おそらく、ある時にとたんにOS自体がダウンしてしまったのだろう。とすると、個別のサービスの設定ミスが原因であるのが考えられないし、バグがあるとしても、何らかの報告がネット上にあるハズだが、見当たらない。ゆえに、ハードウェアがらみの原因が疑われる。
もう一度、apic関係でネットを調べてみたところ、さらに、もう1つのカーネルパラメータacpi=offを与える必要があるという情報をみつけた(というか、見落としていた)。さっそく、以下のように、grub.confを書き換えて、再起動した。
#kernel /vmlinuz-2.6.18-xxx.xxx.xxx.el5 ro root=LABEL=/1 <-- コメント #kernel /vmlinuz-2.6.18-xxx.xxx.xxx.el5 ro root=LABEL=/1 noapic <-- 追加 kernel /vmlinuz-2.6.18-xxx.xxx.xxx.el5 ro root=LABEL=/1 noapic acpi=off <-- さらに追加
参考URL: Ubuntuforums.org:"Sudden random drastic slow down (near freeze)"
さらに追記:また、サーバダウンが発生した。まだ1回しか確認していないが、この前の設定変更では解決しなかったようだ。実は、同じ機種のサーバをもう1台メンテナンスしているが、そちらはダウンしていない。両者の違いは、起動しているサービスおよび負荷ぐらい。
まずは起動サービスの差分を疑ってみる。実験前に、極力不要なサービスを停止した。そして、ダウンした方のサーバでacpidとampdが動いていた(他方のサーバでは動いていない)ので、これらを停止した。経過観察してみる。
OSのインストール
OSを新規インストールするとき、このタイプのThinkCentreだと少し苦労するかもしれない。インストールに使えそうなI/Fとしては、FDドライブとCDドライブとUSBとイーサネットコネクタがある。
- 最近のlinuxはフロッピー起動の方法が使えない。ブートイメージが1.5Mに収まらなくなったとか。
- 手元にCDに入ったOSがあれば良いが、雑誌に付いているのはDVDの場合が多い。
- USB起動を試してみたができなかった。
順当に考えると、ネットワーク経由のインストールが残される(他にもあるかもしれないが)。何らかの方法でマシンを起動できたとしても、私の場合、プロキシ経由でしかインターネットに接続できないので、単純にHTTPあるいはFTP経由のインストールはできない。
よくWebで紹介されている方法でPXEブートでインストールする方法があるが、DHCPサーバを立てなければならない。(企業などのように)既にDHCPサーバのある内部ネットワークで、この方法はあまりやりたくない。
そこで、私のとった方法を説明する。起動イメージ(boot.iso)を取得して、CD-ROMかDVDに焼く。DVDの場合は、DVDドライブをマシンにUSB接続すること(<- DVDドライブでブートはできるが、インストールプロセスでHard Disk, FTP, HTTPなどインストール方法を聞かれるところで、DVDドライブが選択肢になくて、起動用途でしかDVDドライブは使えなかった)。
# wget http://ftp.riken.jp/Linux/centos/5.2/os/i386/images/boot.iso
isoイメージをCDやらDVDに焼く方法は、インターネットで調べたらたくさんの情報があるので、ここでは省略するが、私は、Ubuntuで普段作業しており、Braseroというツールが入っているので、それを使って作成した。
次に、この起動イメージを使って、マシンを起動した(もちろん、Baiosでデバイスの起動順位を適切に設定しておくこと)。
プロキシ経由でないと、インターネットに接続できないので、マシンを起動できたからといって、そのままインストールというわけにはいかない。ここでは、同一ネットワーク上にある他のPC(HDの空きスペースが十分あること)を使ったインストールを説明する。
方法は、この作業用PCにOSのイメージファイルをダウンロードし、さらにこのPCをwebサーバとすることで、このローカルレポジトリを内部ネットワークで公開するのである。DHCPでIPを動的に配布している場合は、インストール途中でIPが変化しないように注意が必要。
作業用PCで、webサーバをインストールする。この方法はここでは説明しない。次に、下のようにイメージファイルをダウンロードする。
# wget http://ftp.riken.jp/Linux/centos/5.2/isos/i386/CentOS-5.2-i386-bin-DVD.iso
そして、ISOファイルをweb公開用のディレクトリ(例えば、hogeユーザ用のディレクトリにcentosというディレクトリを作るなら、マウントポイントは/home/hoge/public_html/centos)にマウントする。
# mount -t iso9660 -r -o loop CentOS-5.2-i386-bin-DVD.iso /home/hoge/public_html/centos
作業用PCのIPアドレスを調べる。下のinetアドレスというところ。ここでは、説明のため、192.168.0.1とする。
# ifconfig eth0 Link encap:イーサネット ハードウェアアドレス 00:00:00:00:00:00 inetアドレス:192.168.0.1 ブロードキャスト:xx.xxx.xxx.xxx マスク:xxx.xxx.xxx.xxx 以下、省略
作業用PCのhogeユーザのweb公開用のディレクトリに、適当なhtmlファイルを置いて 、きちんとアクセスできるか確認する。
# cd /home/hoge/public_html # echo 'Hello, World!' > index.html
そして、http://192.168.0.1/~hogeにアクセスして、Hello, World!と表示されたらOK!
そして、インストール対象のPCを起動させてHTTPインストールを選択する。レポジトリのあるサイトとディレクトリを聞かれるので、下のように入れる。以上
サイト:192.168.0.1 ディレクトリ:/~hoge/centos
0 コメント:
コメントを投稿