ここ最近、サーバが過負荷で処理効率が極端に落ちる現象が多発していました。効率が落ちるだけでサービスを提供してくれるならまだマシなんですが、それを通り越してSSHでログインできないこともしばしば…。家にいれば簡単に再起動できるんですけど、そうじゃなかったら長期間サーバが実質死亡状態で放置されることになってしまいます。
それを回避するために、過負荷で処理できなくなる前にさっさと再起動するようなスクリプトを書いてみました。まずはそのスクリプトを見てみてください。
#!/usr/bin/perl
$threshold = 50;
open( LOAD_AVERAGE, "</proc/loadavg" );
$value = <LOAD_AVERAGE>;
close( LOAD_AVERAGE );
$value =~ s/\..*//;
if( $value >= $threshold ) {
print "I'm rebooting now!! [load average]$value";
system("reboot");
}
exit;
これを、/etc/cron.hourly の中に放り込んで、rootの実行権限を追加すれば出来上がりです。でも、このソースはちょっと間違えるとえらいことになるので取扱注意です。*1
続きを読む
- 更新日:
- サーバ管理
以前、VMWare ServerにFedora 7をインストールして動かしていたんですが、少し前にあったVMWare Serverのアップデートを行うと急にイメージから読み取れなくなりました。ここで紹介するのはその復旧方法ではないのですが、新規にインストールする方法をメモしておきます。復元の際に参考にしてみてください。
まず、VMWare ServerにFedora 7をインストールするために、イメージファイルをFedora Projectのページからダウンロードしてきます。DVDイメージしか公開されていないので、けっこうダウンロードには時間がかかります。
[web] Fedora Project
イメージファイルをダウンロードしてきたら、VMWare Serverの設定を行います。「New Virtual Machine」を選択してウィザードを進めていくと、「Select a Guest Operating System」と書かれたダイアログが表示されます。ここでは、Guest Operating Systemとして「Linux」、Versionでは「Ubuntu」を選択します。後は、好みに応じて設定します。
設定が終わると、OSの設定に対応したタブが選択できるようになります。ここで、「Edit Virtual Machine settings」を選択して、ハードウェアの設定を行います。これまでの設定をそのまま実行すると、HDDはSCSIになっていると思うので、これをいったん削除して、IDEのHDDとして作成し直します。
後は、OSのイメージファイルを(仮想)CDドライブで読ませるように設定して、ゲストOSを起動させればOSのインストール画面になります。もし、インストールをGUIで行いたい場合は、前もってメモリを256MB以上に設定しておきます。
- 更新日:
- サーバ管理
今使っているサーバは、ちょっと前まではCPUの速度を落とさないで稼働させていました。ですが、節電しないと電気代がかかるということと、それほどCPUパワーを必要としないということで、CPUの速度を動的に変化させるようなデーモンを立ち上げることにしました。
cpuspeedはFedora7では標準でインストールされているみたいです。なので、通常は何もしなくても稼働させることが可能です。もし、chkconfig でサービスが立ち上がるようになっているはずなのに起動していない場合は、設定ファイルを編集する必要があります。設定ファイルは、/etc/sysconfig/cpuspeed です。
設定ファイルを次のように修正します。
DRIVER=p4-clockmod
設定ファイルのコメントを読むと、この設定は推奨されないようなんですが、無理やり動かしたい場合はこれでいけるはずです。(CPUが対応していれば。)
設定ファイルを編集したら、サービスを起動させます。
# services cpuspeed start
実際にCPUのクロック数が変化しているかどうかを確認したい場合は、/proc/cpuinfo を表示すればいいでしょう。
$ cat /proc/cpuinfo
【参考文献】
[web] CPUFreqの設定 - インターネットサーバ構築 講義メモ
[web] ACPI対応PCでCPUの動作速度を調べるには - @IT
[web] FC5を使うとCPUパワーが半分になる - Fedora JP 掲示板
続きを読む
- 更新日:
- サーバ管理
先ほど、自分の家にあるメールサーバが全然メールを配信してないことに気づきました。症状としては、(1)送信はできるけど受信はできない。(2)受信の場合は、ローカルからローカルの場合でも配信されない、というもの。このような時に、管理者ならまずどうすべきかをメモしておきます。
まずすべきなのは、ログのチェックでしょう。こんな感じの致命的な障害の場合は、ログがけっこう残っていたりするものです。マシンにログインして、さっそく確認してみましょう。
ちなみに環境は次の通り。
OS: Fedora 7
SMTP: Postfix 2.4.3
POP&IMAP: Dovecot 1.0.3
# cat /var/log/maillog | grep fatal
これで、今の日付に近いあたりにエラーが出ていたら何が原因かが分かります。ちなみに、僕の場合はなぜか /etc/aliases.db がなくなっていて、配信ができないというエラーでした。たまたまPostfixを再起動したら作成されたようで、再びメールが配信されるようになりました。
Linuxなどを扱っているとシンボリックリンクを利用することが非常に多いです。そんなときに「どうやってやるんだっけ?」とならないために、メモを残しておきます。ちなみに、シンボリックリンクというのは、ファイルやディレクトリの別名だと思っていただいたらいいです。
[web] シンボリックリンク - IT用語辞典
で、シンボリックリンクを作成の仕方ですが、基本的には次のような感じ。
$ ln -s (リンクを張られるファイル名) (リンク名)
覚え方は、英語の単語の call と同じだと思えばいいんじゃないでしょうか。I call him Tom. みたいな感じ。
削除は普通のファイルのようにして消せばよいです。
$ rm (削除するリンク名)
この時、リンクがディレクトリを指す場合は、リンク名の最後に「/」をつけるとエラーになってしまうことがあるので注意です。
- 更新日:
- サーバ管理
Fedora7にアップデートしてからsambaがうまく使えなくて困ってたんですが、解決したのでその方法をメモしておきます。
まず、環境は以下の通り。
OS:Fedora 7
samba:samba-3.0.25b-2
とりあえず、Fedora JPの掲示板を確認してみると、nmbdが起動してないからじゃないかということでさっそくトライ。無事にsambaを起動させることができました。Fedora Core 6のときは、smbデーモンを起動させると勝手にnmbデーモンも起動してたので気にしてなかったんですが、Fedora 7からは意識して起動させる必要があるようです。でも手動でいつも起動させるのは面倒なんで、chkconfigで自動起動するように設定。
[web] samba-3.0.25b-2おかしくないですか。 - Fedora JP 掲示板
さらに、クライアント側でも問題がある場合があります。クライアントのIPがDHCPで勝手に設定される場合はいいんですが、手動で設定している場合はサブネットマスクの設定があっているかどうかもsambaを利用する上では重要になります。具体的には、ルータと同じサブネットマスクになっているかを確認すればいいでしょう。(ただし、ちゃんと設定すれば違うセグメントからでもアクセスできるらしい。)
- 更新日:
- サーバ管理
Fedora7が公開されて2ヶ月過ぎるので、サーバのOSをFedora Core6からアップグレードすることにしました。公開されてすぐにアップグレードしないのは、へんなバグに悩まされないためと、時間が意外とかかるからです。今回も参考にしたのはずんWikiさんです。いつもありがとうございます。
[wiki] Fedora upgrade - ずんWiki
やり方はここに書いてあるとおりです。エラーメッセージなどもほとんど一緒なので、あわてることなく対処できました。少し違う点があるとするなら、snortを削除しないといけなかった点でしょうか。
無事にアップグレードが終了して、snortをyumからインストールすると設定が間違っていたらしくうまく起動しませんでした。でもちょっと調べたら解決方法が分かったので、さくさくと更新作業が進められました。
[web] 侵入検知システム - インターネットサーバ構築 講義メモ
- 更新日:
- サーバ管理
WebサーバでAWStatsを導入して、ログの統計情報を記録している方は多いと思います。その統計情報がふとした拍子に更新されなくなったら驚きますよね。このエントリでは、そんなときの原因と対策について考えたいと思います。
ここで前提とする環境は次のとおりです。
OS: Fedora Core6
httpd: Apache 2.2.4
どうして更新されなくなったかを考えてみます。
(1)apacheの記録しているログの場所を変更した
(2)ドメイン名を変更した
(3)統計情報を更新中にサーバが落ちて、/tmpの中にロックファイルが残った
(1)や(2)だと、きっと分かると思うんですが、(3)のロックファイルの存在に気付かない場合はなかなか大変です。とはいえ、この場合であってもエラーメッセージの中にそれを示唆する文があったりするので、見つけたらさっさと消してしまいましょう。
- 更新日:
- サーバ管理
Solaris10からLDAPサーバの情報を取得してくるにはどうしたらいいんでしょうか。いろいろなWebページを検索してみて、nss_ldapとpam_ldapというものをインストールして、LDAPクライアントの設定ファイルを変更すればいいってふうになっているんですが、どうもうまくいきません。
あと、ちょっと気になるのが、Solaris10ではすでにnss_ldapとpam_ldapはデフォルトで入っているみたいな情報もあること。これがホントなら、けっこう簡単に設定できてしまうんですが、実際に確かめてみないと分からないですね?。
とりあえず、参照したページをここにメモしておきます。
[web] LDAPによるパスワードの一元管理(2/3) - @IT
[web] PADL Software Pty Ltd
[web] FreeBSD-5でNSS
[ml] nss_ldapができなかった件 - Momonga-devel.ja:01819
[web] pam_ldapとnss_ldapを使ったLDAP認証
[web] OpenLDAPでログインアカウント管理
- 更新日:
- サーバ管理
どこかのブログを覗いていて、実はmt-daapdを使って音楽を配信するより、sambaでファイル共有したほうがよさそうなことが書かれていました。確かに、mt-daapdを使っていたら、曲情報の修正が簡単に行えなくて面倒だし、サーバに転送する手間がかかるわけなんですが、sambaだと曲情報も編集できるし、ライブラリをsamba上のフォルダに指定すれば、勝手に転送も行ってくれるというわけです。すごく使い勝手がよさそうです。
でも、sambaだと外部に公開するのはすごく抵抗があります。で、思いついたのが、VPNサーバとかを立てて、外部とトンネルを張るって方法。このあたりはまだ試してないんですが、意外と簡単にできるんじゃないかなって思ってたりします。
もしVPNでsambaが普通に見えるなら、外部からでもVPNクライアントを立てるだけでいいし、mt-daapdの時と比べてもよさそう。(mt-daapdのときは、PortForwarderとRendezvous Proxyを使わないといけないし。)