2008/12/09(Tue)小規模サーバーの静音化

2008/12/09 20:16 Software::Linux
出先から自宅のPCをちょちょっと操作したいときを考えて、自宅にWoL用のSSH/HTTPサーバー*1を走らせているが、HDDを換装してからモーター音が気になるようになった。
実は世代的にはかなり前のもう10年くらい前に作られたHDDだし。

で、気になるレベルであるが、30秒置きくらいに何か書いている感じ。
スピンダウン時間設定が全くの無駄じゃないか!カリカリうるさいし……。

というわけで、静音化にチャレンジしてみました。
ちなみにOSはFedora 7 PPCです。

*1 : PCからはSSH越しにwolを叩いて起動しPortForwardでVNC、携帯からはとりあえずwol専用でhttpアクセス。http越しにwolするのは遊び半分だが…^^;

ログ周り

まずは、どのプロセスがアクセスしてるかを突き止める。
とりあえず勝手に書き込まれる系と言えばログなので、/var/log辺りを$ ls -altする。

と、
# ls -alt /var/log/
 8364
-rw-------  1 root     root       12501 2008-12-09 18:54 messages
drwxr-xr-x  2 root     root        4096 2008-12-09 18:54 httpd
-rw-------  1 root     root      594965 2008-12-09 18:54 cron
-rw-------  1 root     root        3539 2008-12-09 18:53 secure
-rw-r--r--  1 root     root      146292 2008-12-09 18:51 lastlog
-rw-rw-r--  1 root     utmp        5760 2008-12-09 18:51 wtmp
drwxr-xr-x 13 root     root        4096 2008-12-09 04:40 .
…
messages, secure, lastlog, wtmpは今ログインしたばっかりから仕方ないということにして、httpdとcronに注目。
中身を見てみる。
httpd
自分しか使わないし、変なポートでひっそり開けてるだけなので、ログもそれほどない。
原因はこれじゃない。

cron
やっぱこいつか…。
数分ごとにDynamicDNSの更新をcronでしてたので、そのログが残ってた。
> /dev/null 2>&1してても、コマンドを実行したというログは以下のように残る模様。
Dec  9 18:54:01 zircon CROND[21913]: (root) CMD (wget -O - 'http://dyn.value-dommain.com/cgi-bin/dyn.fcg?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' > /dev/null 2>&1)

cronの/var/log/cronログ出力の止め方

最初ログを書いてのがcronさんだと思ってたが、実はsyslogさんだった。
(というわけで、crontabにログをどうこうするコマンドは無い。)
以下を編集。
# vim /etc/rsyslog.conf

- cron.*/var/log/cron
+ #cron.*/var/log/cron
設定を有効化。
# service rsyslog restart
これをやるとcronの全てのログが止まるようなので、各自の事情に合わせてどうぞ。

サービス系

次に、常駐系のサービス。
ま、常時立ち上がってるんだからこれしかないですね。

ntpd

ntpdがdriftfileというのを吐くとHDDにアクセスされるらしいので、それを削除。
# vim /etc/ntp.conf

- driftfile /var/lib/ntp/drift
+ #driftfile /var/lib/ntp/drift
ntp.confを再ロード
# service ntpd restart


不必要と思われるものをばっさばっさ切ります。
なんか静音化というより別の方向に走ってる気もしますが、使ってないものを立ち上げておくのも無駄なのでねぇ。この際。
Bluetoothついてない
# service bluetooth stop
# chkconfig bluetooth off

もはやISDN使ってない
# service isdn stop
# chkconfig isdn off

NFSも使う予定ない
# service nfslock stop
# chkconfig nfslock off

yumのアップデートは手動でOK
# service yum-updatesd stop
# chkconfig yum-updatesd off

スマートカード認証もしない
# service pcscd stop
# chkconfig pcscd off

一通り終わったら、とりあえず$ top -d1とやって、1秒ごとにプロセスの挙動を見てみる。
細かい起動オプションまで見たければ、cを押すと引数まで表示されるのでオススメ。
次なるターゲットはというと、別の窓で# hdparm -y /dev/hdaとやってみて、HDDがいったん止まった後、再び回転が始りかけたとき、CPUの負荷が上がったものを疑えばよい。


まだ勝手にHDDが回り始めるので、原因は何かとtopをにらんでいたら、automountというプロセスだった。
文字通り、デバイスをオートマウントしてくれるプロセスだが、サーバー機にはUSB挿したりする機会もないので、切っちゃっていいや、ということで、切る。
automountばいばいー
# service autofs stop
# chkconfig autofs off

ここまでやってみると、パタッとまるで動いていないんじゃないかという位、静かになった。
これで夜も安眠できそうですね。

追記 2009/10/12

最近またうるさくなってきたので、さらにサービスを止めることに。
デスクトップ用途向けらしいのでConsoleKit
# service ConsoleKit stop
# chkconfig ConsoleKit off

コンソールログインしないのでコピペdaemonとか要らない(sshのみ)
# service gpm stop
# chkconfig gpm off

印刷類しない
# service cups stop
# chkconfig cups off

avahiいらない(Macとかで使われているネットワークサービス)
# service avahi-daemon stop
# chkconfig avahi-daemon off

IPv6使ってない
# service ip6tables stop
# chkconfig ip6tables off

HAL(デバイス監視とかD-busのためのモジュール?)いらない
# service haldaemon stop
# chkconfig haldaemon off

NFS関連使わない
# service rpcbind stop
# service rpcgssd stop
# service rpcidmapd stop
# chkconfig rpcbind off
# chkconfig rpcgssd off
# chkconfig rpcidmapd off

udev(ハードウェアの自動認識関連?なにも増やさないので要らん。)
# service udev-post stop
# chkconfig udev-post off

IBM Power RAID用のサービスらしいiprdump, iprinit, iprupdate
# service iprdump stop
# service iprinit stop
# service iprupdate stop
# chkconfig iprdump off
# chkconfig iprinit off
# chkconfig iprupdate off

netfs 起動時とかにファイルシステムにリモートマウントしないのでいらん
# service netfs stop
# chkconfig netfs off

SELinux使ってない
# service restorecond stop
# chkconfig restorecond off

で、現状動いているものはこのような感じ。
# chkconfig --list | grep ":on"
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
hdparm          0:off   1:off   2:on    3:on    4:on    5:on    6:off
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sendmail        0:off   1:off   2:on    3:off   4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off