[nrfs-penguin.png]  * NRFS  *
ssspc logo

NRFS 〜Linux版ネットワークRAIDファイルシステム〜

NRFS開発の背景と目的

パーソナルコンピューターおよびワークステーションの価格性能比改善と低価格化は著しく、オフィスや工場や研究所はもちろん家庭やSOHOにも複数台の計算機が設置されるようになってきています。

複数台の計算機を使用する場合に、分散共有ファイルシステムによってハードディスク装置を共有できると、一台ごとにディスク内容を整備する必要がないためにマシン管理コストが大幅に低減できます。また、計算機間のデータ移動が共有ファイルによって自然に行われるため、テープやフロッピーディスクを介したデータ移動よりも大幅に手間が少なく、また明示的に通信プロトコルやファイル転送プログラムによってデータ転送するよりも簡単です。分散共有ファイルシステムでは十分に高速なプロトコルを使用して多くのシステムではデータ転送に必要な時間コストも十分に小さく抑えられています。

そしてハードディスク装置上データの安全性向上のために近年普及しつつあるのがRAID(Redundant Array of Inexpensive Disks )装置です。可用性と信頼性が求められる環境では、RAID装置は専用ハードウェアによって構成されており、結果として高価なものとなっています。

このような高価な専用RAID装置を購入することなしにソフウェアのみで低コストかつ効率よく高信頼分散共有ファイルシステムをLinux上に提供することを目的にしています。

NRFSの特徴

  1. 複数(3 台以上)の PC もしくは WS を持っていればネットワーク RAID ファイルシステム(NRFS)を使用可能 → 高価な RAID 装置を購入する必要がない
  2. 訂正可能な障害はファイルシステムが自動的に修正 → ハードウェア交換が必要な障害に対しても停止することなく交換作業が可能
  3. マシンレベルの冗長性を持っている → 故障ノードの電源を切断して修理作業を行ってもファイルシステムは運用可能(システムレベルのホットスワップ)
  4. 自動的にファイルシステムの内容を引き継ぎ 1 台ずつのマシン交換可能 → 低コストかつ便利メンテナンスが容易
  5. Gigabit Ethernet レベルの高速 LAN 上において NRFS を使用 → SAN (Storage Area Network) として同様な運用も可能

ネットワークRAID方式の原理

計算機アレイによるRAID

分散共有ファイルシステムのディスク装置として専用ハードウェアを搭載したRAID装置を導入して信頼性を向上させる方式が一般的になりつつあります。しかしこの場合はRAID装置が接続される計算機(ファイルサーバ)にも信頼性と性能が要求され、システムのコストが高くなってしまいます。

これに対し、安価になった普及型のパーソナルコンピューターやワークステーションを活用してファイルシステムの信頼性を向上させる方式を提案します。つまり、RAIDは安価なディスク装置を複数台使用することによって冗長性を増して信頼性を上げていたのに対して、ネットワークRAIDでは安価な計算機を複数台使って冗長性を増して信頼性を向上させます。

[raid.gif]
従来のRAID装置
[nrfs.gif]
ネットワークRAIDファイルシステム

障害検出方式の検討

実装が低コストかつ簡単なミラーリング方式もしくはミラーリングを拡張した方式をネットワークRAIDに適用しています。

これについてはクライアント側(ファイルをアクセスする側)でデータ読み出し時にデータの正しさを確認する必要があります。つまりデータ読み出し時にミラーされた計算機(サーバ)から複数のコピーを読み出して、本当にデータが一致しているかどうかを確認します。データ使用時にデータ不一致が発見されても、ディスク故障以外の場合、どのサーバから送られたデータが間違えているか確定できない可能性があるため、ミラーの数は最低3セット必要であり「多数決原理」によって正しいデータを決める必要があります。(多数決方式)

[nrfs_mount.gif]
NRFSにおける/usrをマウントしている例

データ転送量を削減する方式

読み出しに関してのデータ転送量削減の可能性があります。データの誤りが高い確率で検出されることがクライアント側の認証の目的であります。そこでサーバが読み出したデータに対応する認証データ(チェックサムやMD5、SHA−1等のハッシュ関数)を一定サイズ(通信パケットサイズ)毎にサーバ側で計算して、1台のサーバはデータと認証データをクライアントに送信し、他のサーバは認証データのみを送信して、クライアントは認証データが一致していることを確認します。そして、認証データが一致していれば、データも一致していると信用してデータを使用します。認証データのbit幅を大きくすればデータ誤りの検出率を高くすることができます。

この方式はクライアント側の処理の一部をサーバ側に分散する方式でもあり、サーバにMD5やSHA−1計算用のハードウェアアクセラレータがある場合に特に適しています。

配布

無保証

NRFS は無保証です。 NRFS Project Team は NRFS の使用により発生したいかなる問題に対し何も責任を負いません。 NRFS の使用は個々の責任において行って下さい。

動作環境

NRFSは Red Hat(R) Linux カーネル 2.2.16-3 環境でのみ動作します。

ファイル

NRFSのソースコード、バイナリ一式
(Red Hatのソースコードパッケージも含む)
nrfs-linux-0.05.tar.gz 44,393,224 bytes (2003/02/04)
NRFSのバイナリパッケージ (i686用SMPカーネル)
nrfs-linux-0.05-i686-smp.tar.gz 7,386,257 bytes (2003/02/04)
NRFSのバイナリパッケージ (i686用カーネル)
nrfs-linux-0.05-i686.tar.gz 7,521,794 bytes (2003/02/04)
Red Hatのソースコードパッケージ
(kernel-2.2.16-3.src.rpm, mount-2.10f-1.src.rpm)
redhat.src.tar 19,670,577 bytes (2002/12/02)

資料

nrfs-linux.pdf 251956 bytes

修正済みの不具合

連絡先

NRFS について質問などありましたら nrfs@ssscore.org までご連絡下さい。


以下は NRFS の特徴などを簡単にまとめたポスターです。

NRFS panel
NRFS の研究開発は情報処理振興事業協会(略称IPA)平成 12 年度13 年度の未踏ソフトウェア創造事業の一環として 開発サポートを受けました。


Copyright © 2002 NRFS Project Team