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でゴリゴリとスクリプトを組んでいける人にとっては、時にはその方が手軽であろう。 |
それでは、各サブシステムのインストールについて見ていこう。
ここでは、LINUXがインストールされていること、そしてftp、telnetもしくはsshでのログインが可能となっていることを前提とする(簡単な設定情報)。
MUSASHI-COREのインストール手順に従い、MUSASHI-COREをインストールする。
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 #=============================================================================== |
ここでも、LINUXがインストールされていること、そしてftp、telnetもしくはsshでのログインが可能となっていることを前提とする(簡単な設定情報)。
turboLinuxであれば、/usr/sbin/turboserviceを起動し、httpdをstart[S]する。
次に/etc/httpd/conf/httpd.confを設定する。ポイントは以下の通り。
LINUXをクライアントとする時に注意する点は、日本語の入力についてである。MUSASHIでは項目名は全て名前で指定する。通常であれば日本語の入力が頻繁に必要となる。VineLinux,TurboLinuxなどはその点においてお勧めである。
Windowsをクライアントとする時に注意する点は、telnet端末である。ここでは定番のTera Tremがお勧めである。
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が利用できるようになるはず。
ユーザ別のディスク容量利用制限を設定する。
以下の説明はTurbo Linux 7 server を前提としている。
以下のように「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 |
上記の設定ができれば再起動する。
quotacheck -a を実行する。
すると、usrquota を指定したファイルシステムの直下に「aquota.user」というファイルができる。
ネットでよく見かけるquotaの設定についての解説では、quotacheckでaquota.userを生成するのでなく、「touch aquota.user」であらかじめ0サイズのファイルを作成するような記述があるが、TurboLinux7serverでは、このような方法では、quotaonコマンドを実行する時に、「Invalid argument」のエラーが出てしまうので注意(たぶんバージョンが違うから?)。 |
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に設定すれば無制限となる。
上記で設定した内容を、他のユーザに対しても同様に行いたい場合は以下のコマンドを実行する。
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
以上の設定ができれば再起動して終了である。
TurboLinux7serverでは、起動時に、quotacheck、およびquotaonを自動実行してくれるようである。