リモートファイルシステムを使ってRAID-1を構成できるChiron FS

 LinuxカーネルはRAID-1の実行をソフトウェアでサポートしている。RAID-1では、1つのファイルシステムを2台以上のディスク装置で保持するため、障害が発生しても最後のディスクさえ生き残っていればすべてのデータを復旧できる。すばらしい仕組みだが、メモリや電源ユニットなど、ほかのハードウェアコンポーネントが故障した場合にはやはり貴重なデータが失われる可能性がある。だが Chiron FS を使えば、ネットワーク上の2台のマシンが持つディスクで1つのRAID-1を構成でき、一方のマシンがダウンしてもファイルシステムにアクセスし続けることができる。

 RAID-1構成が維持された状態で一方のマシンに障害が発生した場合でも、ネットワーク接続が無事であれば、障害で破損したファイルがChiron FSによって他方のマシンに複製(レプリケーション)されるおそれがある。だが、2台のローコストPCとネットワーク接続だけでファイルシステムを冗長化できることを考えれば、この程度のリスクは受け入れざるを得ないだろう。ただし、ほかのソリューションと組み合わせて、データのセキュリティ性と可用性を高めることは可能だ。

 Chiron FSを使うにあたっての主な要件は、RAID-1を構成する場所がLinuxカーネルによってファイルシステムとしてマウントできることだ。たとえば、ローカルにマウントされたext3ファイルシステムと、NFSまたはsshfs経由でバックアップ用マシンからマウントされたXFSファイルシステムがあれば、Chiron FSを使って双方のファイルシステムで同じ内容を保持できる。

 Chiron FSは、openSUSE 10.3の1-Clickインストールに対応しているが、FedoraやUbuntuのリポジトリには収録されていない。だがChiron FSのダウンロードページに行けば、Ubuntu HardyおよびGutsy用とFedora 8用の各種パッケージが手に入る。ここではChiron FSのバージョン1.0.0のソースを64ビット版Fedora 8マシンでビルドした。インストールには、標準的な「./configure; make; sudo make install」の手順を用いる。

 以下に、Chiron FSの設定方法と簡単な使い方を示す。まず、冗長化するファイルシステム用のディレクトリを作成する。この例では「local-disk-filesystem」と同じディスク上に「my-other-server-filesystem」を作成しているが、このディレクトリはNFSマウントされたファイルシステム上でも簡単に作成できる。Chiron FSに「--fsname」引数は必要ないが、できればファイルシステムにわかりやすい名前を付けておくに越したことはない。続いて、Chiron FSによる「~/my-chiron」ディレクトリにファイルを作成し、そのレプリカである「/tmp/chiron-testing/my-other-server-filesystem」にも同じファイルができていることを確認している。

$ mkdir /tmp/chiron-testing
$ cd /tmp/chiron-testing
$ mkdir local-disk-filesystem
$ mkdir my-other-server-filesystem
$ mkdir ~/my-chiron
$ chironfs --fsname chiron-testing /tmp/chiron-testing/local-disk-filesystem=/tmp/chiron-testing/my-other-server-filesystem ~/my-chiron
$ df ~/my-chiron
Filesystem           1K-blocks      Used Available Use% Mounted on
chiron-testing        15997880  10769840   4402288  71% /home/ben/my-chiron
$ date > ~/my-chiron/test1
$ cat ~/my-chiron/test1
Thu May 29 15:17:30 EST 2008
$ cat /tmp/chiron-testing/my-other-server-filesystem/test1
Thu May 29 15:17:30 EST 2008
...
$ fusermount -u ~/my-chiron

 Chiron FSを使うときには、レプリカのファイルシステム(上記の例では「/tmp/chiron-testing」内の2つのディレクトリ)を隠蔽して直接アクセスできないようにしておくとよい。そうすれば、間違ってそれらにアクセスして、結果としてデータのレプリケーションをし損なわずに済む。