2012年9月17日月曜日

CentOSでRAID0

前回のブログでawsのEC2インスタンスでエフェメラルディスクを使う方法を記載した。
EC2インスタンスサイズによっては複数のディスクを使用する事ができる。
という事で折角なのでCentOSでRAID0を組んでみたので、設定方をを記載してみる。
ちなみにCentOSは6.3を使用。


・最初に
CentOSでソフトウェアRAIDを組む場合はmdadmを使用します。パッケージが組み込まれて
いない場合はyumでインストールできます。
# yum -y install mdadm

・デバイスの確認
エフェメラルディスクがOS上でどのように認識されているか確認します。
# ls -l /dev |grep xvd
→基本的にはEC2インスタンス作成時に割り当てたデバイス名とリンクしています。
 sdbで指定した場合は/dev/xvdbとなります。

今回はディスクを/dev/xvdi、/dev/xvdjの二つ使用する事とします。

・ディスクの初期化
fdiskを使用してディスクを初期化します。
# fdisk /dev/xvdi
→対話型となるため下記の流れで応答します。
 n 新たに領域を作成する
 p 基本領域 (1-4)
 1 一番目
   空Enter(開始シリンダを一番最初)
   空Enter(終了シリンダを一番最後)
 w 書き込み終了

同様に/dev/xvdjも初期化します。

・デバイスの作成
新規でRAID用デバイスを作成します。
# mknod /dev/md1 b 210 1
→オプション説明
 /dev/md1 デバイスファイル名。mdXとするため今回は/dev/md1を指定
 b デバイス種別。ブロックデバイスのためbを指定
 210 メジャー番号。空いている番号であれば良いため今回は210を指定
 1 マイナー番号。メジャー番号の中で空いている番号であれば良いため1を指定

・RAIDの作成
mdadmを使用してRAIDを作成します。
# mdadm --create --verbose /dev/md1 --level=0 --raid-devices=2 /dev/xvdi /dev/xvdj
→オプション説明
 --create 作成
 --verbose 画面表示
 /dev/md1 RAIDを作成するデバイス名
 --level= RAIDのレベル。今回はRAID0のため0を指定。
 --raid-devices= RAIDに組み込むディスク数。今回は二つのため2を指定。
 /dev/XX 組み込むディスクデバイス名。今回は/dev/xvdi、/dev/xvdjを指定

・RAID構成の確認
指定した内容で作成されているか確認します。
# cat /proc/mdstat

・ファイルシステムの作成
作成したRAIDデバイスを使用してファイルシステムを作成します。今回はex4とします。
# mkfs.ext4 /dev/md1

・mdadm.confの作成
再起動後も使用できるようにmdadm.confファイルを作成します。
# vi /etc/mdadm.conf
→下記の内容を記載します。

DEVICE /dev/xvd[a-z]*
ARRAY /dev/md1 devices=/dev/xvdi,/dev/xvdj


・fatabへの登録
自動起動するようにfstabに追記します。今回は/mnt/1にマウントします。
# vi /etc/fstab
→下記の内容を記載します。
/dev/md1  /mnt/1 ext4 defaults 0 0

・マウントの実施
マウントを実施します。
# mount /mnt/1

・容量の確認
マウントされたボリュームが期待する容量となっている事を確認します。
# df -h /mnt/1

今回の手順はEC2のエフェメラルディスクを使用している事による特別な内容は無く
普通にRAIDを組む場合と同じになります。但し、エフェメラルディスクはEC2インスタンス
のstopで設定などが消えてしまうため、上記手順の一部を再度行う必要があります。
・RAIDの作成
・ファイルシステムの作成
・マウントの実施

私が確認したところ、rebootではRAID構成情報もデータも残っていましたので、stopを
した場合のみ再作成となる様子です。

awsのエフェメラルディスクを使う

久々となってしまったが技術情報を書こうと思う。
今回はawsのEC2インスタンスでエフェメラルディスクを簡単に使う方法を記載する。


・最初に
EC2インスタンスを作成する場合に最近はEBSを使用するのが通常の方法です。
しかしEC2インスタンスにはエフェメラルディスクと呼ばれるテンポラリ的なディスクが
ついています。エフェメラルディスクはEC2インスタンスをstopするとデータが消えて
しまうため、bootディスクやデータファイルのように消えてしまうと問題となる場合には
使用が厳しい事となります。しかし、ファイル転送やデータをダンプして別のディスク
(S3など)へ転送するなどの一時領域としては有効な領域となります。

・使用方法
元々、EC2インスタンスを作成した場合にエフェメラルディスクは自動で付与されて
います。EC2 APIなどを使いEC2インスタンスを起動する際に指定する方法がある
のですが、今回はEC2インスタンスを作成する時に最初からディスク割り当てする
方法を記載します。
1.AWS Management Consoleより新規でEC2インスタンスをlaunch
  (作成済みAMIからでもOKです)
2.ウィザードの「Storage Device Configuration」にて「Instance Store Volumes」タブ
  を選択します。
3.ここでエフェメラルディスクを追加します。注意としては0~3と四つ選択する事が
  できますが、インスタンスサイズにより使用可能なディスクの数や容量に違いが
  あります。(下記はaws Documentationより抜粋(2012/9現在))

TypeNameInstance Store Volumes
Microt1.microNone (use Amazon EBS volumes)
Smallm1.small1 x 150 GiB
Mediumm1.medium1 x 400 GiB
Largem1.large2 x 420 GiB (840 GiB)
Extra Largem1.xlarge4 x 420 GiB (1680 GiB)
High-CPU Mediumc1.medium1 x 340 GiB
High CPU Extra Largec1.xlarge4 x 420 GiB (1680 GiB)
High-Memory Extra Largem2.xlarge1 x 410 GiB
High-Memory Double Extra Largem2.2xlarge1 x 840 GiB
High-Memory Quadruple Extra Largem2.4xlarge2 x 840 GiB (1680 GiB)
High I/Ohi1.4xlarge2 x 1 TiB SSD (2 TiB)
Cluster Compute Quadruple Extra Largecc1.4xlarge2 x 840 GiB (1680 GiB)
Cluster Compute Eight Extra Largecc2.8xlarge4 x 840 GiB (3360 GiB)
Cluster GPU Quadruple Extra Largecg1.4xlarge2 x 840 GiB (1680 GiB)


要は通常のEC2インスタンス作成をする際のディスク設定で指定するだけで、EC2 API
などを使用して起動しなくてもエフェメラルディスクが使用できるようになります。