2005年02月23日 (水曜日)

ARAID99-1000LでユニットRAID-1 - [Raid]


araid900-1000l.jpg


このドメインを構成するLinuxサーバは、ずっと「/」「/boot」のパーティション種別がext3でした。本当は、お気に入りのXFSにしたかったのだけれど、ソフトRAIDでうまく設定できず、もう1年も経ってしまった。
そろそろディスクの挙動が心配だったりする時期なので、前々から狙っていたARAID99-1000L
を買った。これで全パーティションをXFS化。

投稿日時 : 21:56 | コメント (0) | トラックバック(1)

 

2004年03月28日 (日曜日)

DebianでKernel 2.6+XFS+RootなソフトRAID1化 - [Raid]

 これまでにext3のファイルシステム破壊で何度も泣いたので、Linuxカーネル2.6のXFSネイティブサポートを機に乗り換え。

 基本的に、以前まとめたRHLでのソフトRAID手順とほとんど変わらず。XFSフォーマット周りの違いだけ。そして、ここでの環境は、既にhdaのディスク上でXFSモジュールをカーネルに組み込んだ、カーネル2.6(Sarge環境)が稼働している前提のもの(「/」もソフトRAIDしたいので)。
 しかし、3月27日現在、/var、/www、swapのみで、/のXFS化は実現できておらず…。なぜだ…。

・まず前準備でXFS用のツールをインストール

# apt-get install xfsprogs

■1.~6.までは、RHLでの手順といっしょ
 パーティション、ディレクトリ、ファイルフォーマットは次のように決め。

hdc1 /boot ext3のままにしておく
hdc2 / XFSにしたい…
hdc3 /var XFS
hdc5 /www XFS
hdc6 swap

■7. RAIDデバイスをフォーマット
# mke2fs /dev/md1;tune2fs -c 0 -j /dev/md1
# mkfs.xfs -l size=32m -f /dev/md2
# mkfs.xfs -l size=32m -f /dev/md3
# mkfs.xfs -l size=32m -f /dev/md5
# mkswap /dev/md6
Setting up swapspace version 1, size = 1450110 kB

■8. RAIDデバイスをマウント
# mkdir /mnt/hdc1 /mnt/hdc2 /mnt/hdc3 /mnt/hdc5

# mount /dev/md1 /mnt/hdc1
# mount -t xfs /dev/md2 /mnt/hdc2
# mount -t xfs /dev/md3 /mnt/hdc3
# mount -t xfs /dev/md5 /mnt/hdc5

 ちゃんとXFSマウントされているか確認してみる。

# mount
~中略~
/dev/md2 on /mnt/hdc2 type xfs (rw)
/dev/md3 on /mnt/hdc3 type xfs (rw)
/dev/md5 on /mnt/hdc5 type xfs (rw)

■9. hda → mbへ丸々データコピー
 init 1してからraidcpを実行。芸がない単なるバッチ。

# cat /root/raidcp

#!/bin/sh
cd /
mkdir /mnt/hdc2/bin \
/mnt/hdc2/boot \
/mnt/hdc2/mnt/cdrom \
/mnt/hdc2/mnt/cdrom0 \
/mnt/hdc2/dev \
/mnt/hdc2/etc \
/mnt/hdc2/mnt/floppy \
/mnt/hdc2/home \
/mnt/hdc2/initrd \
/mnt/hdc2/lib \
/mnt/hdc2/mnt \
/mnt/hdc2/opt \
/mnt/hdc2/proc \
/mnt/hdc2/root \
/mnt/hdc2/sbin \
/mnt/hdc2/sys \
/mnt/hdc2/tmp \
/mnt/hdc2/usr \
/mnt/hdc2/proc 2>/dev/null /dev/null

cd /bin;find . -xdev | cpio -pm /mnt/hdc2/bin
echo "bin cp end"
cd /boot;find . -xdev | cpio -pm /mnt/hdc2/boot
echo "boot cp end"
cd /dev;find . -xdev | cpio -pm /mnt/hdc2/dev
echo "dev cp end"
cd /etc;find . -xdev | cpio -pm /mnt/hdc2/etc
echo "etc cp end"
cd /home;find . -xdev | cpio -pm /mnt/hdc2/home
echo "home cp end"
cd /initrd;find . -xdev | cpio -pm /mnt/hdc2/initrd
echo "initrd cp end"
cd /lib;find . -xdev | cpio -pm /mnt/hdc2/lib
echo "lib cp end"
cd /mnt;find . -xdev | cpio -pm /mnt/hdc2/mnt
echo "mnt cp end"
cd /opt;find . -xdev | cpio -pm /mnt/hdc2/opt
echo "opt cp end"
cd /proc;find . -xdev | cpio -pm /mnt/hdc2/proc
echo "proc cp end"
cd /root;find . -xdev | cpio -pm /mnt/hdc2/root
echo "root cp end"
cd /sbin;find . -xdev | cpio -pm /mnt/hdc2/sbin
echo "sbin cp end"
cd /sys;find . -xdev | cpio -pm /mnt/hdc2/sys
echo "sys cp end"
cd /usr;find . -xdev | cpio -pm /mnt/hdc2/usr
echo "usr cp end"
cd /var;find . -xdev | cpio -pm /mnt/hdc3
echo "var cp end"
cd /www;find . -xdev | cpio -pm /mnt/hdc5
echo "www cp end"

■10.
~スキップ~

■11. md側だけをfstab編集
 RAIDデバイス(md)への変更とext3からxfsへも。

# vi /mnt/hdc2/etc/fstab
/dev/hda2 / ext3 errors=remount-ro 0 1
/dev/md6 none swap sw 0 0
proc /proc proc defaults 0 0
#none /sys sysfs defaults 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/hda1 /boot ext3 defaults 0 2
/dev/md3 /var xfs defaults 0 2
/dev/md5 /www xfs defaults 0 2

・メモ

リペア時のコマンド指定
# xfs_repair -L /dev/hda3

# fdisk /dev/hda

Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 563 283720+ 83 Linux
/dev/hda2 564 209828 105469560 83 Linux
/dev/hda3 209829 227461 8887032 fd Linux raid autodetect
/dev/hda4 227462 238216 5420520 5 Extended
/dev/hda5 227462 237150 4883224+ fd Linux raid autodetect
/dev/hda6 237151 238216 537232+ fd Linux raid autodetect

# fdisk /dev/hdc

Disk /dev/hdc: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 563 283720+ fd Linux raid autodetect
/dev/hdc2 564 209828 105469560 fd Linux raid autodetect
/dev/hdc3 209829 227461 8887032 fd Linux raid autodetect
/dev/hdc4 227462 238216 5420520 f W95 Ext'd (LBA)
/dev/hdc5 227462 237150 4883224+ fd Linux raid autodetect
/dev/hdc6 237151 238216 537232+ fd Linux raid autodetect

投稿日時 : 03:03 | コメント (0) | トラックバック(0)

 

2003年09月17日 (水曜日)

Red Hat Linux 9でソフトRAID - Software Raid - [Raid]

Red Hat Linux 9:Software Raid How-To
Root + Swap + Raid + GRUB
write: Yoshi-K
July 2003

この文書は、RedHatLinux 9で非RAID環境からソフトウェアRAID(レベル1)を実現するための手順です。
Red Hat Linux 9のカーネルは、すでにRAIDが使用可能な状態にあるので、チューニングやraidtoolsのインストールなどについては省いてあります。
※ 筆者の環境を忠実にログ掲載しています。試す際には自分のデバイス(ディスク)へ置き換える必要があります。
---------------------------------------
目次

1. 既存のディスク状態を確認する
2. 新ディスクをfdiskしてパーティション確保
3. raidtabファイルを新規に作る
4. grub.confにRAID用のtitleを追加しておく
5. init 1して作業続行、そしてRAIDデバイス作成
6. RAID稼働状態を見てみる
7. RAIDデバイスをフォーマット
8. RAIDデバイスをマウント
9. hda→mbへ丸々データコピー
10. initrdを書き込む
11. md側だけをfstab編集
12. スワップ稼働状況やdf、freeして正常かを確認
13. hdaをRAIDに加えるべくfdiskする
14. raidtabファイルの「failed-disk」を「raid-disk」に変更
15. hdaをRAIDデバイスに追加
16. Partedでhdc6パーティションをリサイズ
17. 正常に動作しているか確認
18. 最後にhda、hdcにGRUBを書き込む
19. おまけ(バックアップ)
20. 参考ページURL
----------------------------------------

# uname -a
Linux galaxy 2.4.20-18.9 #1 Thu May 29 07:08:16 EDT 2003 i686 i686 i386 GNU/Linux

既存:hdaで120GBを1台構成
新規:新規のディスク(hdc)を追加して、全パーティションをhdaと同じ配分にしてRAID-1化する

■1. 既存のディスク状態を確認する

Disk /dev/hda: 122.9 GB, 122942324736 bytes
255 heads, 63 sectors/track, 14946 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 38 305203+ 83 Linux /boot
/dev/hda2 39 13041 104446597+ 83 Linux /
/dev/hda3 13042 14176 9116887+ 83 Linux /var
/dev/hda4 14177 14946 6185025 f Win95 拡張領域 (LBA)
/dev/hda5 14177 14813 5116671 83 Linux /www
/dev/hda6 14814 14943 1044193+ 82 Linux スワップ

# df -m
Filesystem 1M-ブロック 使用 使用可 使用% マウント位置
/dev/hda2 100398 54036 41263 57% /
/dev/hda1 289 15 259 6% /boot
none 251 0 251 0% /dev/shm
/dev/hda3 8764 348 7971 5% /var
/dev/hda5 4919 465 4205 10% /www

# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext2 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/var /var ext3 defaults 1 2
LABEL=/www /www ext3 defaults 1 2
/dev/hda6 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

----------------------------------------------
■2. 新ディスクをfdiskしてパーティション確保

# fdisk /dev/hdc
コマンド (m でヘルプ): p

Disk /dev/hdc: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス ブート 始点 終点 ブロック ID システム

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-238216, 初期値 1):
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-238216, 初期値 238216): +290M

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (564-238216, 初期値 564):
初期値 564 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (564-238216, 初期値 238216): +107000M

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (207891-238216, 初期値 207891):
初期値 207891 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (207891-238216, 初期値 238216): +9200M

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
e
Selected partition 4
最初 シリンダ (225718-238216, 初期値 22571Cool :
初期値 225718 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (225718-238216, 初期値 238216):
初期値 238216 を使います

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

Disk /dev/hdc: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 1 563 283720+ 83 Linux
/dev/hdc2 564 207890 104492808 83 Linux
/dev/hdc3 207891 225717 8984808 83 Linux
/dev/hdc4 225718 238216 6299496 5 拡張領域

コマンド (m でヘルプ): n
最初 シリンダ (225718-238216, 初期値 22571Cool :
初期値 225718 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (225718-238216, 初期値 238216): +5000M

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

Disk /dev/hdc: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 1 563 283720+ 83 Linux
/dev/hdc2 564 207890 104492808 83 Linux
/dev/hdc3 207891 225717 8984808 83 Linux
/dev/hdc4 225718 238216 6299496 5 拡張領域
/dev/hdc5 225718 235406 4883224+ 83 Linux

コマンド (m でヘルプ): n
最初 シリンダ (235407-238216, 初期値 235407):
初期値 235407 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (235407-238216, 初期値 238216):
初期値 238216 を使います

コマンド (m でヘルプ): t
領域番号 (1-6): 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 2
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 3
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 3 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 4
16進数コード (L コマンドでコードリスト表示): f
領域のシステムタイプを 4 から f (Win95 拡張領域 (LBA)) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 5
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 5 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): t
領域番号 (1-6): 6
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 5 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): a
領域番号 (1-6): 1

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

Disk /dev/hdc: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 * 1 563 283720+ fd Linux raid 自動検出
/dev/hdc2 564 207890 104492808 fd Linux raid 自動検出
/dev/hdc3 207891 225717 8984808 fd Linux raid 自動検出
/dev/hdc4 225718 238216 6299496 f Win95 拡張領域 (LBA)
/dev/hdc5 225718 235406 4883224+ fd Linux raid 自動検出
/dev/hdc6 235407 238216 1416208+ fd Linux raid 自動検出

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

※ ブートパーティション設定を忘れずに。

■3. raidtabファイルを新規に作る

# vi /etc/raidtab
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc1
raid-disk 0
device /dev/hda1
failed-disk 1
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc2
raid-disk 0
device /dev/hda2
failed-disk 1
raiddev /dev/md3
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc3
raid-disk 0
device /dev/hda3
failed-disk 1
raiddev /dev/md5
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc5
raid-disk 0
device /dev/hda5
failed-disk 1
raiddev /dev/md6
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc6
raid-disk 0
device /dev/hda6
failed-disk 1
---------
raiddev :RAIDデバイスファイル名
raid-level :RAIDレベル(0,1,5)
device :RAIDを構成するデバイス
raid-disk :deviceパラメータディスク番号
chunk-size :デバイスに書き込むことができる最小データ量(KB)
nr-raid-disks :使用するディスク数
nr-spare-disks :予備ディスク数
persistent-superblock :RAIDデバイスの自動認識


■4. grub.confにRAID用のtitleを追加しておく(hdcのRAIDデバイスブートが失敗した際、
元のhdaでブートができるように保険)

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-18.9)
root (hd0,0)
kernel /vmlinuz-2.4.20-18.9 ro root=LABEL=/
initrd /initrd-2.4.20-18.9.img
title Red Hat Linux (2.4.20-18.9) [RAID boot]
root (hd0,0)
kernel /vmlinuz-2.4.20-18.9 ro root=/dev/md2
initrd /initrd-2.4.20-18.9.img

■5. init 1して作業続行、そしてRAIDデバイス作成

--------------------
# init 1

# mkraid /dev/md1
handling MD device /dev/md1
analyzing super-block
disk 0: /dev/hdc1, 282712kB, raid superblock at 282624kB
disk 1: /dev/hda1, failed
# mkraid /dev/md2
handling MD device /dev/md2
analyzing super-block
disk 0: /dev/hdc2, 98047152kB, raid superblock at 98047040kB
disk 1: /dev/hda2, failed
# mkraid /dev/md3
handling MD device /dev/md3
analyzing super-block
disk 0: /dev/hdc3, 9082584kB, raid superblock at 9082496kB
disk 1: /dev/hda3, failed
# mkraid /dev/md5
handling MD device /dev/md5
analyzing super-block
disk 0: /dev/hdc5, 4883224kB, raid superblock at 4883136kB
disk 1: /dev/hda5, failed
# mkraid /dev/md6
handling MD device /dev/md6
analyzing super-block
disk 0: /dev/hdc6, 7765096kB, raid superblock at 7764992kB
disk 1: /dev/hda6, failed
#

~こんなメッセージの時は~
# mkraid /dev/md1
handling MD device /dev/md1
analyzing super-block
disk 0: /dev/hdc1, 274144kB, raid superblock at 274048kB
/dev/hdc1 appears to contain an ext2 filesystem -- use -f to override
mkraid: aborted.
(In addition to the above messages, see the syslog and /proc/mdstat as well
for potential clues.)

# mkraid --really-force /dev/md1

■6. RAID稼働状態を見てみる

# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md6 : active raid1 hdc6[0]
7764992 blocks [2/1] [U_]

md5 : active raid1 hdc5[0]
4883136 blocks [2/1] [U_]

md3 : active raid1 hdc3[0]
9082496 blocks [2/1] [U_]

md2 : active raid1 hdc2[0]
98047040 blocks [2/1] [U_]

md1 : active raid1 hdc1[0]
282624 blocks [2/1] [U_]

unused devices:
#

■7. RAIDデバイスをフォーマット

# mke2fs /dev/md1;mke2fs /dev/md2;mke2fs /dev/md3;\
mke2fs /dev/md5;mkswap /dev/md6
# tune2fs -c 3 -j /dev/md1
# tune2fs -c 7 -j /dev/md2
# tune2fs -c 4 -j /dev/md3
# tune2fs -c 5 -j /dev/md5

■8. RAIDデバイスをマウント

# mkdir /1
# mkdir /2
# mkdir /3
# mkdir /5
# mount /dev/md1 /1;mount /dev/md2 /2;mount /dev/md3 /3;mount /dev/md5 /5

■9. hda→mbへ丸々データコピー

# cat /root/raidcp

#!/bin/sh
cd /
cp -a /boot/* /1/
mkdir /2/bin /2/etc /2/lib /2/misc /2/mp3 /2/opt /2/root /2/home /2/sbin \
/2/dev /2/usr /2/mnt /2/mnt/cdrom /2/mnt/floppy /2/proc 2>/dev/null /dev/null
cd /bin;find . -xdev | cpio -pm /2/bin
cd /sbin;find . -xdev | cpio -pm /2/sbin
cd /etc;find . -xdev | cpio -pm /2/etc
cd /lib;find . -xdev | cpio -pm /2/lib
cd /root;find . -xdev | cpio -pm /2/root
cd /home;find . -xdev | cpio -pm /2/home
cd /misc;find . -xdev | cpio -pm /2/misc
cd /mp3;find . -xdev | cpio -pm /2/mp3
cd /opt;find . -xdev | cpio -pm /2/opt
cd /usr;find . -xdev | cpio -pm /2/usr
cp -a /var/* /3/
cp -a /www/* /5/

■10. initrdを書き込む(必要ないかも)

# mkinitrd -f /1/initrd-2.4.20-18.9.img 2.4.20-18.9
または、
# mkinitrd -f --with=raid1 /1/initrd-2.4.20-18.9.img 2.4.20-18.9

■11. md側だけをfstab編集

# vi /2/etc/fstab
/dev/md2 / ext3 defaults 1 1
/dev/md1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/md3 /var ext3 defaults 1 2
/dev/md5 /www ext3 defaults 1 2
/dev/md6 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

----再起動してGRUBのRAIDを選択----

■12. スワップ稼働状況やdf、freeして正常かを確認

# swapon -s
Filename Type Size Used Priority
/dev/md6 partition 1416120 0 -1

# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md6 : active raid1 hdc6[0]
1416128 blocks [2/1] [U_]

md5 : active raid1 hdc5[0]
4883136 blocks [2/1] [U_]

md3 : active raid1 hdc3[0]
8984704 blocks [2/1] [U_]

md2 : active raid1 hdc2[0]
104492736 blocks [2/1] [U_]

md1 : active raid1 hdc1[0]
283648 blocks [2/1] [U_]

unused devices:
#

# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/md2 102851568 55250064 42376868 57% /
/dev/md1 274663 23422 237059 9% /boot
none 256356 0 256356 0% /dev/shm
/dev/md3 8843596 383680 8010684 5% /var
/dev/md5 4806464 476220 4086088 11% /www
#

# free
total used free shared buffers cached
Mem: 512716 226284 286432 0 15212 95004
-/+ buffers/cache: 116068 396648
Swap: 1416120 0 1416120
#

■13. hdaをRAIDに加えるべくfdiskする

 hdcと同じ容量で確保…。しかし後でswapパーティションが若干小さいことが分かり、raidhotaddできない状況に。う~む。

■14. raidtabファイルの「failed-disk」を「raid-disk」に変更

# vi /etc/raidtab
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc1
raid-disk 0
device /dev/hda1
raid-disk 1
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc2
raid-disk 0
device /dev/hda2
raid-disk 1
raiddev /dev/md3
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc3
raid-disk 0
device /dev/hda3
raid-disk 1
raiddev /dev/md5
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc5
raid-disk 0
device /dev/hda5
raid-disk 1
raiddev /dev/md6
raid-level 1
nr-raid-disks 2
chunk-size 64k
persistent-superblock 1
nr-spare-disks 0
device /dev/hdc6
raid-disk 0
device /dev/hda6
raid-disk 1

■15. hdaをRAIDデバイスに追加

※ fdisk後はフォーマットの必要なく、次のようにraidhotaddすればシンクが始まる
# raidhotadd /dev/md1 /dev/hda1
# raidhotadd /dev/md2 /dev/hda2
# raidhotadd /dev/md3 /dev/hda3
# raidhotadd /dev/md4 /dev/hda4
# raidhotadd /dev/md5 /dev/hda5
# raidhotadd /dev/md6 /dev/hda6

カーネルメッセージには…、
-----
$ dmesg

.............

RAID1 conf printout:
--- wd:2 rd:2 nd:3
disk 0, s:0, o:1, n:0 rd:0 us:1 dev:hdc2
disk 1, s:0, o:1, n:1 rd:1 us:1 dev:hda2
disk 2, s:0, o:0, n:2 rd:2 us:0 dev:[dev 00:00]
disk 3, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 4, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 5, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 6, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 7, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 8, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 9, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 10, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 11, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 12, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 13, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 14, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 15, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 16, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 17, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 18, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 19, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 20, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 21, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 22, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 23, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 24, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 25, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
disk 26, s:0, o:0, n:0 rd:0 us:0 dev:[dev 00:00]
md: updating md2 RAID superblock on device
md: hda2 [events: 00000034]<6>(write) hda2's sb offset: 104502720
md: syncing RAID array md6
md: minimum _guaranteed_ reconstruction speed: 100 KB/sec/disc.
md: using maximum available idle IO bandwith (but not more than 10000 KB/sec) for reconstruction.
md: using 124k window, over a total of 1163136 blocks.
md: hdc2 [events: 00000034]<6>(write) hdc2's sb offset: 104492736
md: recovery thread finished ...
-----
…、などと表示されていた。

■16. Partedでhdc6パーティションをリサイズ

 スワップがRAIDできていないので対処。稼働中にもかかわらず、使われていないことを確認して
強制リサイズ(汗 ほんとは危険です。

# parted
prinGNU Parted 1.6.3
...............

(parted) print
/dev/hdcの Disk geometry: 0.000-117246.937 メガバイト
ディスクラベルの種類: msdos
マイナー 開始 終了 種類 ファイルシステム フラグ
1 0.031 277.101 primary ext3 boot, raid
2 277.102 102320.859 primary ext3 raid
3 102320.859 111095.085 primary ext3 raid
4 111095.086 117246.937 extended lba
5 111095.117 115863.890 logical ext3 raid
6 115863.921 117246.937 logical linux-swap raid
(parted) resize 6
開始? [115863.9214]?
終了? [117246.9370]? 117000.0000

(parted) quit

 しかし…、パーティションはブっ壊れるので、再起動後、スワップフォーマットmkswap /dev/hdc6した。

■17. 正常に動作しているか確認

# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md6 : active raid1 hda6[1] hdc6[0]
1163136 blocks [2/2] [UU]
resync=DELAYED
md5 : active raid1 hda5[1] hdc5[0]
4883136 blocks [2/2] [UU]

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

md2 : active raid1 hda2[2] hdc2[0]
104492736 blocks [2/1] [U_]
[==========>..........] recovery = 53.6% (56014528/104492736) finish=79.1min speed=10208K/sec
md1 : active raid1 hda1[1] hdc1[0]
283648 blocks [2/2] [UU]

unused devices:

■18. 最後にhda、hdcにGRUBを書き込む

# grub-install --root-directory=/ /dev/hda
/dev/md1 does not have any corresponding BIOS drive.
※ 標準設定では、grub-installがだめ…。そこで以下のように。
失敗すると、パーティションがアボーンに片足突っ込むので慎重に。

# grub
Probing devices to guess BIOS drives. This may take a long time.

grub> device (hd0) /dev/hda
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> install /grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,0)/grub/menu.lst

grub> device (hd0) /dev/hdc
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> install /grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,0)/grub/menu.lst
grub> quit

■19. おまけ(バックアップ)

物理的にhdcを差し替え、予備用にベアドライブを保存しておくべくバックアップの方法。

hdcのRAIDデバイスを無効化し、

# raidsetfaulty /dev/md1 /dev/hdc1
# raidsetfaulty /dev/md2 /dev/hdc2
# raidsetfaulty /dev/md3 /dev/hdc3
# raidsetfaulty /dev/md4 /dev/hdc4
# raidsetfaulty /dev/md5 /dev/hdc5
# raidsetfaulty /dev/md6 /dev/hdc6

外す。

# raidhotremove /dev/md1 /dev/hdc1
# raidhotremove /dev/md2 /dev/hdc2
# raidhotremove /dev/md3 /dev/hdc3
# raidhotremove /dev/md4 /dev/hdc4
# raidhotremove /dev/md5 /dev/hdc5
# raidhotremove /dev/md6 /dev/hdc6

シャットダウンして物理的にhdcを換装。後は、「13.」以降と同じくfdiskしてraidhotadd。

# raidhotadd /dev/md1 /dev/hdc1
# raidhotadd /dev/md2 /dev/hdc2
# raidhotadd /dev/md3 /dev/hdc3
# raidhotadd /dev/md4 /dev/hdc4
# raidhotadd /dev/md5 /dev/hdc5
# raidhotadd /dev/md6 /dev/hdc6

もちろんhda換装でも同じ。上記のhdcをhdaに置き換えるだけ。


■20. 参考ページURL(雑誌)

・ UNIX Magazine 2003年6月号
・ http://www.linux.or.jp/JF/JFdocs/The-Software-RAID-HOWTO.html
・ http://www.heart-pot.co.jp/s-raid.html
・ http://www.geocities.co.jp/SiliconValley-Bay/3897/grub/grub-6.html
・ http://nobumasa-web.hp.infoseek.co.jp/multi_boot/grub_detail.html

投稿日時 : 05:09 | コメント (1) | トラックバック(3)