Miscellaneous

ハードディスクの温度測定

夏場になるとコンピュータの熱が気になり始めます.CPU 温度とシステム(マザーボード)温度に監視は Lm_sensors などで計測することが可能ですが,ハードディスクドライブは通常できません.Lm_sensors は SMBus などを使って温度を測定しますが,HDD は通常 S. M. R. A. T. などを使用して温度を計測するようです.そこで hddtemp とその名もズバリなソフトウェアを使用します.使用できるドライブは http://coredump.free.fr/linux/hddtemp.db に記載されています.

 
ソースの取得
# wget http://coredump.free.fr/linux/hddtemp-0.3-beta7.tar.bz2

アーカイブの展開,およびインストール
データベースファイルの指定は --with-db-path
で出来ますが,ファイル名までのフルパスで指定
# tar xvjf hddtemp-0.3-beta7.tar.bz2
# cd hddtemp-0.3-beta7
# ./configure --prefix=/usr/local/hddtemp \
# --with-db-path=/usr/local/hddtemp/etc/hddtemp.db
# make
# make install

データベースファイルを取得します
# cd /usr/local/hddtemp
# mkdir etc
# cd etc
# wget http://coredump.free.fr/linux/hddtemp.db

これでインストール完了です
# /usr/local/hddtemp/sbin/hddtemp /dev/hda
とかすると温度が測れます

ハードディスクドライブの取替え

サーバにとってバックアップは最重要な項目です.特にハードディスクドライブは心配の種です.当サーバでも先日バックアップ用のハードディスクを購入しました.しかし容量は同じものの,メーカが違います(同じものがなかった).また,今回購入したドライブはショップで3年間保証がつけられたので,このドライブをメインとして,元にあったドライブとリプレースしたいと思います.しかし一から環境を構築するのには時間がかかりすぎますので,元にあったドライブから丸ごと環境を移行する手段をとりました.以下はそのときのメモです.この操作には危険が伴います,くれぐれも自己責任でお願いします.

 
まず新しいドライブをスレーブとして接続し,起動
BIOS できちんと認識されているか見る
次にシングルユーザモードで起動

まず最初に起動ディスクを作成します
新しいドライブにしたとき必ず必要になります
# fdformat /dev/fd0H1440
# dd if=/boot/vmlinuz of=/dev/fd0
# rdev /dev/fd0 /dev/hda2

次に fdisk で領域を確保
swap を /dev/hdb1 512MB
/ を /dev/hdb2 10GB
/home を /dev/hdb3 残り全部
として割り当てました

次におのおのの領域をフォーマットします
# mkswap /dev/hda1
# mke2fs -j /dev/hda2
# mke2fs -j /dev/hda3

次におのおのの領域に不良ブロックがないか調べます
ここで -w オプションは書き込みモードなので
決してデータの入っているドライブでこのオプションをつけないでください
データを消失します,読み込みモードは -v で実行してください
# badblocks -o badblocks-hdb1.txt -w /dev/hdb1
# badblocks -o badblocks-hdb2.txt -w /dev/hdb2
# badblocks -o badblocks-hdb3.txt -w /dev/hdb3
2-3個くらいはエラーが出ますがこれくらいは仕方がありません,
しかしあまりにも多い場合は初期不良として
ショップに交換をお願いするといいでしょう

次に,適当なマウントポイントを作り,マウントします
# mkdir /mnt/root_back
# mkdir /mnt/home_back
# mount /dev/hdb2 /mnt/root_back
# mount /dev/hdb3 /mnt/home_back
ここで mount コマンドで正しくマウントできているか確認してください
間違ってマウントすると大変なことになります

次にいよいよバックアップをします dump コマンドを使用します
Vine では dump.static restore.static というコマンドになっています
# dump.static -0 -f - / | ( cd /mnt/root_back ; restore.static -xy -f - )
# dump.static -0 -f - /home | ( cd /mnt/home_back ; restore.static -xy -f - )
-f - の後がバックアップ元ディレクトリ
cd の後がバックアップ先ディレクトリです.
おそらくマウントせず直接デバイスファイルを指定してもいけると思いますが,
とりあえず念のため.

これでもとのディスクとほぼ同じディスクとなりました.
しかしパーティションのラベルや LILO の設定までは引き継がれません.
パーティションのラベルがなくても影響が出ないように /etc/fstab を
昔ながらの形式にしておきます.最近のディストリビューションでは
パーティションを
LABEL=/hoge   /huga   ext3 defaults     1 1
のような方法でマウントしますがここでは,
/dev/hda*    /huga    ext3 default     1 1
とします.

シャットダウンして元にあったディスクを取り外し,
新しいディスクをプライマリマスタとして接続し,起動

恐らく,LILO が途中で止まるでしょう
これは LILO がディスクの区画番号でカーネルを覚えている仕組みに原因があります
dump でコピーしたカーネルの位置が元にあったディスクと新しいディスクで一致しないからです
そこで最初に作った起動ディスクで起動します.そして再び LILO を実行して
LILO を復活させます.すると次回からはきちんとハードディスクから起動できるでしょう.

VeriSign DNSゾーンワイルドカードAレコード登録対策

2003/09/16 より.COM と.NET トップレベルドメインを管理する VeriSign が.COM と.NET のDNSゾーンにワイルドカード A レコードを設定しました.登録されていないドメインのホストを検索すると必ず 64.94.110.11 が返ってきてしまうようになりました.HTTP 以外のプロトコルへの影響も大きく,これまではタイプミスをした場合にはドメインが存在しない,という単純明解なエラーメッセージが返されていましたが,今後は原因不明のタイムアウトや謎のエラーメッセージに悩まされるかもしれません.これではまずいので早速対策済みの BIND がアナウンスされました.2003/09/19 現在,時期リリース版の ISC BIND 9.2.3rc1 と,現在のバージョンである ISC BIND 9.2.2 へのパッチがリリースされています.対策としては当該バージョンに更新して,named.conf に以下を追加します.

named.conf
# 他の GTLD でも使うことができます.
zone "com" {
        type delegation-only;
};

zone "net" {
        type delegation-only;
}; 

ProFTPd でホストとユーザの制御

ProFTPd を使用していて,特定のホストでかつ特定のユーザのみのログインを許可したくなりました.そこで,

 
# Login setting
# Access control by hosts & users
<Limit LOGIN>
  Order allow,deny
  Allow from 12.34.56.0/24
  AllowUser joe,hoge,huga
  Deny from all
</Limit LOGIN>

としても,条件的には OR となってしまい,例えば,ユーザが joe であればホストは関係なくなります.そこで,

 
# Login setting
# Access control by hosts
<Limit LOGIN>
  Order allow,deny
  Allow from 12.34.56.0/24
  Deny from all
</Limit LOGIN>

# Access control by users
<Limit LOGIN>
  Order allow,deny
  AllowUser joe,hoge,huga
  Deny all
</Limit>
とすることで,Allow from に適合してかつ AllowUser に適応するものだけログインを許可できました.