玄箱X4でRAID② 2009年5月27日(水)
はじめに
前回は玄箱X4でRAIDの準備としてHDDを2台追加しました。今回はLinuxの設定を行い、実際にRAIDを構築してみたいと思います。今回はRAIDを構築するために「mdadm」を使用します。
カーネルの確認
はじめにカーネルがRAIDに対応しているかを確認します。「cat /proc/mdstat」を実行して確認します。以下のように出力されていればカーネルはRAIDに対応済みです。
===============================>
KUROBOX-TERA:~#
KUROBOX-TERA:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4]
unused devices: <none>
KUROBOX-TERA:~#
KUROBOX-TERA:~#
<===============================
RAIDパーティションの作成
前回追加したHDDが「/dev/sdb」と「/dev/sdc」として認識されています。HDDがどこへ割り当てられているかわからないときは玄箱X4のブートログ、または「dmesg」コマンドで確認することができます。以下に ブートログから抜粋したログを示します。
===============================>
sd 1:0:0:0: [sdb] 488397168 512-byte hardware sectors (250059 MB)
sdb:
sd 1:0:0:0: [sdb] Attached SCSI disk
sd 2:0:0:0: [sdc] 488397168 512-byte hardware sectors (250059 MB)
sdc:
sd 2:0:0:0: [sdc] Attached SCSI disk
<===============================
では、「/dev/sdb」のパーティションから作成します。
「fdisk /dev/sdb」を実行して、最初に”p”コマンドで現在の設定を確認します。
何もなければ新しいパーティションを作ります。 もし既になんらかのパーティションがある場合は”d”コマンドでパーティションを消去します。 この時、保存してあるデータ等は消えてしまいますので必ずバックアップを取ってから以下の作業に移ってください。ディスクからパーティションを全て消したら、”n”コマンドで新しいパーティションの作成に入ります。パーティションの種別を問われるので、”p”を入力してプライマリパーティションを選択します。
次はパーティションに割り当てる容量を設定しますが、初期値はディスクの最大値を使うようになっていますので変更する必要がなければそのままEnterを二度押して次に進んでください。RAIDではパーティションサイズを合わせる必要があるので、fdiskで設定したサイズを覚えておいてください。RAIDに使うディスクが2台ともまったく同じものであれば、今回の例のようにディスク内の全領域を使う場合には気にする必要はありません。その後に”t”コマンドでパーティションの種別を変更します。パーティション”1″を選択して”fd”と入力してLinux raidパーティションとします。 最後に”w”コマンドを発行して設定をHDDに同期させます。パーティションの作成が終了したらfdiskの設定が終了し、通常のコマンド受付画面になります。
「fdisk -l /dev/sdb」を実行し、パーティション作成の結果が期待通りになっていることを確認してください。また、/dev/sdc についても、/dev/sdbと同じ手順、同じサイズでパーティションを作成します。以下に/dev/sdbへパーティションを作成した際のログを示します。
===============================>
KUROBOX-TERA:~#
KUROBOX-TERA:~# fdisk /dev/sdb
The number of cylinders for this disk is set to 30401.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×52c00982
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-30401, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401):
Using default value 30401
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×52c00982
Device Boot Start End Blocks Id System
/dev/sdb1 1 30401 244196001 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
sd 1:0:0:0: [sdb] 488397168 512-byte hardware sectors (250059 MB)
sd 1:0:0:0: [sdb] Write Protect is off
sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA
sdb: sdb1
sd 1:0:0:0: [sdb] 488397168 512-byte hardware sectors (250059 MB)
sd 1:0:0:0: [sdb] Write Protect is off
sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA
sdb: sdb1
Syncing disks.
KUROBOX-TERA:~#
KUROBOX-TERA:~#
KUROBOX-TERA:~# fdisk -l /dev/sdb
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×52c00982
Device Boot Start End Blocks Id System
/dev/sdb1 1 30401 244196001 fd Linux raid autodetect
KUROBOX-TERA:~#
KUROBOX-TERA:~#
<===============================
片方のHDDだけで縮退運転状態を作る
今回は2台同時にRAIDへ組み込むのではなく、片方のHDDだけ先にRAIDへ設定して縮退運転状態を作り、構築後にもう1台をRAID1へ組み込みます。
まずはノードがあることを確認します。
「ls -lah /dev/md0」を実行し、メジャー「9」、マイナー「0」のブロックデバイスが「640」権限で存在すること、所有者とグループが「root.disk」であることを確認し、もし違っていれば変更しておきます。
今回は660だった権限を640へ変更しましたので、その際のログを以下に示します。
===============================>
KUROBOX-TERA:~#
KUROBOX-TERA:~# ls -lah /dev/ | grep md
drwxr-xr-x 2 root root 40 May 6 00:24 md
brw-rw—- 1 root disk 9, 0 Jan 1 1970 md0
KUROBOX-TERA:~# chmod 640 /dev/md0
KUROBOX-TERA:~# ls -lah /dev | grep md
drwxr-xr-x 2 root root 40 May 6 00:24 md
brw-r—– 1 root disk 9, 0 Jan 1 1970 md0
KUROBOX-TERA:~#
<===============================
次に、以下の手順でRAIDデバイスを片方だけ設定(RAID1の縮退運転状態)します。
- 「mdadm –create /dev/md0 –level=1 –raid-devices=2 missing /dev/sdb1」を実行する。
- 「mdadm –detail –scan | grep md0 >> /etc/mdadm/mdadm.conf」を実行し、設定をconfファイルに追加する。
- auto設定だけを追記するため、エディタで「/etc/mdadm/mdadm.conf」を編集する。
- 編集前) ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90 UUID=4259eccc:5f8f2a58:1c57d85f:2a0b307d
- 編集後) ARRAY /dev/md0 auto=yes level=raid1 num-devices=2 metadata=00.90 UUID=4259eccc:5f8f2a58:1c57d85f:2a0b307d
RAIDへHDDを追加
「mdadm –add /dev/md0 /dev/sdc1」を実行して、先ほど縮退運転させたRAIDに「/dev/sdc」を追加します。このコマンドを実行すると、「/etc/mdadm/mdadm.conf」にRAIDの再構成が自動的に始まります。
===============================>
KUROBOX-TERA:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdc1[2] sdb1[1]
244195904 blocks [2/1] [_U]
[>………………..] recovery = 0.3% (776576/244195904) finish=41.7min speed=97072K/sec
unused devices: <none>
KUROBOX-TERA:~#
<===============================
RAID再構成の進捗度合いは「cat /proc/mdstat 」を実行することで確認できます。プログレスバー(矢印)が右端まで到達すれば再構築は終了です。
===============================>
KUROBOX-TERA:~#
KUROBOX-TERA:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdc1[2] sdb1[1]
244195904 blocks [2/1] [_U]
[============>……..] recovery = 78.2% (190966464/244195904) finish=13.4min speed=65924K/sec
unused devices: <none>
KUROBOX-TERA:~#
<===============================
以上でRAID1の構築ができました。あとはフォーマットを行い、マウントポイントの設定やディレクトリを割り当てを行えば、通常のディスクと同じように使用することができます。
さいごに
今回はmdadmを使用し、RAID1を構築してみました。RAIDパーティションを単純に1つのパーティションで作成しましたが、パーティションを複数にすることも可能ですので、ご自身の使用用途にあったパーティション構成を検討してみてください。







