追記
新たにPartedでHDD交換作業を行った記録「RAID1構成時のHDD交換方法(Parted版)」を公開しました。
環境
- CentOS 6.6
- 1TB HDD×2のRAID1
- (A側HDD)/dev/sda1、/dev/sda2、/dev/sda3
- (B側HDD)/dev/sdb1、/dev/sdb2、/dev/sdb3
- B側HDDが故障
1TB HDDかつMBRだったのでfdiskで作業していますが、GPTの場合には、partedやgdiskを使用します。
1.サーバーをシャットダウンして、故障したB側HDDを交換します。(もし、故障したHDDがマスター側だった場合には、スレーブ側HDDをマスター側に差替えて、新HDDをスレーブ側にしておきます)
2.新HDDのパーティションを旧HDDのパーティションと合わせます。
2-1.Webminを使用する場合
- Webminのメニューにある「ハードウェア – ローカルディスクのパーティション」を開きます。
- 旧HDDのパーティションを確認します。(画面例の場合、SATAデバイスA)
- 新HDDにパーティションを設定していきます。
2-2.コマンドラインを使用する場合
# 旧HDDのパーティションを確認します。(画面例の場合、SATAデバイスA)
[root@server ~]# fdisk -l /dev/sda
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 16 128488+ fd Linux raid 自動検出
/dev/sda2 17 277 2096482+ fd Linux raid 自動検出
/dev/sda3 278 60801 486159030 fd Linux raid 自動検出
# 新HDDにパーティションを設定していきます。
[root@server ~]# fdisk /dev/sdb
...
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
Selected partition 1
最初 シリンダ (1-121601, default 1): 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-121601, default 121601): 16
コマンド (m でヘルプ): t
領域番号 (1-4): 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): a
領域番号 (1-4): 1
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
Selected partition 2
最初 シリンダ (17-121601, default 17): 17
終点 シリンダ または +サイズ または +サイズM または +サイズK (17-121601, default 121601): 277
コマンド (m でヘルプ): t
領域番号 (1-4): 2
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
Selected partition 3
最初 シリンダ (278-121601, default 278): 278
終点 シリンダ または +サイズ または +サイズM または +サイズK (278-121601, default 121601): 60801
コマンド (m でヘルプ): t
領域番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 3 から fd (Linux raid 自動検出) に変更しました
# 書き込む前に確認します。
コマンド (m でヘルプ): p
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 * 1 16 128488+ fd Linux raid 自動検出
/dev/sdb2 17 277 2096482+ fd Linux raid 自動検出
/dev/sdb3 278 60801 486159030 fd Linux raid 自動検出
# 設定したパーティションをディスクに書き込みます。
コマンド (m でヘルプ): w
3.新HDDをRAIDに組み込みます。
3-1.Webminを使用する場合
- Webminのメニューにある「ハードウェア – Linux RAID」を開きます。
- Device nameをクリックして、「RAID デバイス」というページを開いて、「Add partition」で組み込んでいきます。
3-2.コマンドラインを使用する場合
# 新HDDをRAIDに組み込みます。
[root@server ~]# mdadm --manage /dev/md0 --add /dev/sdb1
[root@server ~]# mdadm --manage /dev/md1 --add /dev/sdb2
[root@server ~]# mdadm --manage /dev/md2 --add /dev/sdb3
# RAIDの状態を確認します。(同期中)
[root@server ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0] sda1[1]
128384 blocks [2/2] [UU]
md1 : active raid1 sdb2[0] sda2[1]
2096384 blocks [2/2] [UU]
md2 : active raid1 sdb3[0] sda3[1]
486158912 blocks [2/1] [U_]
[>....................] recovery = 1.5% (7292383/486158912) finish=510.7min speed=1249K/sec
# RAIDの状態を確認します。(同期完了)
[root@server ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0] sda1[1]
128384 blocks [2/2] [UU]
md1 : active raid1 sdb2[0] sda2[1]
2096384 blocks [2/2] [UU]
md2 : active raid1 sdb3[0] sda3[1]
486158912 blocks [2/2] [UU]
4.GRUBを新旧HDDにインストールします。
[root@server ~]# grub
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> quit
以上で終了。最後のGRUBインストールを忘れると、後にHDD故障が起きた際に非常に悲しいことになるので、忘れないようにしましょう。