SC430のうろ覚え

最終更新:

情報収集〜発注

Dellのパンフレット

先輩からDellの法人向けパンフをもらう。どうせサーバっつってもうちの会社じゃDimension3100Cか5100Cかなぁ。ふーん、サーバ専用マシンもあるんだ・・・。

Dellのオンライン見積もり

Dimension3100の見積もりしてみる。見積もりはタダだしな。この頃の予算はできるだけ安く、だった。

Dellのオンライン見積もり・その2

しばらくブランクがあったが、その間にどこかで気になったサーバ用マシンSC430も見積もりしてみる。先輩との打ち合わせで予算はモニタ込みで10万で設定。5100も同じように見積もった。

使えるのか?情報収集

かなりSC430が気になってきたので、上司へ見積もり提示する前に大慌てで情報収集にあたる。5100なら普通のWindowsが動くのは当然だから大丈夫だが、SC430はWinXPとFreeBSDサポート外なのよね。

情報収集の結果
主要スペック対応状況
チップセットIntel E7230XPは付属CDのドライバで騙すかメーカー純正ドライバで対応、FreeBSDではamd64で対応
CPUPentiumD 820 (EM64T)XP対応、FreeBSDではamd64で対応。
ネットワークBroadcom BCM5721 ギガビットFreeBSD対応、XPは付属CDのドライバで騙すかメーカー純正ドライバで対応。
グラフィックオンボード XGI Volari Z7XPは付属CDのドライバで騙すかメーカー純正ドライバで対応、FreeBSDではX11使わないから問題ない(笑)
サウンド無し使わないから問題ない(笑)
HDDとかメモリSATA/DDR-333→400多分大丈夫でしょう(笑)。メモリは値段の高さから推測すると高耐久タイプと勝手に期待。

FreeBSDは何事もなくインストール実績を確認、WinXPも2000からのアップデートか、SP2なら問題なくインストールできるらしい。

内定

見積もり提示前に先輩と打ち合わせ。第1候補としてSC430を勧める事に。「サーバ用のパーツ使ってますからそこらのマシンとは違います」が売り文句。(ほんとかいな(笑))

決定

上司からゴーサインが出た。余計なものを付けるよりもシンプルで安定したマシン構成、がわかってもらえたらしい。

発注

先輩と発注。あれ?・・・メモリをDDR-333からDDR-400に変えても値段が一緒だったと思ったが・・・、変えちゃえ。それとモニタは2台で共用するので、モニタ有りとモニタ無しで注文した。

やっぱ船便か

なかなか来ねーな。。。進捗情報確認では2週間ぐらいかかると。

来た

着いたけど・・・モニタ有りが先に来て、2日後にモニタ無しが着いたのはちょっとどうか?と・・・。


開梱〜OSのインストール

開梱式

先輩から「記念だからおまえが箱を開けろや。」とな(笑)。お神酒と榊を捧げ祝詞をあげて・・・(心の中での話だが(笑))・・・開梱する。思ったより結構でかい感じがするかも。とりあえずネットワーク以外の接続する。

マニュアル人間、でっす〜 (消えますよ。←いやいや消えません)

まずマニュアルに目を通す。基本でしょう。えっ俺だけだって?

初躓き(つまづき)

ん?セットアップCDでセットアップしろって?なんだこりゃ?とりあえず電源入れてみるか。おお!グラフィカルな画面が登場。でもやはりセットアップCDを入れて再起動しろってことらしいが、意味がようわからん。結局セットアップCDを入れて再起動したがやはり意味がようわからんので無視。

謎の領域

一旦WindowsのCDを入れて気がついたのだが、セットアップCDで起動した・しないに関わらず、あらかじめ数メガのプライマリパーティーションが作られている。中身はMSDOSチックなのだがたいした大きさでもないし、確かたいした物も入ってなかったはず。最終的にはいらないと判断し、後の作業で全てまっさらにすることに。

BIOS設定

いらないデバイスは不使用にしておこう。起動順もHDD→CDに。

ハードウェアの使用前点検

BIOSと同じような起動方法でメンテナンスプログラムが動くので、先にHDDのチェックを行った。メモリも・・・と思ったがかなり時間がかかりそうだったので短い奴だけに。

CDが認識しない

さて、FreeBSD6.1-RELEASE/amd64のCDを入れて起動。・・・ブートメディアが見つからない。なんでCDが認識しないの?・・・と思ったら。そうか、CD-ROMドライブはSATAじゃなくてATAだからデバイス未使用にしちゃだめだった(←馬鹿)

OSインストール

何事もなかったようにCDブートし、FreeBSDのインストール。最小ディストリビューションで必要なものを付け加えた。ソースも全てインストール。パッケージは後に入れるPHPとMySQLとSambaに必要なものとPOPデーモンとsudoかな。気になるのがパッケージインストール作業中にXMLあたりで失敗したのかどうなのかよくわからないがメッセージが出たことかな。管理者パスワードとタイムゾーンとネットワークの設定を済ませておく。ここまでは小一時間で済んだ。


システムのカスタマイズ

カーネル再構築

運用前だからいろいろ弄るのは今のうち。ということでカーネルの再構築をしてみる。説明どおりにカーネル設定ファイルをコピーして編集する。いらないデバイスを削るためだ。SCSI・RAID・FIREWIRE・未搭載のNICなどなど。あとプリンタや外部USB機器(プリンタ・スキャナ・フラッシュオーディオ等)も削った。次にmake.confの編集。CPUに合わせた最適化オプションをつける。そして

% make buildkernel

あれ?

PentiumD820って何てCPU?

「noconaってcpuは何?」ってエラーだった。てっきりカーネル設定ファイルのcpu項目ってのはnoconaとすると思ったのだが、試行錯誤や調査の結果、やはり最初のままHAMMERでいいみたい。

最適化オプションはいずこへ?

最適化オプションでMMXやらSSE3やら設定したのだが、途中でそれを無視するオプションが実際に使われていることに気がついた。なぜ?と思っていろいろオプションを変えてみることに時間を費やしていたが、開発者情報によるとあえてカーネル構築ではそのタイプの最適化を行わないことになっているそうな。意味がわからんのだが仕方が無いのでそうしておく。

それでもエラー

それでもmake中にエラーで止まる。デフォルトのカーネル設定だと最後までいくのに。仕方がないので(旧Macのトラブルシューティングで有名な)消去法で試行錯誤してみた。するとSCSIカード積んでいないのに

device		scbus		# SCSI bus (required for SCSI)

を外すのをやめたらエラーが出なくなった。なんじゃそりゃ。

起動してる?

何事もなくmake installkernelも済んだ。でも再起動してみるとなんか見慣れない起動画面だ。ブートメニューの後、ログインまで黙ってしまうのだ。止まっているわけではないのだが、認識したデバイスとかが表示されていたのが表示されない。なんとも気持ち悪いので試行錯誤した結果、

device		splash		# Splash screen and screen saver support

を外すのをやめたら表示されるようになった。起動時のタイトル画面とスクリーンセーバって書いてあると思ったのに、そんな意味もあるのか。

2つめのCPUは?

再起動してみると今度はデバイスが表示されるようになったので確認をしてみた。ちゃんと新しいカーネルの名前がCOLONEL(←カーネルサンダースのカーネル:笑)になっている。でもなんかおかしいな、あれ?2つ目のCPUはどこへ行った?。確か以前の起動時には2つ目のCPUも有効になったようなメッセージがあったはずだが。どうにか調べてみたら

options 	SMP			# Symmetric MultiProcessor Kernel

の行をつけ足す必要があったらしい。なるほどね。

ちくっ

上司から「新しいサーバはまだか?」と言われてしまった。「今、最新のCPUに合わせてチューニング中です」と答えておいた。えっ笑うところ?

世界征服は

カーネル再構築がうまくいったので(昔はうまくいった例がなかった)、調子に乗ってシステムの再構築もやってみることに。make buildworldとやってみたが、途中でエラーで止まる。原因もさっぱりだったしこれ以上時間をかけるのはさすがにちょっとまずいかも?と思い、このまま断念することにした。

仕切り直し

いろいろごちゃごちゃいじってきたので、一旦ハードディスクをまっさらにして今までの事を正しいやり方でやり直すことに。この時どうせならと思い、設定ファイルを保存して殆どの作業をシェルスクリプトにした。そしてネットワークケーブルの接続。


各種設定

各種の設定

DNS,NFS,POP3,SMTP,NTP・・・この辺もすでに経験済みだったので自作シェルスクリプトにて自動で設定ファイルをコピーして完了。

ユーザの引越し

そーいや利用者にユーザアカウントを新しいサーバで登録し直してもらわなきゃな。とか思っていたのだが、実はお引越しできるんじゃん?と思って調査してみたら・・・あった。古い/etc/master.passwdの内容を必ずvipwで新しいmaster.passwdに追加編集、/etc/gruopも同様に追加編集して、ユーザのホームディレクトリを手動で作ればOK。当然ディレクトリのオーナー情報・パーミッションの再設定も忘れずに。


主要サーバのインストール〜データの引越し

主要サーバプログラムのビルド

apache2とMySQLとPHP5とSamba、それに依存するものをまとめてコンパイル&インストール。この辺もすでに経験済みだったので自作シェルスクリプトにて自動でやってしまった。

apache2
apache.build.sh
#!/bin/sh

#### (compile option enviroments)
export CFLAGS="-DHAVE_BROKEN_REALPATH -O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse"
export CXX=gcc
export CXXFLAGS="-O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -felide-constructors -fno-exceptions -fno-rtti"

#### apache2 build
cd /usr/src
tar xvf /cdrom/dist/httpd-2.0.59.tar.gz
cd httpd*
./configure \
--enable-auth-digest \
--enable-dav \
--enable-dav-fs \
--enable-expires \
--enable-mime-magic \
--enable-so \
--enable-vhost-alias \
--with-mpm=prefork \
--enable-suexec \
--with-suexec-caller=www \
--with-suexec-docroot=/home/export/www \
--with-suexec-uidmin=100 \
--with-suexec-gidmin=100 \
--with-suexec-userdir=public_html \
--enable-static-support \
--enable-static-rotatelogs
make
make install
make clean
% sh apache.build.sh
MySQL4
mysql.build.sh
#!/bin/sh

#### (compile option enviroments)
export CFLAGS="-DHAVE_BROKEN_REALPATH -O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse"
export CXX=gcc
export CXXFLAGS="-O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -felide-constructors -fno-exceptions -fno-rtti"

#### MySQL5 build
mkdir /home/export/mysql
cd /usr/src
tar xvf /cdrom/dist/mysql-5.0.27.tar.gz
cd mysql*
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/home/export/mysql \
--with-unix-socket-path=/tmp/mysql.sock \
--with-mysqld-user=mysql \
--with-charset=ujis \
--with-extra-charsets=ujis,sjis,utf8,binary \
--enable-assembler \
--enable-local-infile \
--enable-thread-safe-client \
--disable-shared \
--with-mysqld-ldflags=-all-static \
--with-pic \
--with-named-z-libs=not-used
make
make install
make clean
% sh mysql.build.sh
PHP5
php.build.sh
#!/bin/sh

#### (compile option enviroments)
export CFLAGS="-DHAVE_BROKEN_REALPATH -O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse"
export CXX=gcc
export CXXFLAGS="-O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -felide-constructors -fno-exceptions -fno-rtti"

#### PHP5 build
cd /usr/src
tar xvf /cdrom/dist/php-5.2.0.tar.bz2
cd php-5*
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-scan-dir=/usr/local/etc \
--with-zlib \
--disable-cgi \
--enable-bcmath \
--enable-calendar \
--enable-ctype \
--enable-exif \
--enable-ftp \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-tiff-dir=/usr/local \
--with-ttf \
--with-freetype-dir=/usr/local \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--with-mime-magic \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--enable-sockets \
--enable-memory-limit \
--enable-zend-multibyte
make
make install
make clean
% sh php.build.sh
Samba3
samba.build.sh
#!/bin/sh

#### (compile option enviroments)
export CFLAGS="-DHAVE_BROKEN_REALPATH -O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse"
export CXX=gcc
export CXXFLAGS="-O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -felide-constructors -fno-exceptions -fno-rtti"

#### Samba3
cd /usr/src
tar xvf /cdrom/dist/samba-3.0.23c.tar.gz
cd samba*
cd source
./configure \
--disable-cups \
--with-i18n-swat
make
make install
make clean
% sh samba.build.sh
嵐の前の静けさ

再起動してサーバ接続・・・全てOKですな。apache確認ページ、phpinfo()も出たし、MySQLもとりあえず接続OK。

はて?MySQLのユーザって

で・・・MySQLのユーザってどうやって作るんだっけ?参考書をひっくり返してユーザ作成。あれ?PHPからアクセスできないじゃん。あ、localhostとかでの設定の考え方が微妙に間違えてた。最終的にはこれまたスクリプト・・・mysqlに渡すSQLをファイルにして自動処理。おけ。

嵐がやってきた

本来の目的のひとつであるPHPによるWebアプリケーションを移行する。まぁ殆どスクリプトやデータファイルのコピーとアドレスの変更とかそんなんだけど。で、データの移行作業が完了してシステムを動かしてみた・・・。

もっ・・文字化けがっ!

あれーーっ!設定間違えたかなー?エンコーディングは?スクリプトは?・・・。フォームから入力した日本語が??だらけに。おそらくシフトJISのHTTP入力(POST/GET)でマルチバイト検出か翻訳変換(transrate)に失敗してLatinとかで変換しているのではなかろうか?。単純なテストスクリプトではうまく動作しているが、肝心なスクリプトだと先頭でチェックしても化けている。しまいには特定のスクリプトで返事が返ってこない。httpdの子プロセス?がCPUを50%以上削ってるし・・・(デュアルコアなので実際には片方のCPUが100%近く)。もしかしてリリースされたばかりの最新版PHPだからバグか?と思って一つ前のバージョンのPHPを再ビルドしてみたがやっぱりダメ。バグ情報も出ていないようだし・・・。マルチバイト関係の設定を旧サーバから上書きしてもダメ。結局PHP5をあきらめてPHP4の最新版をインストールしてみたら・・・動いた。(泣)

ひくひく

軽い放心状態で先輩に「PHP5はあきらめました。XREAがPHP4を続行する気持ちがなんとなくわかったような気がします・・・」と報告。この時点ではPHP5で導入されたonigurumaとかいうライブラリが原因ではないかと思っていた。またXREAがPHP5を導入しないという話を聞いていたが、今ではPHP5も導入されている。

最後の引越し

図面データを引越しするので設計の人に作業をとめてもらうよう頼む。CADマシンをnfsマウントしてからデータディレクトリを丸ごとコピー。方法は

mount -t nfs コピー元ホストアドレス/コピー元ディレクトリ /mnt
cp -R -p /mnt /home/コピー先ディレクトリ
umount /mnt

その後の追加インストール

画像の魔法使いをコンパイル

GhostScriptを入れておくとPDFも変換できるようなので、インストーラCDからパッケージインストールしておいた。んでImageMagickのソースを拾ってきてインストール。

imagemagick.build.sh
#!/bin/sh

#### (compile option enviroments for ImageMagick)
export CFLAGS="-DHAVE_BROKEN_REALPATH -O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse"
export CXX=gcc
export CXXFLAGS="-O3 -march=nocona -mtune=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -felide-constructors -fno-rtti"

#### ImageMagick
cd /usr/src
tar xvf /dist/ImageMagick-6.3.4-4.tar.bz2
cd ImageMagick*
./configure \
--enable-lzw=yes \
--with-quantum-depth=8
make
make install
make clean
% sh imagemagick.build.sh

下調べをしていればあまり問題はなかったな。環境設定は使いまわし。GhostScriptも中でコマンド呼び出ししているみたいだし。

今更気がついたこと

システムのカスタマイズのカーネルの再構築の話で

device		scbus		# SCSI bus (required for SCSI)

を外すのをやめたらエラーが出なくなったという事があったのだが、よーく見返してみると

device		umass		# Disks/Mass storage - Requires scbus and da

あ゛・・・ちゃんとscbusが必要だと書いてあるじゃん・・・。

さらに、make buildworldで失敗したのはもしかしたら-O3が原因だったかも・・・。過度な最適化オプションはバイナリの動作だけでなくコンパイルにも影響するような気が。


続く


SC430インデックスへ
トップページへ

こな