付録 B. ソフトウェア RAID の設定

注意

RAID でシステムを運用するには、RAID に関する知識が必要になります。本ガイドでは、RAID の簡単な概要と操作のみを説明しますが、十分とは言えません。RAID デバイスの作成は、ある程度の知識や経験がある方のみ行ってください。

RAID(Redundant Array of Independent Disks)とは、比較的安価なハードディスクを組み合わせて大容量な仮想ディスクを作成する機能、ディスクへのアクセスを複数のディスクへ分散しパフォーマンスを向上する機能(ストライピング)、同じデータを複数のハードディスクへ書き込む機能(ミラーリング)などを持ち合わせており、複数台のハードディスクを組み合わせ、しかも冗長性を持たせることで全体として安全なシステムを運用する手段として利用されています。

RAID を構築するには、大きく分けてハードウェアにより実現する方法と、ソフトウェアにより実現する方法がありますが、Linux ではカーネルがソフトウェア RAID の機能をサポートしているため、比較的容易に RAID を導入して利用することができます。RAID には、その目的や用途により RAID0〜RAID5 といったレベルが存在します。ここでは、Turbolinux 11 Server のインストーラで設定することができる RAID0、RAID1、RAID5 のレベルについて簡単に説明します。

表 B-1.

RAID0ストライピングのみを実装しています。読み書きを複数のディスクに分散できるので、パフォーマンスがあがりますが、冗長性はありません。
RAID1ミラーリングのみを実装しています。冗長性はありますがディスクへの書き込み速度は遅くなります。
RAID5パリティデータ(エラー検出コード)も各ディスクへ分散して書き込みます。他のディスクに障害が発生してもデータの復元が可能です。また、最低でも3つのディスクデバイスが必要です。

ソフトウェア RAID を構成するには、複数のディスクデバイスを 1 つにまとめた md という仮想デバイスを作成します。md デバイスは、/dev/sda1 など他のデバイスと同じように /dev/md0、/dev/md1 といったデバイスとして作成され、他デバイスと同じようにファイルシステムを作成しマウントすることができます。以下では、RAID1 を /dev/sda と /dev/sdb で構築する手順を示します。

ソフトウェア RAID 1 を構築するには、2 台のハードディスクにそれぞれ等しく RAID 化するパーティションを作成します。はじめに /boot パーティションを RAID 化します。手動パーティションの設定画面で[パーティションの追加]をクリックして、2 台のハードディスクに同じようにパーティションを作成します。

"パーティションタイプ" は "Linux RAID" を選択し、"容量(MB)" はデフォルトの 64MB のままで構いません。また、"マウントポイント" は空白になります。/dev/sda と /dev/sdb でパーティションを作成後、[ソフトウェア RAID の作成]ボタンをクリックします。以下の画面が表示されます。

"RAID のタイプ" に "RAID1" が選択されていることを確認し、"ブロック:" で先ほど作成したパーティションを選択します。次に、"マウントポイント:" から "/boot" を選択して[OK]ボタンをクリックします。これにより、/boot パーティションの仮想デバイス /dev/md0 が作成されます。

次に /boot パーティションの RAID 構築と同様の手順で、/ パーティションの md デバイスを作成します。"RAID Linux" のパーティションを /dev/sda と /dev/sdb で作成し、マウントポイントに "/" を選択してください。

続いて同様の手順で、スワップパーティションの md デバイスを作成します。"RAID Linux" のパーティションを /dev/sda と /dev/sdb で作成し、ファイルシステムに "swap" を選択してください。

注意

スワップ領域を RAID 構成にする場合、ディスクの先頭のパーティションには /boot( /boot を作成しない場合は / ) を配置してください。/dev/md0 に スワップパーティションを作成することはできません。

/boot パーティションを RAID1 にした場合、ブートローダーの設定画面は以下のようになります。なお、/boot を RAID1 にした場合、インストールされるブートローダーは LILO になります。

注意

/boot を含むパーティションを RAID1 にした場合、ブートローダーに LILO を使用する必要があるため、詳細設定タブの"ブートローダにGRUB を使用する"の選択は解除されています。選択をして GRUB に変更しないように注意してください。

ブートローダーをインストールする場所には、デフォルトで "/dev/md0 のブートパーティションの最初のセクタ" が選択されています。しかし、環境によってはシステムを起動できないことがありますので、必ずブートディスクを作成してください。

以上で、RAID を構成するための設定は完了です。以降は通常の手順でインストール作業を進めてください。

/etc/mdadm.conf

Turbolinux 11 Server では、/etc/mdadm.conf に mdadm コマンドのオプションが格納され、システム起動時に--scan オプションによって読み込まれソフトウェア RAID が自動的に有効になっています。

ARRAY /dev/md0 level=raid1 num-devices=2  
                                    UUID=7ffdf597:69b0a6bc:f4fbbc99:3a10dff 0
ARRAY /dev/md1 level=raid1 num-devices=2                 
                                    UUID=47167177:59f96dec:c8b0da3e:61b91d6 8
ARRAY /dev/md2 level=raid1 num-devices=2 
                                    UUID=c04cb7d9:e5c2701d:c83c2847:d6b129d 1
RAID の動作状況を確認

RAID の動作状況を確認するには /proc/mdstat を参照します。RAID の構成ディスクに異常が発生した場合は、[2/2] [UU] の箇所が [2/1] [_U] もしくは [1/2] [U_] になります。

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
      1044160 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
      5116608 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
      64128 blocks [2/2] [UU]

unused devices: <none>

ティップ

次のコマンドで確認することも可能です。/dev/mdn の部分には RAID の仮想デバイス名を指定します。

 # mdadm --misc --detail /dev/mdn
ハードウェア故障時の復旧方法

はじめに、システムを停止し、故障しているハードディスク(/dev/sda)を取り出します。その後、新しいハードディスクを取り付けてシステムを起動します。正常にシステムが起動しない場合は、ブートディスクを使用してください。

起動後、fdisk コマンドを使用して、新しく取り付けたハードディスクに、故障したハードディスクと同じようにパーティションを作成します。

# fdisk /dev/sda

ティップ

パーティションのシステム ID は、t コマンドで "fd"(Linux raid auto )に変更し /boot パーティションには、a コマンドでブータブルフラグを設定してください。

作成後、以下のコマンドを実行して作成したパーティションを仮想デバイスに追加しRAID を復旧します。

# mdadm /dev/md0 --add /dev/sda1

RAID の再構築がはじまります。以下のように実行をして状況を確認できます。必ず、RAID が正常に復旧完了していることを確認してください。

# cat /proc/mdstat

同様に必要な復旧を実行します。再構築が完了したら /sbin/lilo を実行します。

# /sbin/lilo

extipl コマンドを次のように実行し MBR にブートローダーをインストールします。

# extipl install /dev/sda @taurus

*** Before exchange the master boot program,
*** You had better keep the original IPL code.
Enter file name to save:                         [Enter]を押します。
Current IPL saved to 'fdiskIPL.001'.
Install [taurus] to "/dev/sda"... Sure(y/n)?   y [Enter] を押します。
Ok.
# extipl install /dev/sdb @taurus

*** Before exchange the master boot program,
*** You had better keep the original IPL code.
Enter file name to save:                         [Enter]を押します。
Current IPL saved to 'fdiskIPL.002'.
Install [taurus] to "/dev/sdb"... Sure(y/n)?   y [Enter] を押します。
Ok.

ティップ

オプションに@taurus を指定してこのコマンドを実行した場合、DOS 環境の fdisk /MBR にLBA対応およびDOS/Linux 拡張領域内からのブート機能を追加したものに相当します。これにより、アクティブフラグが有効に設定されているパーティション(/boot)の先頭セクタをロードするようになります。そこには、LILO がインストールされているため、問題なく Turbolinux 11 Server を起動できるようになります。

復旧作業は以上で終了です。