ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, and immense scalability.

Linuxに移植が進められているZFSはまだ実用的に利用できるという段階にはないが、カーネルモジュールとして読み込んでそのコマンドを試してみるといったことはすでにできるようになっている。ZFS on Linuxで公開されている成果物がそれだ。27日現在の最新版はZFSファイルシステムのバージョン5、プールがバージョン28がサポートされている。ファイルシステムにマウントすることができず実用的には使えないが、ひと通り作業してみる用途には利用できる。

ZFSを導入するためのビルド手順はHowtoForgeで公開されているNative ZFS On Ubuntuの記事がわかりやすい。Ubuntu 10.10 64ビット版に導入する手順を次にまとめておく。

sudo apt-get install build-essential gawk zlib1g-dev uuid-dev
cd /usr/src
sudo wget --no-check-certificate http://github.com/downloads/behlendorf/spl/spl-0.5.2.tar.gz
sudo wget --no-check-certificate http://github.com/downloads/behlendorf/zfs/zfs-0.5.2.tar.gz
sudo tar -xvzf spl-0.5.2.tar.gz
cd spl-0.5.2/
sudo ./configure
sudo make
sudo make install
cd ..
sudo tar -xvzf zfs-0.5.2.tar.gz
cd zfs-0.5.2/
sudo ./configure
sudo make
sudo make install

ZFSをインストールしたら次のコマンドでZFSカーネルモジュールを読み込ませZFSを有効にする。

sudo modprobe splat
sudo modprobe zfs

ZFSの操作はSolarisやFreeBSDのZFSと同じ。たとえば2TBのハードディスクを4つ追加し、2つづつプールとしてまとめて、さらにそこにファイルシステムを構築する例を次に掲載する。

uname -a
sudo parted /dev/sdb print
sudo parted /dev/sdc print
sudo modprobe splat
sudo modprobe zfs
lsmod | grep zfs
alias sudoz='sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib'
sudoz zpool upgrade
sudoz zfs upgrade
sudoz zpool create tank1 /dev/sdb /dev/sdc
sudoz zpool create tank2 /dev/sdd /dev/sde
sudoz zpool list
sudoz zfs create tank1/filestore
sudoz zfs create tank1/musicstore
sudoz zfs create tank2/videostore
sudoz zfs create tank2/photostore
sudoz zfs set mountpoint=none tank1
sudoz zfs set mountpoint=none tank2
sudoz zfs set mountpoint=/home/filestore tank1/filestore
sudoz zfs set mountpoint=/home/musicstore tank1/musicstore
sudoz zfs set mountpoint=/home/videostore tank2/videostore
sudoz zfs set mountpoint=/home/photostore tank2/photostore
sudoz zfs list
sudoz zpool status

Ubuntu 10.10 (64ビット版)。ディスクはGUIDパーティションテーブルでフォーマットしておく。

ZFSカーネルモジュールを読み込みZFSプールとファイルシステムのサポートバージョンを確認。なおライブラリパスが足りないため、sudoコマンド時に環境変数を設定するようにaliasで設定。

2つのディスクごとにひとつのプールを作成。それぞれのプールに対してファイルシステムを構築。

4TB弱のプールにファイルシステムが構築されている様子を確認できる。ただし実際のファイルシステムとしてはマウントできないので現在のところは見かけだけで利用できない。

システムを再起動するとカーネルモジュールが読み込まれないため、ZFSは利用できなくなる。前述したように手動で読み込ませるか、システム起動時に自動的にモジュールの読み込みを実施させるには/etc/modulesファイルに次の2行を追加しておく。

splat
zfs

システムを再起動するとプールが読み込まれないことがある。その場合、一度「sudoz zpool import -f tank1」のように強制的にimportすることで、再び作成した内容が見えるようになる。