E.T.C

このページでは、Debian 限らず、サーバーの運用やシステム管理に求められるもろもろの設定作業について書いておこうと思う。今後も情報を追加する予定だ。

システム時刻の修正
BSDパーティションのマウント(おまけ)

 

システム時刻の修正

システム時刻が狂っていると、正常なサーバーの運用はできない。たとえばftpサーバーも、クライアントが「PC側のファイルがサーバー上のものより新しいものだけアップロードする」などの設定で利用しようとするとする。もしサーバーのシステム時刻が進んでしまっていれば、いくらやってもアップロードできないという事態が生じ得る。メールサーバー、DNSサーバーも然りであろう。時刻合わせはシステム管理者として必須の作業である。

システム時刻合わせ

時刻合わせには date コマンドを使う。たとえば現在時刻が2004年1月15日 午後1時30分だとしたら、次のように時刻合わせができる

# date 0115133004

このように date コマンドの引数は、「月日時刻年」の順番で指定する。年が一番最後にくるので違和感があるが、これでよい。

CMOSクロック合わせ

システム時刻を正確に合わせたところで、CMOSクロックも正確なものにしたい。次のコマンドを実行する

# /sbin/hwclock -w

これで両方が正確な時刻を刻むようになる。

ntpを利用する

ntpを利用すれば、システム時刻を定期的に正確なものにセットすることができる。
そのためにまずはntpクライアントをインストールする。

# apt-get install ntpdate

インストールできたら、早速時刻合わせをしてみる。文法は

# ntpdate server_name

と至極単純なものである。server_name には、公共のタイムサーバーを指定する。公開されているタイムサーバーのリストは下記のURIから参照の事。

http://www.eecis.udel.edu/~mills/ntp/servers.html

ntpdate と hwclock を組み合わせたシェルスクリプトを cron で定期的に実行すれば、いつも正しいシステム時刻が刻まれることになる。


△top

 

BSDパーティションのマウント(おまけ)

あるNAS製品の中身が実はFreeBSDであり、samba を使って実現されていることを知った私は、その設定がどうなっているか参照しようと目論んだ。そのNAS製品を分解し、ハードディスクを取り出し、それを既存のLinuxマシンにマウントして、中をのぞいてみたので、そのときの顛末を記録しておく。

カーネルを再構築する

.configの下記のパラメーターが有効になっていなければならない。

CONFIG_UFS_FS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_BSD_DISKLABEL=y

カーネルの再構築が終わったら、マシンの電源を落とし、FreeBSDのディスクをつなぐ。今回はCD-ROMドライブをはずし、代わりにこのディスクをつけた。再度電源投入。

ディスクの確認

起動したら、fdiskコマンドでつないだディスクを認識しているか確認する。

# fdisk -l /dev/hdc


Disk /dev/hdc: 255 heads, 63 sectors, 14596 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1   *         2         5     32130   a5  FreeBSD
/dev/hdc2             6        21    128520   a5  FreeBSD
/dev/hdc3            22     14596 117073687+  a5  FreeBSD

もし、上記のように表示されず、認識していないのであれば、ファイルシステム「ufs」のモジュールが読み込まれていないのかもしれない。下記のように読み込む。

# insmod ufs

再度fdiskコマンドで確認。FreeBSD領域が見えればOKだ。これでもだめなら、BIOS上でそのディスクが認識されているか、他のデバイス名はどうかなど、いろいろトラブルシューティングをしてもらいたい。

マウントする

早速マウントしてみる。次のようにマウントオプションをつけて、mountコマンドを実行してみる。ファイルシステムがufsであると同時に、読取専用でマウントしていることに注意。

# mount -t ufs -o ufstype=44bsd,ro /dev/hdc1 /mnt/bsd1

上記のように、ufstypeに44bsdを指定しても、マウントオプションが違とうか何とかのエラーが出てちょっと悩んだが、dmesgの出力にヒントがあった。

# dmesg

(中略)
mount -t ufs -o ufstype=sun|sunx86|44bsd|old|hp|nextstep|netxstep-cd|openstep ...

ここに挙げられているマウントオプション nextstepを試す。すると、ターミナルにエラーは出力されず、一見マウントできたように見えるが、実際には dmesg に

UFS-fs error (device 16:01): ufs_readdir: bad entry in directory #2, size 512:
reclen is too small for namlen - offset=0, inode=2, reclen=12, namlen=260

というようなエラーを吐いている。しょうがないので、他のマウントオプションをとっかえひっかえ試してみると、結局下記のコマンドラインが通った。ただ二つ目の/dev/hdc2 に対してはどんなマウントオプションも通用しなかった。(原因不明)

mount -t usf -o ufstype=openstep,ro /dev/hdc1 /mnt/bsd1  ← 成功
mount -t usf -o ufstype=openstep,ro /dev/hdc2 /mnt/bsd2  ← 失敗
mount -t usf -o ufstype=openstep,ro /dev/hdc3 /mnt/bsd3  ← 成功

普通は前述したように

mount -t ufs -o ufstype=44bsd,ro /dev/hdc1 /mnt/bsd1

でできるはずである。


△top