mdadmでソフトRAIDを構築してみる(RAID 5編) [Linux(LVM/RAID/Storage)]
というわけで、RAID 5のボリュームを作成して、いろいろとアレなことをしてみよう。(笑)
そんな訳だから、アレなことがお気軽に出来るよう、Virtual PCでCentOS5.2な環境を構築。実物のディスクを用意するのも面倒というかもったいないので…
およそ10GBの領域を10個作成してみた。(笑)hda5~hda14までが、そのテスト用の領域ということで。
まず、ソフトRAIDを構築するにあたって必要なパッケージがインストールされているかどうか確認する。
ちなみに、LinuxでソフトRAIDする場合は、「mdadm」というコマンドを使用することになる。このコマンドで様々なオペレーションが出来るのだ。
とりあえず、mdadmコマンドがあるかな?チェックしてみると…
なんと。今時のCentOSだと標準でインストールされてくるくさい。
ちなみに、もし入っていない場合はパッケージをチェックしてみよう。
こんなパッケージが入っているはずなんだけども、入っていない場合はyumでさくっとインストールする。
と、いうことなので、インストールする際は
とかで。なお、VineLinuxなお友達は…
ということなので、
ということになる。
それでは、実際に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]
こんな風に記述することになる。
コマンドが正常に受け付けられれば、このように「/dev/md0」がスタートしたことが表示される。
ちなみに、RAID 5等の場合は、「アレイのビルド」が行われる。(これが結構時間が掛かる)進行状態は、「/proc/mdstat」を見れば一目瞭然である。
「recovery」の項目がリビルドの進捗状態を示している。この環境の場合、あと60分はかかる(「finish」の項目を参照)ことが判る。
なお、リビルドが終わっている状態のサーバであれば、以下のような表示になっている(はず)。
(違うサーバの表示なのでデバイス名とかサイズとかが違っている点については容赦してもらいたい)
RAIDデバイスが開始したら、さくっとファイルシステムを作成してマウント可能である。
なお、リビルド中はCPUの負荷が高めになるので、その辺はソフトRAIDの宿命だと割り切ってもらいたい。(笑)
さて。上記のdfコマンドの結果を見てもらえば判るように、約10GBの領域を4個使ってRAID5を構成しているが、実際に使用可能なサイズは約30GBになっている。RAID 5であるために、n-1本のディスクが使用できるということが理解できると思う。
RAID の構築が出来たら、いろいろとアレなことをしてみようと思うのだが、まだあと57分くらいかかるらしいので、続きは後ほど。(笑)
なお、RAID 5のリビルドが終了するまでの間にディスクが故障した場合はデータは救済されないので注意が必要である。心配性な人は、/proc/mdstatを見てリビルドが完了している(=通常の運用状態にある)ことを確認してからこのボリュームを使用するようにしよう。
そんな訳だから、アレなことがお気軽に出来るよう、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を見てリビルドが完了している(=通常の運用状態にある)ことを確認してからこのボリュームを使用するようにしよう。
2008-11-05 16:05
nice!(0)
コメント(1)
トラックバック(0)
LVMとは何か全くわからなかったのですが
とてもよくわかりました。
これから自分で色々と試してみたいと思います。
非常に詳細でわかりやすい情報どうもありがとうございます。
by kami (2011-01-11 05:20)