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

注意

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

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

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

表 D-1. RAID の種類

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

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

ソフトウェア RAID 1 を構築するには、2 台のハードディスクにそれぞれ等しく RAID 化するパーティションを作成します。はじめに /boot パーティションを RAID 化します。TFDisk の画面で[パーティションの追加]をクリックして、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 で作成し、マウントポイントに "/" を選択してください。

スワップ領域に冗長性を持たせることは、あまり意味がありません。ここでは、/dev/sda にのみ作成します。

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

ブートローダーをインストールする場所には、デフォルトで "/dev/md0 のブートパーティションの最初のセクタ" が選択されています。しかし、環境によってはシステムを起動できないことがありますので、必ずブートディスクを作成してください。例えば、既にハードディスクの MBR に GRUB がインストールされていた場合、BIOS は起動時にその GRUB をロードするため、システムを起動することはできません。なぜなら、その GRUB をインストールした Linux はすでに消去されています。その場合には、作成したブートディスクを使用してシステムを起動し、以下のコマンドを実行します。

# ms-sys-mini --mbr /dev/sda
# ms-sys-mini --mbr /dev/sdb

このコマンドは、DOS 環境での fdisk /MBR に相当するコマンドです。これにより、GRUB は消去され、アクティブフラグが有効に設定されているパーティション(/boot)の先頭セクタをロードするようになります。そこには、LILO がインストールされているため、問題なく Turbolinux 10 Server を起動できるようになります。また、LILO のインストール先を /dev/sda の MBR に変更すれば、起動時のトラブルは少なくなりますが、ハードディスクが故障した場合、ブートディスクやレスキューシステムを使用せずに、システムを起動することはできません。

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

/etc/raidtab

RAID を構築すると、/etc/raidtab という設定ファイルが作成されます。このファイルを参照することにより、RAID の設定を確認することができます。

RAID の動作状況を確認

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

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[0]
      7164864 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
      64128 blocks [2/2] [UU]

unused devices: <none>
ハードウェア故障時の復旧方法

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

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

# fdisk /dev/sda

パーティションの作成後、以下のコマンドを実行して RAID を復旧します。

# raidhotadd /dev/md0 /dev/sda1
# raidhotadd /dev/md0 /dev/sda2

RAID の再構築がはじまります。完了後、RAID が正常に復旧しているかを確認します。

# cat /proc/mdstat

RAID の復旧後、スワップ領域を有効にします。なお、/dev/sdb が故障した場合には、fdisk によるスワップ領域の作成と以下のスワップ領域の有効化の作業は必要ありません。

# mkswap /dev/sda3
# swapon

最後に /sbin/lilo を実行してください。

# /sbin/lilo

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