訳:エフェメラルディスクでRAID0
やっぱりXFS使ってるなぁ。
文中にでてくるリンク先も要チェック。
RAID0 ephemeral storage on AWS EC2 - Gabriel Weinberg's Blog
====
もし、EC2インスタンスに付いているエフェメラルストレージディスクでRAID0(ディスクストライピング)を作ることを考えているなら、このポストを呼んで欲しい。というのも、私が挑戦した時にはどこにも素晴らしい情報が無かったので、それを示す。そして、なぜそうしたかったのか?も示す。
インスタンスを起動すると、ブロックデバイスマッピングとして外部ドライブを追加する必要があるか、そのディスクが使える状態ではない。私はこれにしばらく混乱した。何もしないのなら、デフォルト設定では、1つのエフェメラルドライブが追加され、/mnt にマウントされている。そして、あとからこれに接続するためにデキルことが何もない。
異なるインスタンスタイプは、異なる数とサイズのドライブを持つ。これがその一覧だ。要約すると、 m1.largeを起動すると、 1つの追加ドライブ( /dev/sdc)が使える。m1.xlargeに変えると、さらに2つ( /dev/sdd と /dev/sde )が使え、合計4本になる。
RAID0ボリュームにして、ランダムリードの平均を速くすることができるが、大きなインスタンスがすべて4本のディスクを必要としていないことに注意しなければならない。この表に各インスタンスが何本持っているかが載っている。例えば、High-Memory Extra Large (m2.xlarge)は1つのドライブしか持っていない。
コンソールから、ブロックデバイスマッピングの作り方を見つけ出せない。ウィザードに表示されないようだ。なので、コマンドラインから行う必要がある。m1.largeではこのように
ec2-run-instances -b '/dev/sdb/=ephemeral0' -b '/dev/sdc=ephemeral1'
そして、m1.xlargeではこのようになる。
ec2-run-instances ami-90fe01f9 -b '/dev/sdb/=ephemeral0' -b '/dev/sdc=ephemeral1' -b 'dev/sdd=ephemeral2' -b '/dev/sd3=ephemeral3'
他の名前をつけようとすると、エラーが投げられる。ドキュメントに従って同じ -b引数を渡せるec2-register でブロックデバイスマッピングをイメージに焼いてみたが、同じくうまくイカなかった。
一度ブートすると、 マウントポイント /mnt をアンマウントする必要がある。
umount /mnt
何かに使ってしまうとうまくいかないので、最初に行う必要がある。(私は、ユーザデータスクリプトに書いている) 以下のコマンドで RAID0を作ることができる。m1.largeではこのように
yes | mdadm --create /dev/md0 --level=0 -c256 --raid-devices=2 /dev/sdb /dev/sdc echo 'DEVICE /dev/sdb /dev/sdc' > /etc/mdadm.conf mdadm --detail --scan >> /etc/mdadm.conf
そして、m1.xlargeでは
yes | mdadm --create /dev/md0 --level=0 -c256 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde echo 'DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde' > /etc/mdadm.conf mdadm --detail --scan >> /etc/mdadm.conf
そして、ファイルシステムを作成する必要がある。
blockdev --setra 65536 /dev/md0 mkfs.xfs -f /dev/md0 mkdir -p /mnt/md0 && mount -t xfs -o noatime /dev/md0 /mnt/md0 cd /mnt/md0
最後に、リブート時にもこれを行いたいなら、fstabから /mntを削除し、/mnt/md0を追加する
perl -ne 'print if $_ !~/mnt/' /etc/fstab > /etc/fstab.2 echo '#/dev/md0 /mnt xfs defaults 0 0' >> /etc/fstab.2 mv /etc/fstab.2 /etc/fstab
Ubuntu Lucid 10.04 LTSで行った。ベースAMI(Amazon Machine Image)とAKI(Amazon Kernel Image)がここで見つかるだろう。特に、私は ami-fa01f193 と、aki-427d952b (64-bit instance-store in us-east-1 region) を使った。
エフェメラルストレージのRAID0のベンチマークについての記事がこちら。
- EC2 Ephemeral Disks vs EBS Volumes in RAID | three stacks of high society
- Disk IO and throughput benchmarks on Amazon’s EC2 – stu.mp
- Boot, ephemeral & EBS storage performance on amazon cc1.4xlarge instance types : BioTeam
EBSのRAID0のベンチマークについての記事がこちら。
- Getting Good IO from Amazon's EBS
- EC2/EBS single and RAID volumes IO benchmark - MySQL Performance Blog
- AWS Benchmarks and Best Practices - Greplin:tech
そして、インスタンスタイプの詳しい比較
[Phoronix] Amazon EC2 Cloud Benchmarks (Round 1: m1.large, m1.xlarge Performance)
CloudHarmony Blog: Disk IO Benchmarking in the Cloud