設定したことを忘れないように書いてあります。
会社のサーバでは、NTのディスクをsmbmountでmountしている。このmount先のディスクが結構逼迫していてしょっちゅう ファイルの削除が必要となる。いままではdfで見ていたが、MRTGで監視することにした。
まず、MRTGの監視をするためのスクリプトを作成する。 これは、標準出力に、データ1、データ2、uptimeとタイトルのコメントになるように4行を出力するようにすればOK。
#!/bin/sh AVAILABLE=`df -k | grep -i $1 | awk '{print $4}'` USED=`df -k | grep -i $1 | awk '{print $3}'` UPTIME=`date +"%m/%d %H:%M"` echo "$AVAILABLE" echo "$USED" echo "$UPTIME" echo "$1 Disk Space"
以上のものを、dv.shとして登録。次に、MRTGのcfgファイルを作成する。 通常はcfgmakerを使えば作ってくれるが、今回はスクラッチで記述。
## mrtgがhtmlを出力するディレクトリ。 WorkDir: /home/www/mrtg/ ## 出力する言語 Language: eucjp ## スクリプトを起動する場合は、バッククオートでスクリプトを囲む。 Target[host1]: `/home/mrtg/dv.sh host1` ## 最大値。この場合はディスク容量。 MaxBytes[host1]:21229568 ## MRTGは通常、取得値が最大値付近になるようにY軸をスケーリングするが、 ##それを抑止(最大値でグラフ化する)する設定。 Unscaled[host1]:dwmy ## タイトル Title[host1]: host1 ディスク使用状況 ## ページの先頭に表示するhtml PageTop[host1]:<h1 style="color:#000066;border-style:solid;border-width:0em 0em 0.1em 1em;padding:0.3em">host1ディスク使用状況</h1> ## ページの最後に表示するhtml PageFoot[host1]:<hr /><p align="right"><a href="./index.html">戻る</a></p> ## bodyタグ BodyTag[host1]:<body style="margin:3em;" bgcolor="#66ccff"> ## バックグラウンドの色指定 Background[host1]: #99ccff ## オプション。MRTGは通常、今回取得値-前回取得値をグラフ表示する値としているが、 ## gaugeを指定した場合は、取得した値をそのままグラフの値とする。 ## grawrightは右側から左側にグラフを描く設定。 Options[host1]:gauge, growright ## 月表示のグラフを作成しない Suppress[host1]:m ## 通常 X:400 Y:100 ドットでグラフを作るが、Yを200で作成するように設定。 YSize[host1]: 200 ## Y軸の凡例 YLegend[host1]:Available Disk Space ## 凡例の単位 ShortLegend[host1]:Byte ## 線1の凡例 Legend1[host1]:空きディスク容量 ## 線2の凡例 Legend2[host1]:使用ディスク容量 ## 線1(通常INのためIとなる)のグラフの下に表示する凡例 LegendI[host1]:空き容量 ## 線2(通常OUTのためOとなる)のグラフの下に表示する凡例 LegendO[host1]:使用容量 ## 取得する単位の変換。取得した値をどの単位として扱うかを記述。 ## dfではkByteで取得されるため、kから単位が始まるように記述。 kMG[host1]:k,M,G,T,P
後は、WorkDirに記述できるユーザで、5分ごとにcron起動すればOK。エラーはメールで飛ぶようにした。 最初の2回はWARNINGが飛ぶ。
### MRTG 0-59/5 * * * * /usr/bin/mrtg $HOME/dv.cfg > /dev/null
Raid化しているので、Vine LinuxのKernelのRPMは使用できない。で、自分でkernel Packageを作成するのだが、
mkkpkg --rpmarg="--target i686" kernel-2.4.22-0vl2.10.src.rpm menuconfig Welcome to mkkpkg Please wait for a while "make menuconfig" to be executed... Executing "rpm -bp /usr/src/redhat/SPECS/kernel-2.4.spec"...done. Input your kernel Revision [SRPM = 0vl2.10]: 99vl0 kernel Revision [yours = 99vl0]. OK? [y/n]y Do you want to edit kernel-2.4.22-99vl0.spec? [y/n]n Do you want to build SRPM? (If no, only RPMs are built) [y/n]n Ready for make "menuconfig" by kernel-2.4.22-i386.config [Push enter to continue] Now we are prepared for executing: rpm -bb /usr/src/redhat/SPECS/kernel-2.4.22-99vl0.spec --target i386 --target i686 Log output goes to /tmp/kernel-mkkpkg.log. You can read it by following sequence: 1. Push "Ctrl+Z" to suspend the next long process 2. Type "bg" to continue background 3. Use "less" to print /tmp/kernel-mkkpkg.log 3.1 Push "Shift+F" to "Forward forever; like tail -f" 3.2 If you want to stop reading, Push "Ctrl+C" 4. Type "fg" to get back to mkkpkg X. If you are using X, you can read log thru another term window It takes about 10-240 minutes depending on your configuration and also depending on your machine: It's not freezing! Ready for Action? [Push enter to continue] [Push enter to continue] Started: Mon Jan 12 13:43:14 2004 Building... Finished: Mon Jan 12 15:23:36 2004 [Push enter] Created: /usr/src/redhat/RPMS/i386/kernel-2.4.22-99vl0.i386.rpm /usr/src/redhat/RPMS/i386/kernel-doc-2.4.22-99vl0.i386.rpm /usr/src/redhat/RPMS/i386/kernel-headers-2.4.22-99vl0.i386.rpm /usr/src/redhat/RPMS/i386/kernel-source-2.4.22-99vl0.i386.rpm How do you want kernel-mkkpkg.log in /tmp? m)move to /root r)remove *)leave in /tmp : Do you want to clean up BUILD tree and files in SOURCES? [y/n] y
としてKernel Packageを作成したが、Kernel Panicで起動しない。 起動するkernelのconfigをそのまま読み込ませても同様。 しかたがないので、sourceを取得して、普通にmake configで実施。 同様に以前のkernelで保存したconfigを読み込ませて作成した所、問題なく起動。なぜだ。
apt-get時にkernelが出るのが気になっていただけなので、 rpmの方は起動しないkernelでも、rpmのデータベースがアップデートされたため メッセージはでなくなり、とりあえず良しとする。
lftpがうまく動かない。Webの編集はローカルサーバで行い、lftpで自動的にupしているのだが、これが機能しなくなった。 なぜだぁ〜と悩んでいたが、ふとマザーを変えてからだと気づき、
# hwclock --show 2000年01月25日 14時43分35秒 -0.758939 秒
とすると、4年も前になっていることが判明。ntpdを動かしているから安心などと思っていたが、 修正しきれないほど昔になっていた。しかし普通せめて2003年の1月だろ?なんで、2000年なんじゃい。 そんな古いマザーでもなし。もしかしてWindowsXPのインストールトラブル対策か?
# ntpdate 210.173.160.57 # hwclock --systohc # hwclock --show 2004年01月07日 23時49分16秒 -0.422602 秒 # /etc/init.d/ntpd start
で、ntpdateで時計を合わせたあと、ハードウエアクロックに書き込み終了。 当然ntpdも落ちていたので起動して、完了。これでlftpは正常に動くはず。
RAIDを再構成してから、Ether0がリンクアップダウンを繰り返し非常に不安定となる。 fsckした際にファイルが壊れたかもと思い、再度パッケージをインストールすることに。
ちょうどVine Linuxも3.1に上がっていたため、 /etc/apt/sources.listの3.0となっている部分を3.1と書き換え、apt-get update -> apt-get dist-upgradeを実行。 途中で何度かupgradeが失敗したが、rpmのdbが変になるたび、rpm -e --justdb --nodeps --allmatchesで不整合のあるパッケージを削除しつつ、完了。
その後、カーネルソースを取得し、mkkpkgでカーネルパッケージをraid対応版として作成、インストールして再起動するが、動作は変わらず。
このような状態はは、10/100、Half/Fullなどのオートネゴシェーションに失敗した際に発生することが多い。 固定設定ができれば問題ないのだろうが、設定が不明のため、カードを交換。 従来はIntel EtherExpressProを使用していたが、昔の3COM 3C905を引っ張りだし設定。 insmod 3c59xとやると認識したので、 /etc/modules.confに
alias eth0 3c59x
と記述して完了。
ということで、日立のHDS728080PLAT20を購入。 今までは、40GByteだったディスクを80GByteに。RAID-1のため余分な40GByte分の容量は使われないが、RAIDを再構成するときに、 既存より少ない容量では構成できないため。一応容量調整用として、swap領域で調整は可能にしていたが、 値段も40GByteと500円しか変わらないため、大容量のものとした。
raidtabでhdcをfaildiskと指定し、/dev/hdcに新しいディスクを接続。起動したあと、fdisk /dev/hdcとしてパーテションを作成。 パーテションタイプをそれぞれ変更して、下記の様に設定。
Disk /dev/hdc: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders, total 160836480 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス ブート 始点 終点 ブロック ID システム /dev/hdc1 63 530144 265041 fd Linux raid 自動検出 /dev/hdc2 530145 16546949 8008402+ fd Linux raid 自動検出 /dev/hdc3 16546950 17559044 506047+ 82 Linux スワップ /dev/hdc4 17559045 160826714 71633835 5 拡張領域 /dev/hdc5 17559108 89192879 35816886 fd Linux raid 自動検出 /dev/hdc6 89192943 125017829 17912443+ fd Linux raid 自動検出 /dev/hdc7 125017893 160826714 17904411 fd Linux raid 自動検出
まず、mkswap /dev/hdc3を実施し、その後、raidhotadd /dev/md0と順にhotaddし完了。 また、lilo.conf.hdcのheads,sectors,cylindersを変更し、lilo -C /etc/lilo.conf.hdcを実行。
RAIDの片割れがいかれた。Seagate Baracuda ATA ST340016Aのほう。
前から少し動作がおかしかったが、完全にだまってしまった。 逝くときに、完全にハングアップしたため、再起動したらシングルユーザーに落ちてしまい、fsckをかける事に。 /usrと/varがファイルになってしまったため、再度マウントポイントを作成。