Skip to content

Instantly share code, notes, and snippets.

@kui
Created November 21, 2011 06:52
Show Gist options
  • Save kui/1381874 to your computer and use it in GitHub Desktop.
Save kui/1381874 to your computer and use it in GitHub Desktop.
RAID1 構築における構成図と手順書

RAID1 構築における構成図と手順書

環境

Windows をホスト OS とした仮想環境上に構築する。具体的な環境としては下記。

  • CentOS 5.7
  • 仮想 HDD 3台
  • うち 1 台、OS などシステムファイルをインストール
  • 残りの 2 台で RAID1 によるミラーリングを実現
  • /raid にミラーリング環境を実現
  • VMWare Workstation

構成図

以下のように、/raid 以下に RAID1 によるミラーリング環境を構築する。用いる仮想 HDD は何れも容量は 8GB である。

RAID1 実習における構成図

手順

1. 仮想 HDD を 2 台追加し起動

  • 「仮想マシン設定の編集」
  • →「追加(A)...」→「次へ(N) >」→「次へ(N) >」→「次へ(N) >」→「次へ(N) >」→「完了」×2
  • →「OK」→「この仮想マシンを起動」

2. パーティションの作成

RAID 1 を構成する, HDDを2台追加してRAID 1を構成するには を参考に進めてます。

  • /dev/sd{b,c} が存在することを確認
  • /dev/sd{b,c} に対して以下を行う
  • fdisk を実行
  • パーティションを1つ作成
  • フォーマットを「fd (Linux raid 自動検出)」に設定
# ls /dev/sd{b,c}
/dev/sdb  /dev/sdc
# fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 1044 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-1044, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-1044, default 1044):
Using default value 1044

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

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

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1044     8385898+  fd  Linux raid 自動検出

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

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

# fdisk /dev/sdc
(略
# ls /dev/sd{b,c}*
/dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1

3. RAID1環境を設定

/dev/sd{b,c} で RAID1 を構築し、仮想デバイス(?) /dev/md0 を作成する。

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sd{b,c}1
mdadm: array /dev/md0 started.
# vi /etc/mdadm.conf   # <= これなに?
# cat /etc/mdadm.conf 
DEVICE /dev/sd[a-z]*
ARRAY /dev/md0 level=raid1 devices=/dev/sdb1,/dev/sdc1

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      8385792 blocks [2/2] [UU]
      [============>........]  resync = 63.0% (5286208/8385792) finish=0.5min speed=87357K/sec

# --->8--- (しばし待つ) --->8---

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      8385792 blocks [2/2] [UU]

unused devices: <none>

4. フォーマット

今回は ext3 でフォーマットする。

# mkfs.ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096448 blocks
104822 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

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

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      8385792 blocks [2/2] [UU]

unused devices: <none>

5. マウント

/raid/dev/md0 をマウントする。

# mount /dev/md0 /raid
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      7.2G  2.4G  4.5G  35% /
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/md0              7.9G  147M  7.4G   2% /raid      # <= 新しく追加される!!

起動時にマウントされている必要があれば /etc/fstab に設定を追記

# cat >> /etc/fstab
/dev/md0                /raid                   ext3    defaults        0 0
#

おまけ: 確認とか

大き目のファイル作って確認

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      7.2G  2.4G  4.5G  35% /
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/md0              7.9G  147M  7.4G   2% /raid
# head -c 100m /dev/zero > /raid/foo
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      7.2G  2.4G  4.5G  35% /
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/md0              7.9G  247M  7.3G   4% /raid
# ls -hl /raid
合計 101M
-rw-r--r-- 1 root root 100M 11月 21 09:20 foo

おまけ:RAID から特定のデバイス(パーティション)を切り離す

/dev/sdc1 を故障させた例を示す

# mdadm --manage /dev/md0 --fail /dev/sdc1
# man mdadm
(略...
       -f, --fail
              mark listed devices as faulty.  As well as the name of a  device
              file,  the  word  detached  can  be  given.  This will cause any
              device that has been detached from the system to  be  marked  as
              failed.  It can then be removed.
(略...

おまけ:メール通知設定

RAID1 などに組み込んだデバイスがアクセスできなくなった際に、メール通知するような設定。

# echo 'MAILADDR root@localhost' >> /etc/mdadm.conf
# /etc/init.d/mdmonitor start
# mdadm --manage /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
      8385792 blocks [2/1] [U_]

unused devices: <none>
# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 [email protected]  Mon Nov 21 08:12  31/1096  "Fail event on /dev/md"
&
Message 1:
From [email protected]  Mon Nov 21 08:12:50 2011
Date: Mon, 21 Nov 2011 08:12:50 +0900
From: mdadm monitoring <[email protected]>
To: [email protected]
Subject: Fail event on /dev/md0:localhost.localdomain

This is an automatically generated mail message from mdadm
running on localhost.localdomain

A Fail event had been detected on md device /dev/md0.

It could be related to component device /dev/sdc1.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
      8385792 blocks [2/1] [U_]

unused devices: <none>
& q

おまけ:故障した際の対処

/dev/sdc1 がアクセスできなくなったときに、ハードウエアの換装、フォーマット、RAID1 に組み込む。

# ls -R /raid
/raid:
bar  baz  foo  hoge

/raid/hoge:
fuga

/raid/hoge/fuga:
piyo
# mdadm --manage /dev/md0 --fail /dev/sdc1 # 意図的に切り離す!!
mdadm: set /dev/sdc1 faulty in /dev/md0
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[2](F) sdb1[0]
      8385792 blocks [2/1] [U_]

unused devices: <none>
# mdadm --manage /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0]
      8385792 blocks [2/1] [U_]

unused devices: <none>
# ls -R /raid
/raid:
bar  baz  foo  hoge

/raid/hoge:
fuga

/raid/hoge/fuga:
piyo

# -- >8 -- 電源を切って、HDDを換装し、システムを起動 -- >8 --

# fdisk /div/sdc1
(略
# mdadm --manage /dev/md0 --add /dev/sdc1
mdadm: re-added /dev/sdc1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      8385792 blocks [2/2] [UU]

unused devices: <none>
# ls -R /raid
/raid:
bar  baz  foo  hoge

/raid/hoge:
fuga

/raid/hoge/fuga:
piyo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment