MUSASHI, FDclone, WWWサーバを組み合わせた利用環境


MUSASHIをデータ分析の目的で効率的かつ効果的に利用するために、ここでは次のようなシステム構成を考えます。

 この図では、枠で囲った一つのブロックが一台のコンピュータに対応している。ここで、全体のシステムは、「データ処理機」、「WWWサーバー」、「クライアント」の三つのサブシステムから構成されている。各サブシステムの枠内に必要なソフトが記載されている。
 データ処理機では、MUSASHIを用いた大量データの処理が主な仕事となる。OSとしてはLINUXを前提としている。いずれのディストリビューションであっても問題なく動作するであろう。ただし、数個の共有ライブラリーを利用しているので、それらのライブラリーがインストールされていることが前提となる。MUSASHIはリレーショナルデータベースを基礎にしたデータ処理システムではなく、あくまでもファイルをベースにしたシステムである。そこで、ファイルの操作は非常に重要となり、ファイラーによるファイル操作を勧める。ここではFDcloneを用いる。
 WWWサーバーでは、データ処理機で加工した結果データをWebブラウザで閲覧できるように保存しておくことが主な仕事である。特に複数の人間で一つの分析を行っているときなどは便利であろう。ここでもOSとしてはLINUXでWWWサーバーとしてapach、FTPサーバーとしてproftpdを用いる。
 クライアントでは、telnetもしくはsshを用いてデータ処理機にログインし、データ処理に関する全ての操作を行う。また、既に公開されているデータの閲覧もクライアントマシンからおこなう。Windowsベースのクライアントにおけるtelnetもしくはsshについては、Tera Tremの利用を勧める。

注:ただし、この構成は一例であり、各機能を一つのコンピュータで実現することも十分に可能である。さらに、WWWサーバーやWebブラウザー、FDcloneなどをインストールしなくても、MUSASHI単体でも十分に動作可能である。viでゴリゴリとスクリプトを組んでいける人にとっては、時にはその方が手軽であろう。

それでは、各サブシステムのインストールについて見ていこう。

1.データ処理機の構築

ここでは、LINUXがインストールされていること、そしてftp、telnetもしくはsshでのログインが可能となっていることを前提とする(簡単な設定情報)。

a) MUSASHI

MUSASHI-COREのインストール手順に従い、MUSASHI-COREをインストールする。

b) FDclone

FDcloneの最新版をダウンロードしてくる。説明に従ってコンパイル+インストールを行う。また、FDではncursesライブラリーを用いているため、libncurses.so.4を/usr/lib/になければインストールする。さらにMUSASHI用に設定したFDclone設定ファイルfd2rcをダウンロードし、/etcにコピーしておく。

これらの設定が面倒な人用に、全て自動でインストールできるファイルを用意しておいた。

適当なところで解凍しインストールする。
# tar zxvf fd-bin.tar.gz
# cd fd-bin
# bash install.sh

最後にFDcloneの設定ファイルを設定する。

/etc/fd2rcを編集する。最初の数行がMUSASHI用のパラメータである。通常設定が必要となるのは、wwwIPである。WWWサーバーのIPアドレスを指定する。その他の詳しい説明はFDcloneの説明を参照してください。

#===============================================================================
# MUSASHI 用の変数
#-------------------------------------------------------------------------------
#fdでftpを実行するとカレントディレクトリ上の*.txtと*.htmlが
# wwwIPサーバーの$wwwPATHディレクトリにuploadされる。
# ex) 以下の設定において/home/foo/Mine/tmp がカレントディレクトリとすると
# 127.0.0.1/home/foo/public_html/Mine/tmpに*.txtと*.htmlがuploadされる

#wwwサーバーのアドレス
wwwIP=127.0.0.10

#ファイルをuploadするwwwサーバー上のパス
wwwPATH=$HOME/public_html

#ファイルがこのサイズを超えていれば警告メッセージを出す
wSize=1000000

#ファイルがこのサイズを超えていればftpを中止する
eSize=10000000

#===============================================================================

2.WWWサーバーの構築

ここでも、LINUXがインストールされていること、そしてftp、telnetもしくはsshでのログインが可能となっていることを前提とする(簡単な設定情報)。

a) httpdの稼動

turboLinuxであれば、/usr/sbin/turboserviceを起動し、httpdをstart[S]する。

次に/etc/httpd/conf/httpd.confを設定する。ポイントは以下の通り。

3.クライアントの構築

LINUXをクライアントとする時に注意する点は、日本語の入力についてである。MUSASHIでは項目名は全て名前で指定する。通常であれば日本語の入力が頻繁に必要となる。VineLinux,TurboLinuxなどはその点においてお勧めである。

Windowsをクライアントとする時に注意する点は、telnet端末である。ここでは定番のTera Tremがお勧めである。

付録) LINUXの設定エトセトラ

ネットワークの設定

TurboLinux7.0をインターネットサーバーのセキュリティ強でインストールすると、telnet、ftp、ssh、httpによるネットワークアクセスが一切できない。そこで...

xinetdの設定

1. /etc/xinetd.d/telnetのファイルを編集する。 「disable=yes」を「disable=no」に変更する。

# default: off
# description: Telnet server
# securlevel: 30
service telnet
{
disable = yes
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -h
}
# default: off
# description: Telnet server
# securlevel: 30
service telnet
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -h
}

これでtelnetdは稼動するはず。

次にproftpdの設定です。

2. /etc/xinetd.dに以下の内容を「ftp」というファイルで保存する。

# default: off
# description: Proftpd
# securlevel: 30
service ftp
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.proftpd
}

2. /etc/proftpd/proftpd.confの設定

これでproftpdは稼動するはず。
しかし、それでもだめなときは、/etc/hostsファイルを確認しよう。ここにIPとネームが正しく記載されていない時にftpできなかった記憶がある。

3. /etc/hosts.allowと/etc/hosts.denyの設定 xinetdによるアクセス制御

最後にxinetdによるアクセス制御ファイルである/etc/hosts.allow(許可ファイル)と/etc/hosts/deny(不許可ファイル)を編集する。

不許可ファイルにはデフォルトで「ALL:ALL」、すなわち全てのIPからの全てのサービスに対して不許可の設定になっているので変更の必要なし。許可ファイルには、サービスごとに許可するIPを設定する。

ALL : 127.0.0.1
in.telnetd: 10.10.10.
in.proftpd: 10.10.10. 20.20.

上記の設定では、一行目はローカル(そのマシンそのもの)からのアクセスは全てのサービスに対して許可する。
二行目は、10.10.10.*のIPについてはin.telnetdの起動を許可する。
三行目は、10.10.10.*と20.20.*.*のIPについてはin.proftpdの起動を許可する。

4. /etc/rc.d/init.d/xinetdの再起動。
「/etc/rc.d/init.d/xinetd restart」でxinetdを再起動する。
これでtelnet、ftpが利用できるようになるはず。

ディスクquotaの設定

ユーザ別のディスク容量利用制限を設定する。
以下の説明はTurbo Linux 7 server を前提としている。

1.fstab の編集

以下のように「usrquota」を容量制限をかけたいパーティションに追加する。

/dev/hda3 / ext2 defaults 1 1
/dev/hda2 /boot ext2 defaults 1 2
/dev/hda4 /home ext2 defaults,usrquota 1 3
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
/dev/sdb1 /mnt/h00 ext2 defaults 1 4
/dev/sda1 /tmp ext2 defaults 1 5
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda1 swap swap defaults 0 0

上記の設定ができれば再起動する。

2. quotaファイルの作成

quotacheck -a を実行する。
すると、usrquota を指定したファイルシステムの直下に「aquota.user」というファイルができる。

ネットでよく見かけるquotaの設定についての解説では、quotacheckでaquota.userを生成するのでなく、「touch aquota.user」であらかじめ0サイズのファイルを作成するような記述があるが、TurboLinux7serverでは、このような方法では、quotaonコマンドを実行する時に、「Invalid argument」のエラーが出てしまうので注意(たぶんバージョンが違うから?)。

3.ユーザ毎の制約を設定する

edquota ユーザ名(以下の例ではfoo) を実行する。
するとエディタが起動され、下図のような画面になる。

Disk quotas for user foo (uid 500):
Filesystem  blocks soft  hard  inodes  soft  hard
/dev/hda4    116   0    0    30    0   0

3行目の意味は左から、
 「ファイルシステム」
 「現在の使用ブロック数(Kバイト)」
 「ブロック制限のソフトリミット」
 「ブロック制限のハードリミット」
 「現在の使用iノード数」
 「iノード制限のソフトリミット」
 「iノード制限のハードリミット」
ここで、ハードリミットとは、絶対的な制限で、指定したブロック容量もしくはiノード数を越えることができない。またソフトリミットとは、指定した制限を超えることはできるが、超えた瞬間に警告メッセージが表示され、指定の時間内(Glace Period:後述)であれば利用可能であるが、それを超えると利用できなくなる。

以上のことを考慮して各制限を設定する。以下に設定例を示す。

Disk quotas for user foo (uid 500):
Filesystem  blocks soft  hard  inodes  soft  hard
/dev/hda4    116  100000   120000    30   1000   1200

この例では、容量のソフトリミットが100Mバイト、ハードリミットが120Mバイト、iノードのソフトリミットが1000、ハードリミットが1200に設定されている。
なお、各数値を0に設定すれば無制限となる。

4.ユーザの設定をコピーする

上記で設定した内容を、他のユーザに対しても同様に行いたい場合は以下のコマンドを実行する。

edquota -p foo foo1 foo2 foo3

これでfooユーザの制限がfoo1,foo2,foo3ユーザに同様に適用される。
ユーザ数が多いときは/etc/passwdファイルを利用して、以下のようにすれば、一撃で設定できる。

edquota -p foo `awk -F: '$3 > 500 {print $1}' /etc/passwd`

6.glace Period を設定する

ソフトリミットを超えたときの制限時間を設定するために以下のコマンドを実行する。

edquota -t

すると、次のような編集画面になるので、ブロックの制限とiノードの制限それぞれに対して、制限時間を入力する。
デフォルトでは7日になっている。

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem  Block grace period  Inode grace period
/dev/hda4         7days          7days

これらの設定内容の確認は以下のコマンドで可能。

repquota /home

5. 再起動

以上の設定ができれば再起動して終了である。
TurboLinux7serverでは、起動時に、quotacheck、およびquotaonを自動実行してくれるようである。