RAID (Redundant Arrays of Inexpensive Disks) (Vine Linux)

RAIDとは

複数のハードディスクをまとめて1台のハードディスクとして管理し、高速化や安全性の向上を図る技術。
Linuxにはkernel2.4からソフトウエアRAIDが搭載されている。

このサイトでは、稼働中の既存ディスク(hda)と同じ容量の新しいディスク(hdc)を使って、RAID 1(ミラーリング)を構築した。

※RAID構築作業は、rescueディスクを用意し、システムのバックアップを取ってから行ってください。

以下は、raidtoosを使用、ブートローダがliloのときの構築方法です。

既存のディスク状態を確認する。

# /sbin/fdisk /dev/hda
Disk /dev/hda: 10.2 GB, 10242892800 bytes
255 heads, 63 sectors/track, 1245 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hda1   *         1         8     64228+  83  Linux
/dev/hda2             9       530   4192965   83  Linux
/dev/hda3           531       563    265072+  82  Linux スワップ
/dev/hda4           564      1245   5478165    f  Win95 拡張領域 (LBA)
/dev/hda5           564      1245   5478133+  83  Linux

# df
ファイルシステム    1k-ブロック   使用中      空き 使用% マウント場所
/dev/hda2              4127108   1312340   2605120  34% /
/dev/hda1                62193     10855     48127  19% /boot
/dev/hda5              5392052    182560   4935588   4% /home
none                     61068         0     61068   0% /dev/shm

新しいディスクのパーティション確保

既存のディスクと同じ構成にしますが、ID 83と82はfd(Linux raid自動検出) にします。また、ブートパーティションを忘れずに設定しておきます。

# /sbin/fdisk /dev/hdc

このディスクのシリンダ数は 1245 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ):

〜以下省略〜

/etc/raidtabファイルの作成

# vi /etc/raidtab

raiddev			/dev/md1	← RAIDデバイスファイル名
 raid-level		1       	← RAIDレベル
 nr-raid-disks		2       	← 使用するディスク数
 nr-spare-disks		0       	← 故障時の予備ディスク数
 chunk-size		4       	← 書き込み最小データ単位(KB)
 persistent-superblock	1       	← システムのブート時にRAIDデバイスを自動検出させる
 device			/dev/hdc1 	← RAIDを構成するデバイス(新ディスク)
 raid-disk            	0        	← deviceパラメータディスク番号
 device			/dev/hda1	← RAIDを構成するデバイス(既存ディスク)
 failed-disk		1       	← 既存ディスクを壊さないようにする

raiddev			/dev/md2
 raid-level		1
 nr-raid-disks		2
 nr-spare-disks		0
 chunk-size		4
 persistent-superblock	1
 device			/dev/hdc2
 raid-disk            	0
 device			/dev/hda2
 failed-disk		1

raiddev			/dev/md3
 raid-level		1
 nr-raid-disks		2
 nr-spare-disks		0
 chunk-size		4
 persistent-superblock	1
 device			/dev/hdc3
 raid-disk            	0
 device			/dev/hda3
 failed-disk		1

raiddev			/dev/md5
 raid-level		1
 nr-raid-disks		2
 nr-spare-disks		0
 chunk-size		4
 persistent-superblock	1
 device			/dev/hdc5
 raid-disk            	0
 device			/dev/hda5
 failed-disk		1

RAIDデバイスの作成

# /sbin/init 1 ← シングルユーザーモードへ移行
# /sbin/mkraid /dev/md1
# /sbin/mkraid /dev/md2
# /sbin/mkraid /dev/md3
# /sbin/mkraid /dev/md5

mkraid: aborted.となる場合は、次のようにしてみる。

# /sbin/mkraid --really-force /dev/md1
# /sbin/mkraid --really-force /dev/md2
# /sbin/mkraid --really-force /dev/md3
# /sbin/mkraid --really-force /dev/md5

# cat /proc/mdstatでRAID稼動状態を確認

新しいディスクがRAID化され、[2/1] [U_]となっていればOK

raiddevにファイルシステムを作成

# /sbin/mkfs.ext3 /dev/md1
# /sbin/mkfs.ext3 /dev/md2
# /sbin/mkswap -c /dev/md3
# /sbin/mkfs.ext3 /dev/md5
# /sbin/tune2fs -c -1 /dev/md1
# /sbin/tune2fs -c -1 /dev/md2
# /sbin/tune2fs -c -1 /dev/md5

既存ディスクから新しいディスクにデータをコピー

# mkdir /1
# mkdir /2
# mkdir /5
# /bin/mount /dev/md1 /1
# /bin/mount /dev/md2 /2
# /bin/mount /dev/md5 /5

(hda1のコピー)
# cp -a /boot/* /1/

(hda2のコピー)
# mkdir /2/bin /2/dev /2/etc /2/initrd /2/lib /2/misc /2/opt /2/proc /2/root /2/sbin /2/tmp
 /2/usr /2/var /2/mnt /2/boot /2/home
※作成したディレクトリのパーミッションが既存ディスクと同じかどうか確認しておくこと。
# cd /bin; find . -xdev | cpio -pm /2/bin
# cd /dev; find . -xdev | cpio -pm /2/dev
# cd /etc; find . -xdev | cpio -pm /2/etc
# cd /initrd; find . -xdev | cpio -pm /2/initrd
# cd /lib; find . -xdev | cpio -pm /2/lib
# cd /misc; find . -xdev | cpio -pm /2/misc
# cd /opt; find . -xdev | cpio -pm /2/opt
# cd /root; find . -xdev | cpio -pm /2/root
# cd /sbin; find . -xdev | cpio -pm /2/sbin
# cd /tmp; find . -xdev | cpio -pm /2/tmp
# cd /usr; find . -xdev | cpio -pm /2/usr
# cd /var; find . -xdev | cpio -pm /2/var

(hda5のコピー)
# cp -a /home/* /5/

initrdを書き込む

# uname -a
Linux ****** 2.4.33-0vl0.5 #1 Thu Sep 7 07:05:34 JST 2006 i586 unknown
# /sbin/mkinitrd -f --with=raid1 /1/initrd-2.4.33-0vl0.5.raid.img 2.4.33-0vl0.5
# /sbin/mkinitrd -f --with=raid1 /boot/initrd-2.4.33-0vl0.5.raid.img 2.4.33-0vl0.5

新しいディスクのfstabを編集

# vi /2/etc/fstab
/dev/md2 	/        	ext3 	defaults      	1 1
/dev/md1 	/boot     	ext3 	defaults      	1 1
none     	/dev/pts 	devpts	gid=5,mode=620	0 0
none     	/proc    	proc 	defaults      	0 0
none     	/dev/shm 	tmpfs 	defaults      	0 0
/dev/md5 	/home    	ext3 	defaults      	1 2
/dev/md3 	swap     	swap 	defaults      	0 0

既存ディスクのliloを編集

以下を追加し、既存のディスクからRAIDで起動できるようにする。

# vi /etc/lilo.conf
image=/boot/vmlinuz-2.4.33-0vl0.5
        label=linuxRaid
        initrd=/boot/initrd-2.4.33-0vl0.5.raid.img
        read-only
        root=/dev/md2
        append=" resume2=swap:/dev/md3"

# /sbin/lilo -v ← 書き込む

新しいディスクのliloを編集

# cp /etc/lilo.conf /2/etc/lilo.conf
# vi /2/etc/lilo.conf
boot=/dev/hdaをhdcに変更して保存する。

# /sbin/lilo -v -C /2/etc/lilo.conf

新しいディスクからの起動と動作確認

システムを再起動させ、メニューからlinuxRaidを選択。
次のコマンドなどで動作確認を行う。

# /sbin/swapon -s
# cat /proc/mdstat
# df
# free

その他、システム全体が正しく動作していることを確認します。

既存ディスクのパーティション変更

# /sbin/fdisk /dev/hda

※新しいディスクと同じパーティションになっていること。 ※ID 83と82をfd(Linux raid自動起動)にする。

/etc/raidtabの編集

# vi /etc/raidtab
failed-diskをraid-diskに変更する

既存ディスクをRAIDに参加させる

# /sbin/raidhotadd /dev/md1 /dev/hda1
# /sbin/raidhotadd /dev/md2 /dev/hda2
# /sbin/raidhotadd /dev/md3 /dev/hda3
# /sbin/raidhotadd /dev/md5 /dev/hda5
# cat /proc/mdstat  ← 進行状況の確認

同期が終わると次のような表示になります。

Personalities : [raid1]
read_ahead 1024 sectors
md5 : active raid1 hda5[1] hdc5[0]
      5478016 blocks [2/2] [UU]

md3 : active raid1 hda3[1] hdc3[0]
      264960 blocks [2/2] [UU]

md2 : active raid1 hda2[1] hdc2[0]
      4192896 blocks [2/2] [UU]

md1 : active raid1 hda1[1] hdc1[0]
      64128 blocks [2/2] [UU]

▲ページ先頭へ

スポンサード リンク