Vine4でソフトウェアRAID

2006/09/27

Vine Linux 4.0から、インストール時でもソフトRAIDが選択できるようになりました。 ただし、/bootはインストール時にはRAIDにできないため、HDD2台でRAID-1にするような場合では データの保証はされるものの、OSは起動できなくなってしまいます。

そこで、Vine4で/bootやMBRを含めて全部、RAIDにしてみましたので、メモを残しておきます。

なお、コピー/ペーストだけではうまくいきません。意味を理解してすすめてください。 設定を失敗すれば、Linux自体が立ち上がらないことも有り得ますので、そのつもりでお願いします。


目次


SoftRaidでVineLinuxをインストール

目次へ
  1. Vine4.0をインストールします。
    このとき、/boot以外はRAIDにしてしまってOKです。
    この例では、わかりやすくするため「/boot」, SWAP, 「/」の3つだけのパーティションを作ることにします。
    スワップ・パーティションと「/」をRAIDで作ってください。
  2. インストールが完了したら、Vineを起動してrootでログイン後、RAIDの構成状態と現状を見ておきます。
    # cat /proc/mdstat
    この表示を覚えておいたほうが、これからの作業のためには便利がいいかと思います。
  3. mdadmをインストールします。Vineをフルインストールしていればすでに入ってるかもしれません。
    # apt-get update
    # apt-get install mdadm
  4. /boot用のエリアをfdiskで作ります。
    # fdisk /dev/hda
    nコマンドで/bootに割り当てるサイズを確保し、tコマンドで Linux raid (ID=fd) にしてください。
    領域確保が完了したらwでfdiskからぬけます。

    同様にして、RAIDにする2台のHDDに領域確保をしてください。
    ここで注意点は、/bootに割り当てる領域番号を同じにしてください。
    たとえば /dev/hda5 と /dev/sda5 のように (この場合は両方とも5となってます) します。
    領域番号が違っていると、ミラーになっているにもかかわらず、ドライブが死んだときにブートできなくなります。

  5. fdiskで新規作成したRAID用のエリアにRAID-1の作成をします。次を1行で入力します。
    # mdadm --create --auto=yes --level=1 --raid-devices=2 --spare-devices=1 /dev/md2 /dev/sda2 /dev/sdb2 /dev/sdc2
    • Vine4はudevを使っているので --auto=yes とする必要があるようです。
    • --level=1 でRAID-1 (=ミラーリング) を表します。
    • --raid-devices=2 で、アレイを構成するディスクの数を指定します。RAID-1では2ですね。
    • --spare-devices=1 で、スペアディスクの指定をします。スペアがなければ指定する必要はありません。
    • この例では「/dev/md2」のアレイは「/dev/sda2」「/dev/sdb2」「/dev/sdc2」の3つのHDDを使うことになります。
  6. /dev/md2をフォーマットします。
    # mkfs -j /dev/md2
  7. 適当なマウントポイントを作り、/dev/md2をmountします。
    # mkdir /mnt/tmp
    # mount /dev/md2 /mnt/tmp
  8. 現状の /boot を /dev/md2へコピーします。
    # cp -fa /boot/* /mnt/tmp
  9. /bootを/dev/md2に切り替えます。
    # umount /mnt/tmp
    # umount /boot
    # mount /dev/md2 /boot
  10. /etc/fstab を書き換えて、/bootのマウントポイントを変えておきます。
    # emacs /etc/fstab
    /dev/md2				 /boot					 ext3	 defaults		 1 2
  11. menu.lstを編集します。
    # emacs /boot/grub/menu.lst
    「root (hd0,1)」みたいな記述があると思うので、ここをRAIDにしたパーティションへ変えます。 たとえば、fdiskで/boot用パーティションを/dev/hda5としたなら、(hd0,4)というようにします。番号は1つ少ない数値となります。
  12. MBRへgrubをインストールし、再起動します。この作業で、ミラーにした2つのHDDのMBRへgrubのブート部分がインストールされます。
    # grub
    grub> root (hd0,4)
    grub> setup (hd0)
    grub> root (hd1,4)
    grub> setup (hd1)
    grub> quit
    # reboot
  13. 再起動したら dfコマンドで、/bootが/dev/md2など、RAIDデバイスに変わっているかをチェックしておきます。

なお、RAIDをテストしたいために、ディスク障害をあえて発生されるコマンドがあります。
運用テストなどでは便利がいいと思いますので、ここに書きます。
# mdadm --fail /dev/md1 /dev/hda3
これで、/dev/md1のアレイを構成している/dev/hda3に障害がおこったことにしています。スペアが設定してあれば、スペアが使われます。
# cat /proc/mdstat ← これでアレイの確認をします。

また、それぞれのアレイについての詳細情報は、次のようにしてわかります。
# mdadm -Q -D /dev/md0


RAIDのリビルドについて

目次へ

万一、HDDに障害が発生し、RAID-1が1台のHDDで動作するようになったら、次のようにします。

  1. 障害が発生しているHDDを調べます。
    # cat /proc/mdstat

    正常なら2台でアレイを構築していれば「2/2」と表示されます。
    md0 : active raid1 sda2[1] hdb2[0]
    	  2048192 blocks [2/2] [UU]

    以下は/dev/hdb2が異常な場合です。
    md0 : active raid1 sda2[1] hdb2[0](F)
    	  2048192 blocks [2/1] [U_]

    スペアHDDの指定がしてあれば、オートリビルドしているはずなので、それも確認します。

    以降の作業では、 cat /proc/mdstat を用いて、アレイの状況をチェックしながらすすめましょう。

  2. アレイから障害DISKを取り除きます。この例では/dev/hdb2にFフラグが立っていてエラーなので、これをアレイから取り外します。
    # mdadm --remove /dev/md0 /dev/hdb2
  3. スペアのHDDがあれば、それにfdiskでRAID用エリア (タイプ=fd) を割り当てます。
  4. アレイにHDDを追加します。ここでは/dev/hdc3が新しいHDDのパーティションなので、これを/dev/md1へ追加しています。
    # mdadm --add /dev/md0 /dev/hdc3
  5. アレイに追加すると、リビルドが始まります。
    # cat /proc/mdstat
    これでリビルドの状況を確認します。

スペアディスクを追加する場合も「mdadm --add」を使えばできます。アレイの必要台数以上に 「mdadm --add」 すると、自動的にその分はスペアになるようです。

Copyright©2001-2017 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org