So-net無料ブログ作成

mdadmでソフトRAIDを構築してみる(RAID 5編) [Linux(LVM/RAID/Storage)]

 というわけで、RAID 5のボリュームを作成して、いろいろとアレなことをしてみよう。(笑)
 そんな訳だから、アレなことがお気軽に出来るよう、Virtual PCでCentOS5.2な環境を構築。実物のディスクを用意するのも面倒というかもったいないので…

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

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

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        1318    10482412+  83  Linux
/dev/hda3            1319        1449     1052257+  82  Linux swap / Solaris
/dev/hda4            1450       16643   122045805    5  拡張領域
/dev/hda5            1450        2695    10008463+  83  Linux
/dev/hda6            2696        3941    10008463+  83  Linux
/dev/hda7            3942        5187    10008463+  83  Linux
/dev/hda8            5188        6433    10008463+  83  Linux
/dev/hda9            6434        7679    10008463+  83  Linux
/dev/hda10           7680        8925    10008463+  83  Linux
/dev/hda11           8926       10171    10008463+  83  Linux
/dev/hda12          10172       11417    10008463+  83  Linux
/dev/hda13          11418       12663    10008463+  83  Linux
/dev/hda14          12664       13909    10008463+  83  Linux


 およそ10GBの領域を10個作成してみた。(笑)hda5~hda14までが、そのテスト用の領域ということで。



 まず、ソフトRAIDを構築するにあたって必要なパッケージがインストールされているかどうか確認する。
 ちなみに、LinuxでソフトRAIDする場合は、「mdadm」というコマンドを使用することになる。このコマンドで様々なオペレーションが出来るのだ。
 とりあえず、mdadmコマンドがあるかな?チェックしてみると…

# mdadm --help
mdadm is used for building, managing, and monitoring
Linux md devices (aka RAID arrays)
Usage: mdadm --create device options...
            Create a new array from unused devices.
       mdadm --assemble device options...
            Assemble a previously created array.
       mdadm --build device options...
            Create or assemble an array without metadata.
       mdadm --manage device options...
            make changes to an existing array.
       mdadm --misc options... devices
            report on or modify various md related devices.
       mdadm --grow options device
            resize/reshape an active array
       mdadm --incremental device
            add a device to an array as appropriate
       mdadm --monitor options...
            Monitor one or more array for significant changes.
       mdadm device options...
            Shorthand for --manage.
Any parameter that does not start with '-' is treated as a device name
or, for --examine-bitmap, a file name.
The first such name is often the name of an md device.  Subsequent
names are often names of component devices.

 For detailed help on the above major modes use --help after the mode
 e.g.
         mdadm --assemble --help
 For general help on options use
         mdadm --help-options


 なんと。今時のCentOSだと標準でインストールされてくるくさい。
 ちなみに、もし入っていない場合はパッケージをチェックしてみよう。

# rpm -qa | fgrep mdadm
mdadm-2.6.4-1.el5


 こんなパッケージが入っているはずなんだけども、入っていない場合はyumでさくっとインストールする。

# yum search mdadm
base                      100% |=========================| 1.1 kB    00:00
updates                   100% |=========================|  951 B    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================| 1.1 kB    00:00
mdadm.i386 : mdadm は Linux md デバイスを制御します(ソフトウェア RAID アレイ)
mdadm.i386 : mdadm controls Linux md devices (software RAID arrays)


 と、いうことなので、インストールする際は

# yum install mdadm.i386


 とかで。なお、VineLinuxなお友達は…

# apt-cache search mdadm
mdadm - Linux の MD デバイス(ソフトウエアRAIDアレイ)用のユーティリティ


 ということなので、

# apt-get install mdadm


 ということになる。



 それでは、実際にRAID5のボリュームを作成してみる。使用するコマンドは「mdadm」しかない。これに機能毎に決められたオプションを指定してやることで、RAIDの構築を行ったり、設定を変更したり状態をチェックしたり…ということを行う。

 RAID 5ボリュームの作成を行う場合は…

 mdadm --create RAIDデバイス名 --level=5 --raid-devices=RAIDに参加するディスクの数 RAIDに参加するデバイス名…

 という具合にコマンドを記述する。
 それぞれの項目について補足する。

 「RAIDデバイス名」とは、複数のハードディスクを使って構成したRAIDのボリュームにアクセスする際に使用するデバイス名のことで、通常は「md*」(1個目のRAIDデバイスなら md0 になる)が割り当てられる。なので、通常は「/dev/md0」とかそんな風に指定することになる。

 「--level=」オプションに続けて記述している「5」という数値は、RAIDのレベルを意味している。RAID 0を構成したい場合はここを「0」、RAID 1なら「1」、RAID 6にしたいなら「6」という具合になる。今回はRAID 5を構築するので「5」を指定している。

 「RAIDに参加するディスクの数」とは、そのまま読んで字のごとく。RAIDを構成するハードディスクの数を記述する。4本のディスクでRAID 5を構成するならば、「4」と記述することになる。

 「RAIDに参加するデバイス名」には、ハードディスクのデバイス名を列挙する。4台のディスクでRAID 5を構築するとしたら、ここに4台分のハードディスクのデバイス名を並べることになる。

 というわけで、4台のハードディスク(hda5 hda6 hda7 hda8)でRAID 5を構築するとしたら…

 mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/hda[5678]

 こんな風に記述することになる。

# mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/hda[5678]
mdadm: array /dev/md0 started.


 コマンドが正常に受け付けられれば、このように「/dev/md0」がスタートしたことが表示される。

 ちなみに、RAID 5等の場合は、「アレイのビルド」が行われる。(これが結構時間が掛かる)進行状態は、「/proc/mdstat」を見れば一目瞭然である。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda8[4] hda7[2] hda6[1] hda5[0]
      30025152 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]
      [>....................]  recovery =  0.3% (35712/10008384) finish=60.3min speed=2747K/sec

unused devices: 


 「recovery」の項目がリビルドの進捗状態を示している。この環境の場合、あと60分はかかる(「finish」の項目を参照)ことが判る。

 なお、リビルドが終わっている状態のサーバであれば、以下のような表示になっている(はず)。

# cat /proc/mdstat
Personalities : [raid5] [raid4]
md0 : active raid5 sdf1[3] sde1[2] sdd1[1] sdb1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: 


 (違うサーバの表示なのでデバイス名とかサイズとかが違っている点については容赦してもらいたい)

 RAIDデバイスが開始したら、さくっとファイルシステムを作成してマウント可能である。

# mke2fs -j /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
3753600 inodes, 7506288 blocks
375314 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
230 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

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.
# mkdir /mnt/work
# mount /dev/md0 /mnt/work
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda2             9.7G  1.6G  7.6G  18% /
/dev/hda1              99M   11M   83M  12% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/md0               29G  173M   27G   1% /mnt/work


 なお、リビルド中はCPUの負荷が高めになるので、その辺はソフトRAIDの宿命だと割り切ってもらいたい。(笑)

 さて。上記のdfコマンドの結果を見てもらえば判るように、約10GBの領域を4個使ってRAID5を構成しているが、実際に使用可能なサイズは約30GBになっている。RAID 5であるために、n-1本のディスクが使用できるということが理解できると思う。

 RAID の構築が出来たら、いろいろとアレなことをしてみようと思うのだが、まだあと57分くらいかかるらしいので、続きは後ほど。(笑)



 なお、RAID 5のリビルドが終了するまでの間にディスクが故障した場合はデータは救済されないので注意が必要である。心配性な人は、/proc/mdstatを見てリビルドが完了している(=通常の運用状態にある)ことを確認してからこのボリュームを使用するようにしよう。

nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

kami

LVMとは何か全くわからなかったのですが
とてもよくわかりました。
これから自分で色々と試してみたいと思います。
非常に詳細でわかりやすい情報どうもありがとうございます。
by kami (2011-01-11 05:20) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

メッセージを送る