[Vinery - Linux 雑記]

家庭内サーバの構築 (Vine Linux 2.1)

 24時間運転の Linux Box を Vine Linux 2.1 を使って構築します。実は今までも Laser5 Linux を使ってやっていたのですが、13GB の HDD が不足してきたこともあり、どうせならと思い、新しいディストリビューションを試してみることにしました。
 そもそも24時間運転して何がやりたいのかいうと、本質的にはファイルサーバに尽きます。色々なマシン、色々なOSから共通したファイル置き場を作りたいのです。数台のマシン、複数環境の同居などをしているとどうしても欲しくなります。まず、やらなければならないことは下記の4点です。
  1. NFS サーバの立ち上げ (UNIX 系 OS からのファイル共有)
  2. SAMBA サーバの立ち上げ (Windows 系 OS からのファイル共有)
  3. DNS サーバの立ち上げ
  4. 大切なファイルをテープへ自動バックアップ
 また、Vine 2.1 は無保証ながら ReiserFS をサポートしているとのことなので課題 とします。
 その他のことは、思い立ったらおいおい追加していきます。
 
[2001.11.04]

 使っているうちにだんだんと不安定になってきました。HDD の故障かと思いましたが、そうではなく、いわゆる「不安定」な状態になってきたようです。あるファイルにアクセスするとディスクアクセスしまくったあげくに Segmentation Fault など。
 原因究明も面倒なので、再インストールすることにします。
 せっかくなので新しいディストリビューションにしようと思い、Kondara 2.0 と Turbolinux 7.0 WS を試してみました。紆余曲折あって Tubolinux にしました。
 また、かねてより念願の自前サーバの開設も、フレッツ ADSL によって安価にできそうなので、一気に移行しようと思います。ということで、この記録はこれでおしまい。リニューアルオープンを目指すことにします。

CONTENTS

CONTENTS
Last update
インストール
2001.03.01
アップグレード
2001.04.14
ReiserFS
2001.03.01
NFSサーバ
2001.03.01
SAMBAサーバ
2001.04.07
DNSサーバ
2001.03.01
テープを使うまで
2001.11.04


インストール

 今時の Linux は、先端突き抜けたようなハードウェアを使わない限りは、インストールに苦労することはないですね。やはり現時点(2001年1月)では、BXマザーがベストでしょう。
 ファイルサーバ srv のスペックは 440BX(実際はZX)マザーに Celeron 333MHz、ビデオカードは ATI Rage Pro、NIC は Coregaの Via-rhine チップです。まったく問題なくインストールできました。サウンドカードはファイルサーバには不要なのでつけていません。
 詳しくは後述しますが、テープドライブをつけるために Adaptec AHA-1510A もつけています。


アップグレード

[2001.04.14]

 Linux Magazine 2001年5月号に Vine 2.1 updates がついてきたので、せっかくなのでアップデートすることにします。Vine 2.1.5 も既に出ているし、既にダウンロードして CD-ROM も焼いてあるのですが、それをアップグレードインストールするよりは問題がおきにくかろう、という訳でまずは updates を入れることにします。
 手順は同誌 38-41 ページに GnoRPM を使ったアップグレードの方法が詳しく紹介されているので、その通りにやってみます。・・・と、んなに楽だったのか!!と驚きました。もっと沢山コマンド打たされるもんだと気合いを入れていたのに。(笑)
 アップグレードは予定通り emacs 関連で依存関係に問題がでるものの(使わないから要らんのだが)、記事通りに進めてあっさり終わり。 リブートも必要なし。さすが、Windowsとは違うのう。


ReiserFS

 24時間運転のファイルサーバとなると、突然の電源断には対処したいもの。UPS はたしなみとしても、それでも不慮の事故でリセットや電源の再投入になることはあるでしょう。今まで使っていた 13GB の HDD ですら、そんな時の fsck が長くてウンザリしていたのに、今度は 40GB です。もはや ext2 なんて使っていられません。
 そのうち色々なファイルシステムが出るのでしょうが、現時点では ReiserFS がお手軽、かつ fsck 要らずで便利なようです。

 Vine Linux 2.1 で ReiserFS を使うには、インストール CR-ROM にこっそり入っている「Vine Linux 2.1 の隠し機能」というドキュメントをみれば使うことができます。僕の場合は /home を ReiserFS にしました。

注意事項
 ドキュメントでは /tmp/hda5 を「例」としていますが、それ以外のパーティションを使用するとインストールが進まなくなりました。具体的には hda5 を / 、hda6 を /home としたのですが、NGでした。仕方ないので hda5 を /home にして、そこだけを ReiserFS にしました。
 さて、無事インストールが終わったら効果のほどを確認します。
 いきなりリセットしてみたら、やはり早い! fsck 要らずはすばらしい。
注意事項
 ReiserFS では確かに fsck は不要ですが、sync 要らずという訳ではありません。(実験済み)いきなり電源切ってもファイルシステムに矛盾は起きない、というものなのね。当然データの喪失はありえます。


NFS サーバ

 今時の mount は smbmount をサポートしているので、SAMBA だけでも良さそうなもんですが、ファイル名に日本語を使うとやっぱまずいんです。ファイル名に 日本語なんて使わなきゃいいという意見はとりあえずおいておきます。
 何がまずいかというと、サーバである Linux Box 上のファイルシステムでは当然 EUC ファイル名ですが、SAMBA には Shift_JIS (CP932) を受け付けて EUC へ変換してもらわないと、文字化けしてエライ目に遭います。(てゆーか、遭いました)

 ということで、ファイルの倉庫(/home/samba/junks と /home/samba/depot)を別の Linux マシンから共有するために、NFS サーバを導入します。JFの NFS-HOWTO を参考に設定しました。ちなみに junks は雑多なファイル置き場で depot の方は 後述のテープバックアップ対象として使い分けています。

 まずは  /etc/exports に公開ディレクトリを書きます。
# vi /etc/exports
/home/samba/depot 192.168.1.*(rw)
/home/samba/junks 192.168.1.*(rw) 

  Laser5 Linux ではこれだけでOKだったと思うのですが、Vine Linux では portmapper に対するアクセス許可を設定しないと駄目でした。
# vi /etc/hosts.allow
portmap:LOCAL 192.168.1.  # 追加

 そして inetd をリスタートすれば、めでたく開通となりました。
# /etc/rc.d/init.d/inet restart

 で、portmapper って何だろう?読んで字のごとしなのであろうが、ちゃんと知りたい。上述の NFS-HOWTO にも書いていないし。誰か情報ください


SAMBA サーバ

 LAN の中には Windows マシンも何台かあり、ファイル共有とテープによるバックアップの一元管理を目的として sambaを導入します。
 昔、まだ文献が少なかった頃は結構苦労した記憶がありますが、今時の samba は swat があるから楽々でした。Vine Linux 2.1 にはもちろん日本語にキチンと対応した samba サーバと swat が入っています。具体的な設定は swat を使えば特に問題はないと思いますが、気にしなければならなかったことを以下にメモします。
[global]
coding system = EUC            # SAMBA サーバ上のファイル名
client code page = 932           # SAMBA クライアントのコードページを日本語圏にする
hosts allow = 192.168.1.        # 同じネットワーク内の接続のみ受け付ける
 さて、LAN の中には Windows 2000 もあります。samba 2.0.7-ja-2.2 は Windows 2000 に関する不具合を完全対応したとのことなので、アップデートを試みます。しかし、残念ながら 2001/03/20 現在、Vine Linux の更新情報には samba 2.0.7-ja-2.2 はありませんでした。
 こんな時はソースからコンパイル!が常道なのですが、ちょっと横着して日本 samba ユーザ会から 入手した RedHat 6.2 用の RPM パッケージで代用してみました。

 まず再インストールですが、パッケージ構成が違うので注意します。
# rpm -e samba
# rpm -e samba-client
# rpm -e samba-common
# rpm -ivh samba-2.0.7-ja_2.2.i386.rpm 

 次に swat を使えるようにします。
 /etc/inetd.conf と /etc/hosts.allow を修正して、swat への要求を受けるようにします。
#  cd /etc
# vi inetd.conf
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat       # コメントを解除
#  vi hosts.allow
swat:LOCAL 192.168.1.    # この行を追加。localhost と LAN 内のみ受付ける

 あとは inetd のリスタート、swat による /etc/smbd.conf の設定、smbd の起動をすれば完了です。
#  cd /etc/rc.d/init.d/
# ./inet restart

 ここで netscape で swat の設定を行います。

# smb start

[2001.04.07]

 HP DeskJet 720C を srv につないで SAMBA でプリンタ共有を行いました。
 まず、printtool でフィルタを通さないプリンタキューを作ります。
 この例では、rawwriter という名前で、フィルタなしのプリンタキューを作っています。
 しかし、これで作られた /etc/printcap で Windows から印刷すると、最後に排紙されない という問題がありましたので、/etc/printcap を編集して排紙するようにします。(赤字部分を追加)
 
##PRINTTOOL3## LOCAL 
rawwriter:\
 :sd=/var/spool/lpd/lp0:\
 :mx#0:\
 :sh:\
 :lp=/dev/lp0:\
 :sf:

 すると SAMBA が pritcapname を反映して rawwriter というプリンタを共有してくれるので、Windows からそのポート(\\srv\rawwriter)を使うようにプリンタをインストールすればOKです。
 プリンタキューの追加を SAMBA の共有に自動的に反映するには、/etc/smb.conf に [printers]セクションが設定されている必要がありますが、デフォルトで設定されていたので、何もしませんでした。


DNS サーバ

 設定は終わっています。しばらくお待ちください。


テープを使うまで

 用意したのは AHA-1510A という Adaptec の古い ISA カードです。まずは SCSI ボードのドライバを組み込み、認識させないといけません。ドライバは aha152x.o を使うようです。
 なお、テープドライブは 非圧縮 4GB の Seagete 製 Travan4 ドライブです。もともとは 頭にくるほどすぐに壊れる Windows NT4.0 のセットアップ完了直後の状態をバックアップしておき、壊れたら復元しようという計画の元に購入したのですが、 Service Pack を当てたバックアップは同じバージョンの Service Pack を当てないと復元できない という戯けた仕様にうんざりして使わなくなっていました。
 今度こそ有効活用しまっせ、高かったんだし。(ン万円ですね)

 aha152x ドライバを使うには、/etc/conf.modules を編集します。
# vi /etc/conf.modules
alias scsi_hostadapter aha152x 
options aha152x aha152x=0x340,11

<2001.11.04追記>
 その後 depmod; modprobe を実行しないとだめです。
 Turbolinux 7.0 WS のインストール中に気づきました。
</2001.11.04追記>

  次にJFの dump-restore-mini-HOWTO を参考にテープを使えるようにします。
  まず、テープドライブのデバイスファイルを作ります。
# cd /dev; ln -s nst0 tape

  次に mt コマンドがあると、テープドライブのステータスチェックや巻き戻しなどができて便利そうなので、 とってきてインストールします。メイクしなおさなくても添付のバイナリで動作しました。
 $ tar xvzf mt-st-0.4.tar.gz
 # cd mt-st-0.4
 # su
 # make install

  テープドライブの動作確認をします。
# mt status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 512 bytes. Density code 0x45 (unknown).
Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN

 ここまでくれば tar コマンドでファイルの保存ができます。
# tar cvf /dev/tape /home/samba/depot

 cron による自動バックアップはペンディング中です。


[Vinery - Linux 雑記]