TOPへ
ソース一覧
利用許諾
FAQ
お問い合わせ
関連資料

分散ファイルシステム

概要

分散ファイルシステムは、複数のストレージノードでファイルを分散して保管、管理します。利用者からは1台のストレージとしてマウントでき、通常のディスクと同等にディレクトリおよびファイルを作成できます。これらのディレクトリおよびファイルは複数の利用者で共有できます。分散ファイルシステムではファイルおよびディレクトの管理にはDHT(分散ハッシュテーブル)を用いおり、集中管理機構がない構造となっています。そのため、必要に応じてストレージノードを追加するだけで容量を増やすことができます。

ダウンロード

分散ファイルシステムのソースコードは、ここからダウンロードしてください。
分散ファイルシステムのコンパイルには素材作成用MXFライブラリが必要です。素材作成用MXFライブラリは、ここからダウンロードしてください。

動作環境

下記の環境で動作確認しています。

コンパイル方法

あらかじめomniORBとFUSEをインストールしておいてください。
(基本的にファイルを展開した後、configure、 make、 make installを順に実行することでインストールできると思います。インストール後に、ldconfigを実行して共有ライブラリを有効にしてください。)

ここでは、ダウンロードした分散ファイルシステムのソースコードをbigpool.tar.gz、素材作成用MXFライブラリのソースコードをnkmxflib.tar.gzとして説明します。

はじめに、素材作成用MXFライブラリのソースコードを展開し、nklibをコンパイルします。nklibディレクトリに移動してmakeを実行します。i386環境ではMakefile内の-DAMD64を削除してからコンパイルしてください。なお、すでに素材作成用MXFライブラリをコンパイルしている場合には、この操作は必要ありません。

% tar xvfz nkmxflib.tar.gz
% cd nklib
% make

次に、分散ファイルシステムのソースコードを展開し、nkfmftplibをコンパイルします。nkfmftplibディレクトリに移動してmakeを実行します。nklib、nkmxflib内のインクルードファイルを参照しているので、bigpool.tar.gzとnkmxflib.tar.gzを異なるディレクトリ内で展開した場合は、Makefile内のINCのパスを書き換えてください。

% tar xvfz bigpool.tar.gz
% cd nkfmftplib
% make

分散ファイルシステムの本体をコンパイルします。bigpoolディレクトリに移動してmakeを実行します。nklib、nkfmftplibを使っているので、bigpool.tar.gzとnkmxflib.tar.gzを異なるディレクトリに展開した場合には、makerules内のパスを書き換えてください。また、omniORBのインストール先がデフォルト(/usr/local)ではない場合には、makerulesのOMNI_TOPのパスを書き換えてください。

% cd bigpool
% make

最後に、FUSEのコンフィグファイル(fuse.conf)を/etcディレクトリにコピーします。

% cd bigpool
% su
# cp ../etc/fuse.conf /etc/
# exit

実行方法

ここでは2台のPCを使った簡単な実行方法を説明します。さらに詳しい実行方法はbigpool.tar.gzを展開したファイル内のreadme.pdfをご覧ください。

上記のコンパイル方法にしたがってあらかじめ2台のPCでソースコードをコンパイルして実行プログラムを作成してください。ファイアーウォールはオフで実行してください。また、自分のホスト名にループバックアドレスが指定されていないことを/etc/hostsで確認してください。例えば、ホスト名PC1が127.0.0.2に設定されているなどしていると正しく動作しません。

1台目のPC(ホスト名をPC1として説明します)で以下を実行し、ストレージノード(node)を起動します。

% cd bigpool
% mkdir pool
% mkdir cache
% cp ./pool.org/* ./pool/   ←00000.ino, 00000.dirがコピーされる
% ./node –p 3000 –i

起動後、l[enter]を入力し、分散ファイルシステムに参加しているノードのリストが表示されれば正しく動作しています。この段階では、参加しているのノードは1台なので1行だけ表示されます。

同様に、2台目のPC(ホスト名をPC2として説明します)で以下を実行し、ストレージノード(node)を起動します。

% cd bigpool
% mkdir pool
% mkdir cache
% ./node –p 3000 –i –h PC1:3000

起動後、l[enter]を入力し、参加しているノードを確認します。参加しているのノード数は2台になっているので2行表示されます。

次に、PC1またはPC2(または両方のPC)で分散ファイルシステムをマウントするため以下を実行します。

% cd bigpool              ←nodeを起動したディレクトリ
% mkdir mnt
% ./start_mnt.sh ./mnt

以上で./mntディレクトリに分散ファイルシステムがマウントされます。dfコマンドなどで容量を確認してください。
./mntディレクトリ以下にファイルを置くことで、分散ファイルシステムにファイルが保存されます。2台のPCで上記のマウント作業を実行することで、分散ファイルシステム上のファイルを共有できるようになります。

動作確認は1台のPCでも可能です。その場合は、nodeを実行するディレクトリを異なるディレクトリとした上で、node実行時のオプション-pで指定するポート番号を異なる番号にして起動してください。

分散ファイルシステムに保存したファイルは、ストレージノード(node)で分担して保管されます。分散ファイルシステムをマウントして利用するだけの場合には、nodeを実行する代わりにタップサーバ(tap_svr)を起動したうえで、start_mnt.shを実行することで、分散ファイルシステムをマウントすることができます。例えば、3台目のPC(ホスト名PC3)でtap_svrを起動してマウントした場合には、PC3で分散ファイルシステム上のファイルを共有できますが、分散ファイルシステムに置かれたファイルの保管先としてはPC3に割り当てはされません。ファイルの保管はストレージノードを起動したPC1とPC2のみで行われます。分散ファイルシステムの動作の詳細は展開したファイル内のreadme.pdfを参照してください。

フレキシブル制作システムで分散ファイルシステムを使う方法はフレキシブル制作システムの説明書を参照してください。

関連文献

注意事項

本プログラムはDHTを使った分散ファイルシステムを実験、評価するために作成したものであり、実用に耐えるに十分な実装は行っていません。実験、評価用途としてご利用ください。

商標

NovellならびにSUSEはNovell, Inc.の登録商標です。
LinuxはLinus Torvals氏の登録商標です。
CORBAはObject Management Group Inc.の登録商標です。