RAIDとは
コンピューターの5大機能のうちの記憶の一部を司る、
外部記憶装置の「ディスク」ですが、
主記憶装置にあたるメモリと比較するとアクセス速度が非常に遅いです。
そのため、ディスクへのアクセスを早くすること、
また冗長化し、対障害性を高めることを目的とした技術のことを言います。
いくつかのレベルがありますが、
RAID0はディスクアクセスを高速化するための技術(ストライピング)であり、
残りの1〜6は対障害性を高めるためのミラーリングを中心とした技術です。
レベル | 概要 |
---|---|
0 | データをブロック単位で複数のディスクに分散して記録(ストライピング)する。1台が故障すると全体の故障となるので、信頼性が低下する |
1 | 同じデータを複数のディスクに書き込む(ミラーリング)。信頼性は上がるが、台数を増やしても1台分の容量となるため、効率は悪くなる。 |
3 | データをバイト単位でストライピングし、1台をエラー訂正用のパリティ情報記録用として固定する。パリティ情報からデータを復旧することができる |
5 | RAID3からパリティ情報に関してもブロック単位に分散して記録する |
AWSにおけるRAIDの設定
AWSの外部ストレージ
EC2における外部ストレージとしてEBSというものがあります。
EC2に対してアタッチ、デタッチが柔軟に可能です。
今回はこのEBSをEC2にアタッチしたうえで、RAID構成を作成してまいります。
なお、EC2はすぐに削除するテスト用として作成したので、
セキュリティグループなど含め全てデフォルトで作成。
デフォルトで作成しているEC2では1つだけEBSがアタッチされてます。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
まずはボリュームの作成とアタッチ
EBSはボリュームと表記されています。
そのため、ボリュームの作成から行います。
EC2の左側のタブのうち、ボリュームを選択します。
すると以下のような画面になります。
なお、ストレージサイズと利用期間での課金となるので、
1GBなどにしておきましょう。
すると左側のボリュームタブないでボリュームがひとつ増えているのがわかります。
まだアタッチされていないボリュームはavailableになってます。
今回はミラーリングとストライピングを行いたいので、
合計4つ作成してきます。
作成し終わったらアタッチします。
RAIDの設定
以降はインスタンス内で作業を行っていきます。
すべてをアタッチし終わると、
インスタンス内のストレージが増えているのがわかります。
増えた4つのストレージを2台ずつミラーリングし、2グループを作成。
それぞれのグループを対象にストライピングします。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1G 0 disk
xvdg 202:96 0 1G 0 disk
xvdh 202:112 0 1G 0 disk
xvdi 202:128 0 1G 0 disk
まず、4つのうち2つをRAID1でミラーリングします。
以下コマンドのうちlevelのオプション部分がRAIDのレベルの指定です。
$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/xvdg /dev/xvdi
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
もう1組も同様にミラーリング
$ sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/xvdh /dev/xvdf
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
md0とmd1というグループが作成できました。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1G 0 disk
└─md1 9:1 0 1023M 0 raid1
xvdg 202:96 0 1G 0 disk
└─md0 9:0 0 1023M 0 raid1
xvdh 202:112 0 1G 0 disk
└─md1 9:1 0 1023M 0 raid1
xvdi 202:128 0 1G 0 disk
└─md0 9:0 0 1023M 0 raid1
最後にストレイピングを行います。
$ sudo mdadm --create /dev/md2 --level=0 --raid-devices=2 /dev/md1 /dev/md0
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
md2が作成できました。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 1G 0 disk
└─md1 9:1 0 1023M 0 raid1
└─md2 9:2 0 2G 0 raid0
xvdg 202:96 0 1G 0 disk
└─md0 9:0 0 1023M 0 raid1
└─md2 9:2 0 2G 0 raid0
xvdh 202:112 0 1G 0 disk
└─md1 9:1 0 1023M 0 raid1
└─md2 9:2 0 2G 0 raid0
xvdi 202:128 0 1G 0 disk
└─md0 9:0 0 1023M 0 raid1
└─md2 9:2 0 2G 0 raid0
アクセス速度なども暇があれば見てみたいと思います。