RAIDを使って耐障害性を上げる

2011年7月19日(火)
sanonosa

RAID1を構成する

今回はハードディスクを2台増設し、そこにRAID1(ミラーリング)構成のRAIDアレイを作ってみたいと思います。実はOSをインストールするときにRAIDを構成するのであれば、インストーラ上で比較的簡単にRAIDが構築できますが、それだと応用が利かないので、今回は向学の意味も込めて、OSインストール後に一から手作業でRAIDを組む手段を取ってみます。

1. ハードディスクを増設する

まずはハードディスクを物理的に2台増設してからOSを起動させます。その際ハードディスクがOS内でそれぞれ/dev/hdb、/dev/hdcとして認識されるとします。

2. fdiskでパーティションを生成する

fdiskを使ってパーティションを生成し、かつHex codeとしてRAID用パーティションを意味する「fd」というコードを付けます。その操作を2回(ハードディスク2台)分実行します。

# fdisk /dev/hdb   <- /dev/hdbと/dev/hdcの2回実行する

~中略~

Command (m for help): n <- n(新規パーティション作成)
Command action
  e   extended
  p   primary partition (1-4)
p
1
First cylinder (1-522, default 1):   <- Enter
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): <- Enter

Command (m for help): t <- t(システムID設定)
Partition number (1-4): 1 <- 1(パーティション番号)
Hex code (type L to list codes): fd <- fd(RAIDシステムID)
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w <- w(パーティション情報をディスクへ書き込む)
The partition table has been altered!

3. mdadmを使ってRAID1構成を組む

準備ができたところでいよいよRAID構成を組みます。下記の要領で作業を行うと自動的に両ハードディスク間でデータの同期が始まります。最近のハードディスクは容量が大きいので同期化作業が完了するまでに数日かかることも珍しくありません。気長に待つか、もしくはパーティションサイズを小さく設定して同期化する範囲を小さくしましょう。

# mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 /dev/hdb1 /dev/hdc1
mdadm: /dev/hdc1 appears to contain an ext2fs file system
  size=10241344K  mtime=Tue Jun 21 07:19:28 2011
mdadm: /dev/hdc1 appears to be part of a raid array:
  level=raid1 devices=3 ctime=Mon Jun 20 08:26:28 2011
Continue creating array? y

mdadm: array /dev/md0 started.

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdb1[0] hdc1[2] 
  58604992 blocks [2/1] [U_]   
  [===  >.................] recovery = 15.4% (9061568/58604992) finish=24.3min speed=33956
  K/sec

unused devices: <none>

4. RAIDアレイをフォーマットする

生成したRAIDアレイをフォーマットします。下記の例ではファイルシステムをext3としてフォーマットしています。

# mkfs -t ext3 /dev/md0

5. マウントする

作成したRAIDアレイをマウントします。何かマウントさせる場合は慣習上/mnt配下にする場合が多いので、ここでも例にならってそのようにします。

# mkdir /mnt/md0disk           <- センス良い名前に付け替えても良い
# mount /dev/md0 /mnt/md0disk  <- RAIDデバイス(/dev/md0)を/mntへマウント

国内某有名ITベンチャー企業に創業メンバーとして携わる。国内最大規模のシステムを構築運用してきたほか、社内情報システム導入のプロジェクトマネジメント、韓国の交友関係が豊富なことから韓国関連で多数のシステムインテグレーションなども行ってきた。前職は富士通株式会社でSE。
個人blog:http://nosa.cocolog-nifty.com/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています