Ubuntu Server RAID管理

サーバーを構築すると、目的にそってHDを設定することが多いですね。
例えばファイルサーバーですと大量で様々データを蓄積していきます。
当然HDは消耗品ですので、状況によっては簡単に壊れますし、2年経てばいつでも”寿命”を迎えます。
そこで冗長化を図るためRAIDを構築する事が有効な対処方法で、使われることが多いです。
このRAIDを管理方法を軽く解説します。

使用するのは以下のコマンド。

 # mdadm

「mdadm」はRAID管理コマンドの一つでよく使われるコマンドの一つです。
管理や構築など、様々な事が出来ます。
サーバ構築をミニマムで構築された方は以下の例の様にインストールしておいてください。

 # apt-get install mdadm

RAID構築

まず構築したいRAIDのレベルをよって最低限に必要なHDDの数があります。
RAID1(ストライピング)やRAID2(ミラーリング)ですと、最低2基のHDDがRAID5(パリティ)等ですと最低3基から必要となります。
詳しくは以下のサイトで確認できます。
RAID (Wikipedia)

さて、構築をしていきます。
今回はRAID5を4基のHDDで構築したいと思います。
上記の条件でのコマンドを入力します。

 # mdadm -C /dev/md0 -l5 -n4 /dev/sd[bcde]

オプション

  -C
  :クリエイト 構築するという事

 次のブロック
  構築先 この場合 ” /dev/md0 “に構築、アレイ名は[md0]で指定しなければこうなる。

 -l5
  :構築するRAIDのレベル、この場合はRAID5。RAID2がいいなら -l2 となる。

 -n4
  :構築に使うディスクの数。この場合は4基ということ。

 最後のブロックは構築に使うハードの選択、”/dev/sd[bcde]” とは、、、
 sdb、sdc、sdd、sdeの4つのハードを使うという事。

つながっているHDの名前をチェックは以下のディレクトリを参照すれば見れます。

 $ ls -l /dev/sd*

最後の「sd*」はSCSIやSATAなどで接続しているデバイスに付随する名前で、「hd*」の場合はIDEで接続されているデバイスに付随する名前になります。
例:sda、sdb、sde、などのとつく物がSATA等で接続したデバイス、hda、hdb、hdc、などがIDEデバイスです。

構築完了後は

 $ cat /proc/mdstat

で状態を確認できます。
なお、リビルド中は基本的に領域を扱わないことをおすすめします。

これでRAIDは構築出来ました。


領域の準備

次に領域にパーティションを作りフォーマットします。

パーティション作成

 # fdisk /dev/md0

以下のコマンド画面が出ますので、対話的に設定を進めます。
基本的にdefault値にして問題ないでしょう。

 Commond (m for help): n
 Pertition type:
  p primary (0 primary, 0 extended, 4 free)
  e rxtended
 select (default p): p
 Partition number (1-4, default 1): 1
 First secter (3072-6285311, default 3072): 3072 (空でデフォルトの数字が適用される。)
 Last sector, +secters or +size{K,M,G} (3072-6285311, default 6285311): 6285311 (空でデフォルトの数字が適用される。)

 Commond (m for help): w

これでパーティションが作れました。

フォーマット(XFS形式)

次に領域をフォーマットします。
フォーマット形式には色々な形式があります、今回はRAIDを前提としていますので「XFS」形式でフォーマットします。
この形式はNASなどでもよく使われており、古くからあるのですが、ファイル名やデータサイズの制限も少なく、非常に柔軟にデータを管理出来ます。

さて、標準でこのフォーマット形式を扱えないことがありますので、以下のコマンドでインストールします。

 # apt-get install xfsprogs

インストールが完了しましたらいよいよフォーマットです、以下のコマンドを実行します。

 # mkfs.xfs -f /dev/md0

これでフォーマット完了です。


マウント

マウント先を作成

 # mkdir /home/user/cache

 所有者を変更

 # chown user /home/user/cache

 マウントする

 # mount /dev/md0 /home/user/cache

これでマウント完了、自由に使うことが出来るようになりました。
起動時に自動的にマウントしたい場合は、
/etc/fstab
に記述しておいて下さい。


ロストしたHDDを交換再構築

ある意味ここからが本題ですね、RAIDはHDが故障すること前提としている節があります。
RAID5の冗長性はHDが1基までです。
1基壊れたと想定して以下のオペレーションを行なっていきたいと思います。

新たにつながったHDの名前をチェック

 $ ls -l /dev/sd*

(この場合 sdeとする)

アレイ名をチェック(変更していることがある

 $ cat /proc/mdstat

(md127変更があったとする)

新HDを組み込む

 # mdadm --manage /dev/md127 -a /dev/sde

リビルド状況を確認する

 $ cat /proc/mdstat

リビルド中は高付加のため、完了するまでは触らない方がよいですね。
割と簡単ですが、 高負荷がかかるため、リビルド中に更に1基壊れて、終了フラフが立つことがあります。
故障が発生しなくとも、周期などを決め、交換していくことも大切な事ですね。
キチンとしたストレージマネージメントを考慮しながらHDを大切に扱うことも冗長性を向上させる要素です。


アレイ名を変更する

さて、先のようにアレイの名前が変わってることがあります。
その場合は新たなアレイ名でマウントするだけですが、気持ち悪い人は以下の手順で対応してみては如何でしょうか?

 # unmount /home/user/cache
 # mdadm -S /dev/md127
 # mdadm -A /dev/md0 /dev/sd[bcde]
 # mount /dev/md0 /home/user/cache

解説としまして、
一行目でアンマウントします、既にマウントしていない場合は不要です。
二行目で”-S”オプションでアレイ名「md127」を停止させています。
三行目では新たにアレイを設定し、sdb、sdc、sdd、sdeの4つのHDを組み直してます。
四行目には新たなアレイ名でマウントし直してます。


HDDを追加再構築

データを扱っていると、容量不足がは永遠の課題です。
そこでRAID5の特性を生かし、容量を増やしていこうと思います。
まず、新規に1基システムに組み込みます、この時RAID5の場合、均一容量のHDDが必要ですので、既存の容量と同等のHDを使いましょう。
接続し、起動しましたら以下のオペレーションを行なっていきます。

新たにつながったHDの名前をチェック

 $ ls -l /dev/sd*

ここでは新たに見つかったHDDを”sdf”とします。

念の為にアレイ名をチェック(変更していることがある

 $ cat /proc/mdstat

アレイ名は”md0″とします。

新HDをアレイに組み込む

 # mdadm –manage /dev/md0 -a /dev/sdf

これでアレイに組み込まれますが、まだRAIDとしては機能せず、スペアとして認識しています。

新規はスペアなのでRAIDに組み込む

 # mdadm –grow /dev/md0 –raid-disks=5

リビルド状況を確認する

 $ cat /proc/mdstat

高付加のため完了するまでは触らない方がよい