サンプルとしてインスタンスストア×2で組むパターンを書く
前提
CentOS6系、ファイルシステムはとりあえずext4で設定。
備考
AmazonLinuxでやる場合は、インスタンスストアの自動マウント機能を無効化する必要があるので注意。
http://askubuntu.com/questions/405442/how-can-i-disable-cloud-init
インスタンスストアを追加する手順
公式ドキュメント参照
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/add-instance-store-volumes.html
EC2インスタンスをLaunchする時にアタッチする。
既存EC2インスタンスに後から追加したい場合はAMIから再作成してその時にアタッチする。
RAID0で組む
単純に組むだけの手順
yum install mdadm
yes Y | mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/xvd[bc]
mkfs.ext4 /dev/md0
mkdir -p /media/ephemeral0
mount -o rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered /dev/md0 /media/ephemeral0
ただし、この方法で組んだ場合, インスタンスストアのデータが失われるタイミングでRAID0とマウントが外れてしまう。
起動スクリプト化する
データが失われるのはともかく、RAIDとマウントが外れるのはサーバとしては困る。
OS起動と共にRAIDを組み、OSシャットダウンと共にRAIDを破棄する起動スクリプトを作ることで解決する。
/etc/init.d/ephemeral-raid0
# !/bin/sh
# chkconfig: 23456 99 01
# description: Creates the Ephemeral RAID0 volume by using the instance store of EC2.
prog=ephemeral-raid0
lockfile=/var/lock/subsys/$prog
start() {
[ -x /sbin/mdadm ] || exit 1
echo -n $"mounting $prog: "
yes Y | mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/xvd[bc]
mkfs.ext4 /dev/md0
mkdir -p /media/ephemeral0
mount -o rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered /dev/md0 /media/ephemeral0
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lockfile
return $RETVAL
}
stop() {
echo -n $"unmounting $prog: "
[ ! -f /dev/md0 ] || exit 1
umount /dev/md0
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/xvd[bc]
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lockfile
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
cat /proc/mdstat
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 2
esac
設定
$ chkconfig --add ephemeral-raid0
$ chkconfig ephemeral-raid0 on
使う
service ephemeral-raid0 start
service ephemeral-raid0 status