非RAIDシステムのRAID化

最終更新日: 2017.02.18

<<トップページ <<新着情報 <<リンク集 <<サイト内検索 <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

サーバーのハードディスク故障によるデータ喪失を防ぐため、RAID1によるディスクの二重化を行う。
ここでは、既に非RAID状態で運用中のシステムにハードディスクを増設してRAID化する。
なお、パーティション状態は一つのハードディスクにOSインストール時のデフォルト設定状態を前提とする。

【RAID化前の状態】
/boot・・・/dev/sda1
/・・・/dev/sda2で構成したボリュームグループVolGroup00の論理ボリューム LogVol00
swap・・・/dev/sda2で構成したボリュームグループVolGroup00の 論理ボリュームLogVol01

【RAID化後の状態】
/boot・・・/dev/md0
/・・・/dev/md1で構成したボリュームグループVolGroup00の 論理ボリュームLogVol00
swap・・・/dev/md1で構成したボリュームグループVolGroup00の 論理ボリュームLogVol01
※/dev/mdは既存ハードディスク/dev/sdaと新ハードディスク/dev/sdbで構成したRAIDデバイス


■新ハードディスク初期化

[root@centos ~]# fdisk -l ← ハードディスクパーティション確認

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         522     4088542+  8e  Linux LVM

Disk /dev/sdb: 4294 MB, 4294967296 bytes ← 追加ハードディスクを/dev/sdbとして認識
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

[root@centos ~]# fdisk /dev/sdb ← 新ハードディスクパーティション設定
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n ← n(新規パーティション作成)応答
Command action
   e   extended
   p   primary partition (1-4)
p ← p(基本パーティション)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答
First cylinder (1-522, default 1): 1 ← 1(/dev/sda1のパーティション割当て開始位置)応答
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): 13 ← 13(/dev/sda1のパーティション割当て終了位置)応答

Command (m for help): n ← n(新規パーティション作成)応答
Command action
   e   extended
   p   primary partition (1-4)
p ← p(基本パーティション)応答
Partition number (1-4): 2 ← 2(パーティション番号)応答
First cylinder (14-522, default 14): 14 ← 14(/dev/sda2のパーティション割当て開始位置)応答
Last cylinder or +size or +sizeM or +sizeK (14-522, default 522): 522 ← 522(/dev/sda2のパーティション割当て終了位置)応答

Command (m for help): t ← t(システムID設定)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答
Hex code (type L to list codes): fd ← fd(RAIDシステムID)応答
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t ← t(システムID設定)応答
Partition number (1-4): 2 ← 2(パーティション番号)応答
Hex code (type L to list codes): fd ← fd(RAIDシステムID)応答
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): a ← a(ブート可能フラグ設定)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答

Command (m for help): p ← p(パーティション表示)応答

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          13      104391   fd  Linux raid autodetect
/dev/sdb2              14         522     4088542+  fd  Linux raid autodetect
Boot、Start、Endが既存ハードディスク/dev/sdaと同じ設定になっていることを確認

Command (m for help): w ← w(パーティションをディスクへ書き込み)応答
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

■新ハードディスクでRAIDデバイス作成

[root@centos ~]# mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb1
 ← /dev/sdb1でRAID1レベルのRAIDデバイス(/dev/md0)を作成
mdadm: array /dev/md0 started.

[root@centos ~]# mdadm --create /dev/md1 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb2
 ← /dev/sdb2でRAID1レベルのRAIDデバイス(/dev/md1)を作成
mdadm: array /dev/md1 started.

[root@centos ~]# echo 'DEVICE /dev/hd[a-z]* /dev/sd[a-z]*' > /etc/mdadm.conf ← RAID設定ファイル作成(1/3)

[root@centos ~]# mdadm --detail --scan >> /etc/mdadm.conf ← RAID設定ファイル作成(2/3)

[root@centos ~]# echo MAILADDR root >> /etc/mdadm.conf ← RAID設定ファイル作成(3/3)

[root@centos ~]# cat /etc/mdadm.conf ← RAID設定ファイル確認
DEVICE /dev/hd[a-z]* /dev/sd[a-z]*
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8822f2a7:9bf2a98a:b6dc96e9:bbc95816
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=6465453d:77c15499:86530cb3:b2ee8976
MAILADDR root

■/bootのRAID化

[root@centos ~]# mkfs -t ext3 /dev/md0 ← RAIDデバイス(/dev/md0)へファイルシステム作成
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
26104 inodes, 104320 blocks
5216 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@centos ~]# mount /dev/md0 /mnt/ ← RAIDデバイス(/dev/md0)を/mntへマウント

[root@centos ~]# rsync -avz -e ssh --delete /boot/ /mnt/ ← /bootを/mntへコピー(ミラーリング)

[root@centos ~]# umount /mnt/ ← /mntアンマウント

[root@centos ~]# umount /boot/ ← /bootアンマウント

[root@centos ~]# mount /dev/md0 /boot/ ← RAIDデバイス(/dev/md0)を/bootへマウント

[root@centos ~]# df ← ディスク状態表示
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       3428080   1227404   2023732  38% /
tmpfs                   127852         0    127852   0% /dev/shm
/dev/md0                101018     10960     84842  12% /boot ← RAIDデバイス(/dev/md0)が/bootにマウントされていることを確認

[root@centos ~]# vi /etc/fstab ← /etc/fstab編集
LABEL=/boot             /boot                   ext3    defaults        1 2
↓
/dev/md0                /boot                   ext3    defaults        1 2
 ← システム起動時にRAIDデバイス(/dev/md0)を/bootとしてマウントする

■ボリュームグループのRAID化

[root@centos ~]# pvcreate /dev/md1 ← RAIDデバイス(/dev/md1)を物理ボリュームとして登録
  Physical volume "/dev/md1" successfully created

[root@centos ~]# vgextend VolGroup00 /dev/md1 ← 物理ボリューム(/dev/md1)をボリュームグループへ登録
  Volume group "VolGroup00" successfully extended

[root@centos ~]# pvmove /dev/sda2 /dev/md1 ← /dev/sda2のデータを/dev/md1へ移動
※ディスク容量により時間がかかる(4GBで約10分)

[root@centos ~]# vgreduce VolGroup00 /dev/sda2 ← /dev/sda2をボリュームグループから削除
  Removed "/dev/sda2" from volume group "VolGroup00"

■システム再起動

[root@centos ~]# mkinitrd -f /boot/initrd-`uname -r`.img `uname -r` ← イニシャルRAMディスクイメージ再作成

[root@centos ~]# reboot ← システム再起動
  1. ブートメニュー表示
    適当なキーを押下



  2. ブートコマンド編集
    eキー押下



  3. rootコマンド編集
    eキー押下



  4. 新ハードディスクをrootに変更
    hd0をhd1に変更してENTER



  5. ブート
    bキー押下




■既存ハードディスク初期化

[root@centos ~]# pvremove /dev/sda2 ← /dev/sda2をボリュームグループから削除
  Labels on physical volume "/dev/sda2" successfully wiped

[root@centos ~]# fdisk -l /dev/sdb ← 新ハードディスクパーティション表示

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          13      104391   fd  Linux raid autodetect
/dev/sdb2              14         522     4088542+  fd  Linux raid autodetect

[root@centos ~]# fdisk /dev/sda ← 既存ハードディスクパーティション設定

Command (m for help): p ← p(パーティション表示)応答

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         522     4088542+  8e  Linux LVM

Command (m for help): d ← d(パーティション削除)応答
Partition number (1-4): 1 ← 1(削除パーティション番号)応答

Command (m for help): d ← d(パーティション削除)応答
Selected partition 2 ← ※最後のパーティション削除時は削除パーティション番号応答不要(自動選択される)

Command (m for help): p ← p(パーティション表示)応答

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
  パーティションがないことを確認

Command (m for help): n ← n(新規パーティション作成)応答
Command action
   e   extended
   p   primary partition (1-4)
p ← p(基本パーティション)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答
First cylinder (1-522, default 1): 1 ← 1(/dev/sdb1のパーティション割当て開始位置)応答
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): 13 ← 13(/dev/sdb1のパーティション割当て終了位置)応答

Command (m for help): n ← n(新規パーティション作成)応答
Command action
   e   extended
   p   primary partition (1-4)
p ← p(基本パーティション)応答
Partition number (1-4): 2 ← 2(パーティション番号)応答
First cylinder (14-522, default 14): 14 ← 14(/dev/sdb2のパーティション割当て開始位置)応答
Last cylinder or +size or +sizeM or +sizeK (14-522, default 522): 522 ← 522(/dev/sdb2のパーティション割当て終了位置)応答

Command (m for help): t ← t(システムID設定)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答
Hex code (type L to list codes): fd ← fd(RAIDシステムID)応答
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t ← t(システムID設定)応答
Partition number (1-4): 2 ← 2(パーティション番号)応答
Hex code (type L to list codes): fd ← fd(RAIDシステムID)応答
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): a ← a(ブート可能フラグ設定)応答
Partition number (1-4): 1 ← 1(パーティション番号)応答

Command (m for help): p ← p(パーティション表示)応答

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   fd  Linux raid autodetect
/dev/sda2              14         522     4088542+  fd  Linux raid autodetect
Boot、Start、End、Id、Systemが新ハードディスク/dev/sdbと同じ設定になっていることを確認

Command (m for help): w ← w(パーティションをディスクへ書き込み)応答
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

■既存ハードディスクをRAIDデバイスへ組み込む

[root@centos ~]# mdadm /dev/md0 --add /dev/sda1 ← /dev/sda1をRAIDデバイス(/dev/md0)へ組み込む
mdadm: added /dev/sda1

[root@centos ~]# mdadm /dev/md1 --add /dev/sda2 ← /dev/sda2をRAIDデバイス(/dev/md1)へ組み込む
mdadm: added /dev/sda2

[root@centos ~]# watch cat /proc/mdstat ← RAIDデバイス同期状態確認
RAIDデバイス同期中状態
Personalities : [raid1] 
md0 : active raid1 sda1[0] sdb1[1]
      104320 blocks [2/2] [UU]
      
md1 : active raid1 sda2[2] sdb2[1]
      4088448 blocks [2/1] [_U]
      [=>...................]  recovery =  5.6% (230272/4088448) finish=3.9min speed=16448K/sec
      
unused devices: 
・
・
・
RAIDデバイス同期完了状態
Personalities : [raid1] 
md0 : active raid1 sda1[0] sdb1[1]
      104320 blocks [2/2] [UU]
      
md1 : active raid1 sda2[0] sdb2[1]
      4088448 blocks [2/2] [UU]
      
unused devices: 

CTRL+Cキー押下で終了

■GRUB(ブートローダー)インストール

[root@centos ~]# grub ← 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) ← 新ハードディスクをrootにする
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1) ← 新ハードディスクへGRUBインストール
 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) ← 旧ハードディスクをrootにする
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd0) ← 旧ハードディスクへGRUBインストール
 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シェルモード終了

[root@centos ~]# vi /etc/sysconfig/selinux ← SELinux設定ファイル編集
SELINUX=enforcing
↓
SELINUX=disabled ← SELinux無効化
※kernelアップデート後のサーバー再起動時にkernel panicになってサーバーが起動できなくなるため、SELinuxは無効化する

[root@centos ~]# reboot ← システム再起動



▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします