RAIDの学習のためにvm環境に構築したソフトウェアRAID10の設定方法メモ。
samba用途として構築してみる。
bootディスクとsambaでマウントするディスクは分ける事とする。
なのでHDD5台で構築。
vm 設定
ほとんどが標準状態だが若干の変更部分がある。
変更点は
- メインメモリーを1024MBに
- ストレージでのディスク追加
- ネットワークアダプターに「ホストオンリーアダプター」の追加
メインメモリーが標準の512MBだとCUIインストールになり、RAID設定やパーティションの設定がインストールが終わった後に変更しなくては行けなくなるので、正直面倒くさかったのでGUIインストールモードに変更になる1024MBで。
ストレージ項目のディスクではboot用のディスクとRAID10の最小必要個数のHDD4台を割り当てておく。
ネットワークアダプターはローカルのPCからSSH接続するため。
ちなみにcentOS6.3のminimalディスクでインストールを行う。
ネットワークインストールディスクだとURLを入力するのが面倒なので選択、代わりにインストール後にネットワークを立ち上げる必要があるが。そこは好みなので別途選択。
インストール
起動してインストールを行う。
ディスク選択まで流れで設定。
ディスク
ディスクの設定まで来たらカスタムレイアウトを選択
パーティション設定
sdaディスクをboot用にするのでパーティションを切る必要は無かったが適当に設定。
/bootディレクトリが500あれば良い
swapパーティションはメモリの2倍が目安
残り容量すべてを/ディレクトリに設定。
RAIDに設定するディスクは
RAIDパーティションを選択して「最大許容量まで使用」にチェックを付ける。
その後、RAIDデバイスを選択、タイプをRAID10にして/home/samba
にマウント設定
これでディスク設定は完了。次へを押してフォーマットを行い後は流れでポチポチすれば良い。
どうぶつの森でもやってましょう。
インストール完了
番外:ネットワークの設定
minimalインストールなのでインストールが終わってもネットワークが立ち上がっていません。
rootでログインして
$ ifup eth0
でeth0が立ち上がります。
ONBOOTをyesに変更しておけば次回から自動で立ち上がります。
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
[…]
ONBOOT="no"
⬇
ONBOOT="yes"
[…]
今回はホストオンリーアダプターを設定してあるのでeth1も立ち上げればssh接続が可能
RAID確認
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdd1[2] sde1[3] sdc1[1] sdb1[0]
16772096 blocks super 1.1 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
md0でRAID10が設定できている事がわかる。
mdadm --detail
でRAIDデバイスを閲覧
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.1
Creation Time : Wed Jan 23 12:30:49 2013
Raid Level : raid10
Array Size : 16772096 (16.00 GiB 17.17 GB)
Used Dev Size : 8386048 (8.00 GiB 8.59 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed Jan 23 13:20:19 2013
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f2a6b581:3ee58ef9:13ccf13b:5bbf7378
Events : 321
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
[root@localhost ~]# mount
[…]
/dev/md0 on /home/samba type ext4 (rw)
[…]
問題なさそう。
復旧手順
これだけだとあっけない、というか不安なのでHDDが壊れたときのっ復旧手順も試してみる。
HDDの割当を解除
確認用にファイル作成
[root@localhost samba]# pwd
/home/samba
[root@localhost samba]# ll
合計 20
-rw-r--r--. 1 root root 0 1月 23 13:43 2013 hi
drwxr-xr-x. 2 root root 4096 1月 23 13:43 2013 huge
drwx------. 2 root root 16384 1月 23 12:31 2013 lost+found
確認用ファイルを作成したら一旦パワーオフ、HDDの割当を解除(cent-raid3)してみる。そして新しく「cent-raid5」のHDDを割り当てる。
起動
確認
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sde1[3] sdb1[0] sdc1[1]
16772096 blocks super 1.1 512K chunks 2 near-copies [4/3] [UU_U]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
[4/3] [UU_U]
の表示で3台でRAIDしている事がわかる。
より詳しい内容
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.1
Creation Time : Wed Jan 23 12:30:49 2013
Raid Level : raid10
Array Size : 16772096 (16.00 GiB 17.17 GB)
Used Dev Size : 8386048 (8.00 GiB 8.59 GB)
Raid Devices : 4
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed Jan 23 15:22:54 2013
State : active, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f2a6b581:3ee58ef9:13ccf13b:5bbf7378
Events : 329
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 0 0 2 removed
3 8 65 3 active sync /dev/sde1
RaidDevice 2のディスクがなくなっている。 /dev/sdd1
ディスクが1つなくなっているのにファイルは無事なのが確認できる
[root@localhost ~]# ll /home/samba/
合計 20
-rw-r--r--. 1 root root 0 1月 23 13:43 2013 hi
drwxr-xr-x. 2 root root 4096 1月 23 13:43 2013 huge
drwx------. 2 root root 16384 1月 23 12:31 2013 lost+found
RAIDデバイスに新しいディスクを追加
新しく追加した「cent-raid5」ディスクをRAIDデバイスに追加してやる
まずはRAID用にフォーマットを行う
$ fdisk /dev/sdd
# パーティションの作成(今回は全領域を使用)
n (新規パーティション作成) → p (基本パーティション)
→ 1 → 空エンター (開始シリンダ) → 空エンター (終了シリンダ)
# フォーマットタイプ指定
t (パーティションID変更) → fd (Software RAID用ID)
w (ディスクに書き込んでfdiskを終了)
追加
$ mdadm -a /dev/md0 /dev/sdd
確認
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdd[4] sde1[3] sdb1[0] sdc1[1]
16772096 blocks super 1.1 512K chunks 2 near-copies [4/3] [UU_U]
[>....................] recovery = 4.8% (409984/8386048) finish=6.4min speed=20499K/sec
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
現在同期中のようだ。
watch
コマンドで同期されるのをだら見できる
$ watch -d "cat /proc/mdstat "
同期が完了すれば作業は完了。
これでHDDが壊れても復旧作業ができるであろう。