2008/05/21(水)ML115 G1/Ubuntu 8.04 LTS Serverセットアップメモ
C3サーバからまともなサーバに変更するため、ML115 G1を導入してセットアップをしました。そのときのメモです。
ハードウェアの選択
本体 | HP ProLiant ML115 |
---|---|
CPU | Athlon BE-2350 (2.1GHz) |
メモリ | 4GB (DDR2-800 2GB×2) |
HDD | Hitachi Deskstar P7K500 500GB×2 |
LAN | GbE-PCI2(玄人志向) |
ML115は送料入れて18Kぐらい。まともなケースと安物でも電源とマザーボードと思えば安いものです。
CPUはディアルコアに載せ替え。2400BEにしておけばよかったかな……とも思いましたが。メモリは多めの4GB。
HDDは日立のSATA500GB。色々悩んだ挙げ句、ソフトウェアRAID(ミラー)にしました。
オンボードのLANは Broadcom(PCI Express接続)のまっとうなものですが、ジャンボフレーム非対応のため泣く泣く増設しました*1。GbE-PCI2ですが、2~3Wぐらいで性能もそこそこ、値段も安いし満足しています。
サーバの選択 / Ubuntu Server 8.04LTS
慣れているFreeBSD、定番Debian、間違っても使いたくないFedoraなど考えましたが、Ubuntu Serverにしました。完成度はUbuntuデスクトップほどではないようですが、Xをいれればデスクトップとしても使えるのでいいかなと。設定等々は良くも悪くもほぼDebianと一緒でした。
インストール時にソフトウェアRAIDを構築できるのですが、ケーブルが1本しか付属してなかったため後から構築することに……。
root と wheel
Ubuntu は sudo によって root 権限作業を行う仕組みですが、これでサーバにするとどうかしてるので root にパスワードを設定。
$ sudo passwd root $ su -
sudo を無効化します。/etc/sudoersから次の行をコメントアウト。
#%admin ALL=(ALL) ALL
ついでに、wheelを導入。
# shadowconfig off # vigr # shadowconfig on # vi /etc/pam.d/su ←pam_wheel.so を有効化 # vi /etc/sudoers ←sudo を無効化 /etc/pam.d/su の該当部 auth required pam_wheel.so group=adm
wheel(ホイール)とは、wheelグループに所属する場合のみ su でrootになれる機能。FreeBSDではこれが標準で、他の一般ユーザーが不当にrootのパスワードを入手してもrootになれないようにします。この場合、adm が wheel グループとなります。(wheelというグループを作る場合は、group指定は不要です。)
ロケール
デフォルトのロケールは /etc/default/locale 。標準では "ja_JP.UTF-8" だけになってしまうのでロケールを追加。
/var/lib/locales/supported.d/local を編集
ja_JP.UTF-8 UTF-8
ja_JP.eucJP EUC-JP
en_US.UTF-8 UTF-8
en_US ISO-8859-1
編集結果を反映させるため以下を実行。
# dpkg-reconfigure locales
日本語マニュアル
日本向けパッケージの追加をしてから。
# apt-get install manpages-ja # mandb
EUC-JP でマニュアルを表示させる場合は、jless を導入の上で以下の環境変数を設定のこと。
JLESSCHARSET=japanese-euc PAGER=jless LANG=ja_JP.eucJP
Jumboフレーム設定
/etc/network/interfaces を編集
iface eth1 inet static mtu 9000
ついでにWindows側は、デバイスの詳細設定からジャンボフレームを有効に。TCPのWindowsSizeを増やしておく。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPWindowSize (9000-40)*64=573440 (9000-40)*128=1146880
"-40"はTCPのヘッダサイズを引いている。それぞれ64パケット分、128パケット分のバッファの設定。
numlockをオンにする
/etc/console-tools/config という設定ファイルがあり、ここに記述することでコンソールのnumlockをonにできるはずなのですが、なぜか有効にならない。どうやら起動スクリプト(/etc/init.d/console-screen.sh)が組み込まれていない模様。
# update-rc.d -f console-screen.sh remove # update-rc.d console-screen.sh defaults
スクリーンフォントが指定されていないと動作があやしいバグがあるので、スクリプト中の次の3行を「if [ "$SCREEN_FONT" ]」の手前に移動するとよい。
NUM_CONSOLES=`/bin/fgconsole --next-available` NUM_CONSOLES=$(($NUM_CONSOLES - 1)) [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
メモ
- aptitude …… パッケージ管理
- update-rc.d …… 起動/非起動の管理
- lsof …… プロセスが開いているファイルの一覧
- sudo apt-get install ubuntu-desktop-ja …… X環境。まだ入れてない。
- Apache 実行ユーザの変更
/etc/apache2/envvars の変更。APACHE2_RUN_USER を追加のこと。*2 - /etc/ssh/sshd_config "PermitRootLogin" が有効になっていて危険すぎるので、noに設定。
- logwatch …… ログの環視
- /etc/console-tools/config …… コンソールの設定、スクリーンシャッター(ブラックアウト時間)など
Cool'n'Quiet (powernow-k8) の設定
Linuxは元々CnQに対応していますが、残念ながら電圧可変は使用出来ません。カーネルにパッチを充てて再構築する必要があります。
# sudo apt-get install build-essential kernel-package libncurses5-dev # sudo apt-get install linux-source # cd /usr/src/linux-source-2.6.xx
# make menuconfig # make # make modules_install # make install
Ubuntuのカーネルはinitrdを使っているので標準状態では、ほぼすべてのデバイスがモジュールになっています。ですので、このままでは再起動してもHDDを認識できず、途中で必ず止まります。HDDとファイルシステムを認識するのに必要なデバイスをカーネルに組み込んでしまえばいいのですが、initrd-xxx.img というイメージを再構築しても構いません。
# update-initramfs -u
してから、構築された initrd-xxx.img を grub 側で正しく指定するという作業が必要になります。以上、蛇足。
Cool'n'Quietで電圧可変の設定
パッチを充てたモジュールですが、今回は自動可変ではなく手動可変にしました。自動可変にする際は以下のデーモン等からお好みで導入・設定してください。
- cpufrequtils
- cpufreqd
- powernowd
これらを入れると、カーネルモジュール(powernow-k8)のインストールなども自動で行われるようです。
電圧可変を有効にするためには、モジュールインストール時に引数を与える必要があります。/etc/modprobe.d/options に例えば以下のように指定します。
powernow-k8 -freq_list=2100,2000,1800,1000 vcore_list=950,900,850,825
この場合 2000MHz→0.95V、1800MHz→0.90V という対応になります。電圧はmV単位です。powernow-k8の制限で指定出来る周波数は限られています。不便ですが仕方ありません。どの周波数なら指定可能かは、modprobe powernow-k8 を実行した際の dmesg をご覧下さい。
周波数の手動可変
デーモン等は一切導入せず、/etc/modprobe.d/options にも書かないで、/etc/rc.local に次のように設定しました。
modprobe powernow-k8 freq_list=2100,2000,1800,1000 vcore_list=950,950,925,800 echo "userspace" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
あとは echo だけで周波数を変更できます。
●1GHzへ # echo "1000000" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed ●2GHzへ # echo "2000000" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed ●現在の状態表示 # cat /proc/cpuinfo
apt-getで自動更新させない方法
パッケージ管理外のモジュール*3依存関係やLinuxカーネルなどパッケージを更新させたくないときには、特定パッケージを hold します。
- dpkg で hold させる方法がある。
- apt.conf に hold を設定する方法がある。
- aptitude の hold は、aptitude でしか有効ではない。
dpgkによる方法
ホールド # echo package hold | dpkg --set-selections ホールドの解除 # echo package install | dpkg --set-selections インストール済パッケージリスト # dpkg -l ii インストール済 hi hold and インストール済 rc 削除済
....aptは扱いやすいのに、dpkgの扱いにくさはどうにかならないものか……
apt.confによる方法
apt.conf.d/05aptitude に次のような設定。
aptitude::Keep-Unused-Pattern "^linux-image.*$ | ^linux-restricted-modules.*$ | ^linux-ubuntu-modules.*$";
ローカールパスワードと Samba パスワードを一致させない
ローカルパスワードは passwd コマンドで、sambaパスワードは smbpasswd で変更する約束になっていますが、最近は一元管理化の流れか、どちらかでパスワードを変更すると片方のパスワードも自動的に変更されるようになっています。
要するにデフォルトのままだと、Sambaパスワードとローカルパスワードが常に一緒になってしまう。*4
セキュリティ上若干気持ち悪いので、2つのパスワードを分離するための方法。
/etc/pam.d/common-password
以下をコメントアウト
# password optional pam_smbpass.so nullok use_authtok use_first_pass missingok
/etc/pam.d/common-auth
以下をコメントアウト
# auth optional pam_smbpass.so migrate missingok
/etc/pam.d/samba
# @include common-auth # @include common-account # @include common-session auth requisite pam_smbpass.so migrate missingok account required pam_unix.so session required pam_unix.so
その他
おまけ/省電力への挑戦
電源は力率改善機能(PFC)搭載らしく常時99%でした。この構成でアイドル時60W。CD-ROMの電源を引っこ抜いて59W。個別に見ていくとこんな感じ。
- HDD 1個 5W×2=10W
- GbE-PCI2 3W
非力でないクライアントマシンで試したところ、PCIe(内部接続)のBCM5721(JamboFrame非対応)がSamba共有で70MB/s、GbE-PCI2は30MB/sで頭打ちだったのでそこが限界速度らしいです。CPU負荷があがったり、CPUが遅いマシンでパフォーマンスが極端に低下したけど(汗) とりあえずGbE-PCI2を抜いて、BCM5721をギガでリンクさせました。……消費電力に変化なし。BCM5721の増えた電力=GbE-PCI2の電力らしい。残念な結果。
もう1つ、悪名高いデルタ電源を優秀と名高いEA-380にとりかえてみました。それだけで-10W。49Wを達成しました。ちなみに、この2つPS-ON(電源だけONに)して消費電力を計ると5Wと11Wでした。何もつなげなくても11Wって酷すぎ。
Athlon X2 BE-2350という構成から考えると49Wは明らかに電気食い過ぎなのですが(HDDを加味しても35~40Wぐらいが相場っぽい)、原因を探るとチップセット(サウスブリッジ?)が触れないぐらい発熱しているのでどうやらここの模様。NFP3400というサーバ用チップセットのようですが、今度サーバを組むときは普通のPCにすると猛反省しました(汗)。HDD2台でRAIDは譲れませんが、それでも30W台にはしたいところです。