Linux 設定日記

設定したことを忘れないように書いてあります。

2004.03.20
ディスク容量をMRTGで監視

会社のサーバでは、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
2004.03.13
Kernelをアップデート

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のデータベースがアップデートされたため メッセージはでなくなり、とりあえず良しとする。

2004.01.07
2004.01.07の日記

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は正常に動くはず。

2004.01.01
LANカードが不調

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

と記述して完了。

2003.12.30
RAIDの効果がもうでたよ-2

ということで、日立の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を実行。

2003.12.29
RAIDの効果がもうでたよ

RAIDの片割れがいかれた。Seagate Baracuda ATA ST340016Aのほう。

前から少し動作がおかしかったが、完全にだまってしまった。 逝くときに、完全にハングアップしたため、再起動したらシングルユーザーに落ちてしまい、fsckをかける事に。 /usrと/varがファイルになってしまったため、再度マウントポイントを作成。