RAID1構成時のHDD交換方法

【追記 ‘17.01.31】
新たにPartedでHDD交換作業を行った記録RAID1構成時のHDD交換方法(Parted版)を公開しました。

RAID1で運用中のサーバーで片方のHDDが故障したので、その交換方法を記録しました。

環境

  • 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の場合には、partedgdiskを使用します。

1.サーバーをシャットダウンして、故障したB側HDDを交換します。(もし、故障したHDDがマスター側だった場合には、スレーブ側HDDをマスター側に差替えて、新HDDをスレーブ側にしておきます)

2.新HDDのパーティションを旧HDDのパーティションと合わせます。

2-1.Webminを使用する場合

  1. Webminのメニューにある「ハードウェア – ローカルディスクのパーティション」を開きます。
    Webmin パーティション画面
  2. 旧HDDのパーティションを確認します。(画面例の場合、SATAデバイスA)
    Webmin パーティション画面
  3. 新HDDにパーティションを設定していきます。
    Webmin パーティション画面Webmin パーティション画面

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を使用する場合

  1. Webminのメニューにある「ハードウェア – Linux RAID」を開きます。
    Webmin RAID画面
  2. Device nameをクリックして、「RAID デバイス」というページを開いて、「Add partition」で組み込んでいきます。
    Webmin RAID画面

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故障が起きた際に非常に悲しいことになるので、忘れないようにしましょう。

スポンサーリンク

ABOUT

IT系零細企業のWebプログラマーって肩書きの何でも屋。 最近は、もっぱらWeb系広告やWindows向けソフトウェア開発、サーバー運用・保守、更には営業事務的業務などがメインで、プログラムにはノータッチ状態。ゲームやアニメ・映画・海外ドラマの鑑賞、猫との戯れを癒やしとして、今日も通勤中。