ZFS については、Oracle の文書でもいいけれど、以下のblog を参照してほしい。
特にファイルシステムについていろいろなうんちくが書かれていて興味深い。
https://blogs.oracle.com/bonwick/en_US/
AWS では通常ブロックデバイス(HDD)を利用したい場合は EBS という仮想デバイスを利用する。
EBSは単体で 1TB までの容量をサポートしているけれど、それよりも大きな容量たとえば 4TB を一つのディスクでほしい場合がある。
その場合 RAID-0 でストライピングするなどの方法があるけれどやはり信頼性という意味では不安が残る。EBS自身は高い信頼性を持っているけれど、とはいえ全く障害が無いわけではないのでより高い信頼性がほしくなる。
EBS の耐久性については以下の記載がある。
Amazon EBS 製品の詳細 - Amazon EBS ボリュームの耐久性
http://aws.amazon.com/jp/ebs/details/
Amazon EBS の最新スナップショット以降に変更されたデータの量が 20 GB 以下であるボリュームでは、年間故障率(AFR)は 0.1%~0.5% であることが期待できます。
それでは、実際に構成してみよう。
- AMI から AWS Linux を起動
 今回は検証ということもあり、t1.micro で起動した。特にオプション等は指定しない。
 AMIは"Amazon Linux AMI 2013.09.2 - ami-0d13700c (64-bit)" を使用した。
 
- ツールとカーネルモジュールの導入以下のURLにある手順に従って導入した
 Building Generic RPM Packages http://zfsonlinux.org/generic-rpm.html
 必要なパッケージのインストール[ec2-user@ip-10-133-144-5 ~]$ sudo yum groupinstall "Development Tools"
 ...
 [ec2-user@ip-10-133-144-5 ~]$ sudo yum install kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi wget
 ...
 
 ZFS ソースのダウンロード。現在(2014年1月29日)最新のパッケージは、0.6.2なので以下のようにダウンロード
 [ec2-user@ip-10-133-144-5 ~]$ wget http://archive.zfsonlinux.org/downloads/zfsonlinux/spl/spl-0.6.2.tar.gz
 ...
 [ec2-user@ip-10-133-144-5 ~]$ wget http://archive.zfsonlinux.org/downloads/zfsonlinux/zfs/zfs-0.6.2.tar.gz
 ...
 
 ダウンロードしたパッケージの展開
 [ec2-user@ip-10-133-144-5 ~]$ tar zxf spl-0.6.2.tar.gz
 [ec2-user@ip-10-133-144-5 ~]$ tar zxf zfs-0.6.2.tar.gz
 
 ツールのコンパイル。以下の例で "user" となっている部分は、そういう指示なのでユーザー名とかで置き換えなくていい。 ちょっとエラーが出ていたけれど無視してよさそう。
 [ec2-user@ip-10-133-144-5 ~]$ cd spl-0.6.2
 [ec2-user@ip-10-133-144-5 spl-0.6.2]$ ./configure --with-config=user
 ..............
 [ec2-user@ip-10-133-144-5 spl-0.6.2]$ make rpm-utils rpm-dkms
 ..............
 
 同じく、モジュールのコンパイル。
 [ec2-user@ip-10-133-144-5 spl-0.6.2]$ cd ../zfs-0.6.2
 ..............
 [ec2-user@ip-10-133-144-5 zfs-0.6.2]$ ./configure --with-config=user
 [ec2-user@ip-10-133-144-5 zfs-0.6.2]$ make rpm-utils rpm-dkms
 
 出来上がったパッケージの確認
 [ec2-user@ip-10-133-144-5 zfs-0.6.2]$ cd ..
 [ec2-user@ip-10-133-144-5 ~]$ ls -lR spl-0.6.2/*.rpm zfs-0.6.2/*.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 571071 Jan 29 06:02 spl-0.6.2/spl-0.6.2-1.amzn1.src.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 22408 Jan 29 06:02 spl-0.6.2/spl-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 32146 Jan 29 06:02 spl-0.6.2/spl-debuginfo-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 586092 Jan 29 06:02 spl-0.6.2/spl-dkms-0.6.2-1.amzn1.noarch.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 571890 Jan 29 06:02 spl-0.6.2/spl-dkms-0.6.2-1.amzn1.src.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 2150197 Jan 29 06:08 zfs-0.6.2/zfs-0.6.2-1.amzn1.src.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 884058 Jan 29 06:10 zfs-0.6.2/zfs-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 2937091 Jan 29 06:10 zfs-0.6.2/zfs-debuginfo-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 295009 Jan 29 06:10 zfs-0.6.2/zfs-devel-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 2202506 Jan 29 06:10 zfs-0.6.2/zfs-dkms-0.6.2-1.amzn1.noarch.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 2147951 Jan 29 06:10 zfs-0.6.2/zfs-dkms-0.6.2-1.amzn1.src.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 8084 Jan 29 06:10 zfs-0.6.2/zfs-dracut-0.6.2-1.amzn1.x86_64.rpm
 -rw-rw-r-- 1 ec2-user ec2-user 39214 Jan 29 06:10 zfs-0.6.2/zfs-test-0.6.2-1.amzn1.x86_64.rpm
 
 パッケージのインストール。
 ドキュメントでは debuginfo はいらないと書いてあるけれど、趣味の問題とまだ比較的新しいモジュールなので入れている。
 後で念のためkernel の debuginfo とcrash も入れておいた方がいいだろう。 ただ AWS だと init でダンプとれないから意味がないかも。
 [ec2-user@ip-10-133-144-5 ~]$ sudo yum localinstall \
 > spl-0.6.2/spl-0.6.2-1.amzn1.x86_64.rpm \
 > spl-0.6.2/spl-debuginfo-0.6.2-1.amzn1.x86_64.rpm \
 > spl-0.6.2/spl-dkms-0.6.2-1.amzn1.noarch.rpm \
 > zfs-0.6.2/zfs-0.6.2-1.amzn1.x86_64.rpm \
 > zfs-0.6.2/zfs-debuginfo-0.6.2-1.amzn1.x86_64.rpm \
 > zfs-0.6.2/zfs-devel-0.6.2-1.amzn1.x86_64.rpm \
 > zfs-0.6.2/zfs-dkms-0.6.2-1.amzn1.noarch.rpm \
 > zfs-0.6.2/zfs-dracut-0.6.2-1.amzn1.x86_64.rpm \
 > zfs-0.6.2/zfs-test-0.6.2-1.amzn1.x86_64.rpm
 
またパッケージしてインストールする手順になっているので横展開も問題ない感じです。
