RAID

      1. RAID
        1. 概要
        2. Hardware RAID
        3. Software RAID
        4. 補記

概要

RAID(Redundant Arrays of Inexpensive Disks)構築のため、多くのHPを閲覧してみました。
    1. RAID技術は、1987年にUCB(University of California, Berkeley:カリフォルニア大学バークレイ校)のDavid A. Patterson氏らが発表した論文によって初めて紹介された。
    2. 現在ではRAID方法として0から6までのタイプがある。
    3. ハードウエアRAIDとソフトウエアRAIDがある。
    4. ハードウエアRAIDにはSCSIタイプとIDEタイプがある。
概略すると、ハードディスクを複数用意し、データのバックアップや、あるいはデータの読み書きを複数にまたがるHDD間で行い、読み書きを効率化するための方法といえそうです。
データのバックアップに纏わることどもが、ここでの着眼なのですが、他のデータの読み書きを効率化するについては、わたしたちが使用するPCレベルでは、CPUやHDDの高性能化で割愛できるのではないかと思います。

Hardware RAID

7500

ホットスワップが可能な「IntelliMirror ACS 7500」を、サーバ機には使用しています。この機器に付いての使い勝手など、後日お知らせできればと思います。

【 参照サイト 】http://www.accusys.com.tw/75.htm


Software RAID

《 ■ はじめに ■ 》

ここでソフトウエアRAIDを構築するための、前提とする環境は以下のとおりです。
    1. Turbolinux Workstation8
    2. 一台目のHDD /dev/hda (40GB)
    3. 二台目のHDD /dev/hde (40GB)
    4. リストリビュージョンのインストール時にRAID環境を構築する
top
二台目のHDDが/dev/hdeとなているのはPCIスロット用のIDEカードを増設し、HDDを接続したからです。この仕様に他意はありません。IDEカードが余っていたのでこの際、使ってみようというわけです。適宜読み変えてください。

具体的に以下のコマンドを撃って見ると、


# fdisk -l 
ディスク /dev/hde: ヘッド 16, セクタ 63, シリンダ 79780 ユニット = シリンダ数 of 1008 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/hde1 * 1 125 62968+ fd Linux raid 自動検出 /dev/hde2 126 10283 5119632 fd Linux raid 自動検出 /dev/hde3 10284 79780 35026488 5 拡張領域 /dev/hde5 10284 20441 5119600+ fd Linux raid 自動検出 /dev/hde6 20442 34663 7167856+ fd Linux raid 自動検出 /dev/hde7 34664 38726 2047720+ fd Linux raid 自動検出 /dev/hde8 38727 42789 2047720+ fd Linux raid 自動検出 /dev/hde9 42790 77328 17407624+ fd Linux raid 自動検出 ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 5005 ユニット = シリンダ数 of 16065 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/hda1 * 1 8 64228+ fd Linux raid 自動検出 /dev/hda2 9 645 5116702+ fd Linux raid 自動検出 /dev/hda3 646 5005 35021700 5 拡張領域 /dev/hda5 646 1282 5116671 fd Linux raid 自動検出 /dev/hda6 1283 2174 7164958+ fd Linux raid 自動検出 /dev/hda7 2175 2428 2040223+ fd Linux raid 自動検出 /dev/hda8 2429 2682 2040223+ fd Linux raid 自動検出 /dev/hda9 2683 4849 17406396 fd Linux raid 自動検出 /dev/hda10 4850 5005 1253038+ 82 Linux スワップ

という構成です。
具体的な作業経緯を綴る前に、先走ってわたしの場合、問題となったことを上げておきたい。作業を始めるまえに頭に置いておいてもらえれば、問題が起きた場合の何かに少しは役立つ?里任呂覆い?函?
    1. RAIDパテーションの作成
    2. /bootもRAID化するためにliloあるいはGRUBのブートローダに纏わること
わたしはこの二点がうまく行かず、数回インストールをやり直しました。



《 ■ RAIDパーティションの作成 ■ 》

RAID 1を構築。いわゆるミラーリングです。ホットスワップ(hot-swap 稼働通電状態で障害のあるHDDを取り換えミラーリングを復旧する作業)はできない。
TurboLinux Workstation8を利用します。このリストリビューションはインストール段階で設定を済ますことができ、TFDiskでパーティションを作成しますが、指定できるRAIDレベルは0,1,5です。
さて実際にTFDiskでRAID用のパーティションーションを作成しますが、考え方としては二つのHDDに同じ容量のRAID対応のパーティションを作成し、それらを仮想のHDD /dev/mdとしてマウントポイントを定める、
ということになります。
TFDiskの手順は
    1. パーティションの追加を選択
    2. パーティションタイプでLinux RAIDを選択
    3. 容量を任意に設定
この作業を必要な数ほど繰り返します。5パーティションなら10回ということです。swap領域はこれとは別に、/dev/hda10 4850 5005 1253038+ 82 Linux スワップ として作成しました。

それぞれのパーティションを?貘舒譴?RAIDパーティションとして関連付け、マウントポイントを定めます。
/bootを例にとります。
    1. hda画面で/bootとして設定したhda0を選択します
    2. 「ソフトウェアRAIDの作成」ボタンをクリックします
    3. 現れた画面で、関連付ける/dev/hda1と/dev/hde1にチェック
    4. マウントポイントを/bootとします
    5. これでmd0が作成される
この手順を/ /home /usr /varと必要に応じて繰り返します。
インストール前の準備はこれで終りです。後はノーマルなインストール手順と同じです。



《 ■ 起動と起動後の設定 ■ 》

インストール終了後の起動で、わたしの場合、順当に起動せず次のGRUBプロンプがあらわれた。

grub >

ここで、

grub > root (hd0,0)
grub > kernel /vmlinuz boot=/dev/hda1

と環境に合わせて打ち込んでいけばいいのですが、データ不足で分からず、

grub > reboot

とし、ブートディスクから立ち上げました。
起動したならRAID1の稼働状況を見てみましょう。rootでログインし次のコマンドを打ちます。

# cat /proc/mdstat 

Personalities : [raid1]
read_ahead 1024 sectors
md6 : active raid1 hde9[2] hda9[0]
      17406272 blocks [2/1] [U_]
      [============>........]  recovery = 60.0% (10447424/17406272) finish=6.3mi  n speed=18152K/sec
md5 : active raid1 hde8[2] hda8[0]
      2040128 blocks [2/1] [U_]

md4 : active raid1 hde7[2] hda7[0]
      2040128 blocks [2/1] [U_]

md3 : active raid1 hde6[2] hda6[0]
      7164864 blocks [2/1] [U_]

md2 : active raid1 hde5[1] hda5[0]
      5116544 blocks [2/2] [UU]

md1 : active raid1 hde2[1] hda2[0]
      5116608 blocks [2/2] [UU]

md0 : active raid1 hde1[1] hda1[0]
      62848 blocks [2/2] [UU]

unused devices: 

この状態は hde9からhda9にデータをコピーしています。つまりRAIDは稼働中ということになります。
この他の状態も見てみます。

# df 

ファイルシステム      1k-ブロック 使用済   使用可 使用率% マウント場所
/dev/md1 5036224 150752 4629644 4% / /dev/md0 60853 13756 43955 24% /boot /dev/md2 5036160 2900 4777436 1% /home /dev/md4 2008016 20 1905992 1% /opt /dev/md5 2008016 1552 1904460 1% /tmp /dev/md3 7052372 2686248 4007884 41% /usr /dev/md6 17132692 67428 16194952 1% /var


《 ■ 起動とLILO ■ 》

このようにRAID1の稼働を確認できたのだが、インストール終了後の起動状態が気になったので、サーバを再起動してみた。うまく行かない。
/dev/md0がうまくいっていないということだろう。ブートディスクから立ち上げれば何とかなるだろうが、仮に/dev/hdaに不具合が起こった場合どうなるのだろうと/dev/hdaを抜き起動してみた。
/dev/hdeがブートディスクからも立ち上がらない。
/dev/hdaから立ち上げ、/dev/hdeへのダビングも済ませ次の作業をした。
ファイルlilo.conf.hdaとlilo.conf.hdeを作成する。

       /etc/lilo.conf.hda
# cd /etc
# vi lilo.conf.hda
--- ファイル「lilo.conf.hda」の記述内容 ----
# BEGIN_BITMAP
# lilo-22.2-13 added "bitmap" entry

disk=/dev/md0
bios=0x80

bitmap=/boot/lilo.bmp
bmp-table=40p,300p,,24,
bmp-colors=13,15,;15,8,,
bmp-timer=74,29,13,15,
# END_BITMAP
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=150
lba32
default=linux

image=/boot/vmlinuz
	label=linux
	initrd=/boot/initrd
	read-only
	root=/dev/md1

更に、/dev/hdeのためのliloファイルも作成。

       /etc/lilo.conf.hde
# cd /etc
# vi lilo.conf.hde
--- ファイル「lilo.conf.hde」の記述内容 ----
# BEGIN_BITMAP
# lilo-22.2-13 added "bitmap" entry

disk=/dev/md0
bios=0x80

bitmap=/boot/lilo.bmp
bmp-table=40p,300p,,24,
bmp-colors=13,15,;15,8,,
bmp-timer=74,29,13,15,
# END_BITMAP
boot=/dev/hde
map=/boot/map
install=/boot/boot.b
prompt
timeout=150
lba32
default=linux

image=/boot/vmlinuz
	label=linux
	initrd=/boot/initrd
	read-only
	root=/dev/md1

HDDにboot情報を書き込む。

# lilo -C /etc/lilo.conf.hda
# lilo -C /etc/lilo.conf.hde

これらの作業でliloブートローダがはたらき起動できるようになった。片方のHDDが障害を起こしても、シャットダウンしHDDを取り換えたとしても、正常なHDDから起動できる。
だがさて、ブートローダをGRUBに次のコマンドで変更すると、

# gilo

grubブートローダからは起動できないのが現状である。


《 ■ 障害からの復旧 ■ 》

HDDに障害があり、シャットダウンしHDDを取り換え起動したところから話を始めます。
まず、新しいHDDのパーティションを同等に作成する。

# fdisk /dev/hde

作成はシングルモードでの実行をお勧めします。またfdiskの詳細は割愛します。
ここでは/dev/hdeが新しいHDDとなったとします。次のコマンドを打つ。

# raidhotadd /dev/md0 /dev/hde1
# raidhotadd /dev/md1 /dev/hde2
---- 略 -----
# raidhotadd /dev/md6 /dev/hde9

終了までは、HDDの容量にもよるが時間がかかります。
また、/dev/hdaが新しいHDDとなった場合は # raidhotadd /dev/md0 /dev/hda1 となりますが、違いはswap領域の有効化です。

# mkswap /dev/hda10
# swapon /dev/hda10

ということになります。
仕上げに再び、HDDにboot情報を書き込みます。

# lilo -C /etc/lilo.conf.hda
# lilo -C /etc/lilo.conf.hde

最後に老婆心ながら、ブートディスクの作成をお勧めしておきます。

補記

《 ■ 参照URL   ※サイト内参照ページ    引用、参照書籍 ■ 》
RAIDの基礎知識
ソフトウェアRAID1の構築
Software RAID めも
Turbo Linux Server 6.1 での SoftwareRAID構築

このページの作成にあたり、上記に掲げたURLや書籍を参考にしました。謝意を表します。具体的な引用については明記しました。 内容の間違いや、誤字は筆者の責任であり、関係する参照先の責任ではありません。

  top   home:top   server library:top   PHP PostgreSQL MySQL サンプルスクリプトへ