1.vinumでRAID構築
FreeBSDにはvinumという仕組みが用意されています。これは、ソフトウェアでRAIDを組んだりと……まぁ、いろいろできます。詳細はググってください(ヲ
今回は、このvinumでRAID5を構築する方法等を記述していきます。
何はともあれ、ディスクが必要です。ディスクをPCに取り付けましょう。ディスクを取り付けたら、きちんとブートできる事を確認してください。ブート時にブートメッセージでディスクを認識しているかを確認するのもお忘れ無く。ちなみに、現在RAID5が稼働している“ねこっちゃ”のブートメッセージはこんな感じです。
・
・
・
ad0: 117800MB <IC35L120AVVA07-0> [239340/16/63] at ata0-master UDMA100
ad3: DMA limited to UDMA33, non-ATA66 cable or device
ad3: 17206MB <IBM-DJNA-371800> [34960/16/63] at ata1-slave UDMA33
ad4: 117800MB <IC35L120AVV207-0> [239340/16/63] at ata2-master UDMA100
ad6: 117800MB <IC35L120AVV207-0> [239340/16/63] at ata3-master UDMA100
ad7: 117800MB <IC35L120AVV207-0> [239340/16/63] at ata3-slave UDMA100
ad8: 117800MB <IC35L120AVV207-0> [239340/16/63] at ata4-master UDMA100
ad10: 117800MB <IC35L120AVV207-0> [239340/16/63] at ata5-master UDMA100
・
・
・
今回は、ad4〜ad10の5本のディスクを使ってRAIDボリュームを構築します。
あと、vinum.koをブート時にロードするようにする必要があります。“/etc/rc.conf”に『start_vinum="YES"』と書いて再起動しておきます。
ブートしたら、何も考えずに増設したディスクをフォーマットします。その後、disklabelコマンドを使用してディスクラベルを修正します。たとえば、ad4のdisklabelを修正するときは“disklabel -e /dev/ad4s1”と実行します。すると、デフォルトのエディタで次の画面が表示されます。
# /dev/ad4s1:
8 partitions:
# size
offset fstype [fsize bsize bps/cpg]
c: 241254657
0 unused 0
0 # "raw" part, don't edit
d: 241254657
0 4.4BSD
ここで黄色の部分を次のように修正し、上書き保存をしてエディタを終了します。
# /dev/ad4s1:
8 partitions:
# size offset fstype
[fsize bsize bps/cpg]
c: 241254657 0 unused 0 0 # "raw" part, don't edit
d: 241254657 0
vinum
この操作をvinumで使用するディスク全てに実行します。
次に、vinumの対話モードでディスクの作成を行います。プロンプトでvinumを実行すると“vinum ->”というプロンプトになるので、その状態で操作します。基本的には、createサブコマンドを使用して、設定をエディタで書いていくだけです。“vinum -> create”を実行するとデフォルトのエディタが開くので、次のように設定を書きます。
drive d1 device /dev/ad4s1d
drive d2 device /dev/ad6s1d
drive d3 device /dev/ad7s1d
drive d4 device /dev/ad8s1d
drive d5 device /dev/ad10s1d
ここで一端上書き保存をしてからエディタを終了し、“vinum -> list”を実行すると、次のような結果が帰ってくるはずです。
vinum -> list
5 drives:
D d1
State: up
/dev/ad4s1d A: 0/117796 MB (0%)
D
d2
State: up
/dev/ad6s1d A: 0/117796 MB (0%)
D
d3
State: up /dev/ad7s1d
A: 0/117796 MB (0%)
D
d4
State: up
/dev/ad8s1d A: 0/117796 MB (0%)
D
d5
State: up
/dev/ad10s1d A: 0/117796 MB (0%)
続いて、一気にRAID5の設定を書いていきます。先ほどと同じように、“vinum -> create”を実行します。そして、エディタで次のように記述します。
volume raid
plex org raid5 200k
subdisk drive d1 length 117796m
subdisk drive d2 length 117796m
subdisk drive d3 length 117796m
subdisk drive d4 length 117796m
subdisk drive d5 length 117796m
1行目の紫色の部分は、作成されるボリュームの名前です。この場合だと、“/dev/vinum/raid”という名前のデバイスノードが作成されます。
3行目以降の黄色の部分は、ディスク1台辺りのRAIDへ割り当てる容量の指定です。このとき、全てのドライブが同じ値で、“vinum
-> list”時に表示された容量以下の値を指定するようにしてください。
設定が終わったら、先ほどと同じように上書き保存を実行し、エディタを終了します。“vinum
-> list”を実行すると次のような結果が帰ってくるはずです。
vinum -> list
5 drives:
D d1
State: up
/dev/ad4s1d A: 0/117796 MB (0%)
D
d2
State: up /dev/ad6s1d
A: 0/117796 MB (0%)
D
d3
State: up /dev/ad7s1d
A: 0/117796 MB (0%)
D
d4
State: up /dev/ad8s1d
A: 0/117796 MB (0%)
D d5
State: up /dev/ad10s1d
A: 0/117796 MB (0%)
1 volumes:
V raid
State: down Plexes:
1 Size: 460 GB
1 plexes:
P raid.p0 R5 State: init
Subdisks: 5 Size:
460 GB
5 subdisks:
S raid.p0.s0 State: empty
D: d1 Size:
115 GB
S raid.p0.s1 State: empty
D: d2 Size:
115 GB
S raid.p0.s2 State: empty
D: d3 Size:
115 GB
S raid.p0.s3 State: empty
D: d4 Size:
115 GB
S raid.p0.s4 State: empty
D: d5 Size:
115 GB
なお、このままではまだ使えません。イニシャライズを実行してやる必要があります。イニシャライズを実行するには次のようにします。
vinum -> init -w raid.p0
こうする事により、ディスクがガリガリ動き、イニシャライズが実行されます。容量にもよりますが、数時間かかる事がありますので、気長に待ちましょう。なお、イニシャライズが終了するとvinumのプロンプトに戻るので“vinum -> list”で状態が次のようになっている事を確認します。
vinum -> list
5 drives:
D d1 State: up
/dev/ad4s1d A: 0/117796 MB (0%)
D
d2 State: up /dev/ad6s1d A: 0/117796 MB (0%)
D
d3 State: up /dev/ad7s1d A: 0/117796 MB (0%)
D
d4 State: up /dev/ad8s1d A: 0/117796 MB (0%)
D d5 State: up /dev/ad10s1d A: 0/117796 MB (0%)
1 volumes:
V raid State:
up Plexes: 1 Size: 460 GB
1 plexes:
P raid.p0 R5 State:
up Subdisks: 5 Size: 460 GB
5 subdisks:
S raid.p0.s0 State:
up D: d1 Size: 115 GB
S raid.p0.s1 State:
up D: d2 Size: 115 GB
S raid.p0.s2 State:
up D: d3 Size: 115 GB
S raid.p0.s3 State:
up D: d4 Size: 115 GB
S raid.p0.s4 State:
up D: d5 Size: 115 GB
確認できたら、“vinum -> quit"でvinumの対話設定を終了します。
最後に、作成されたボリュームをnewfsしてやります。rootでプロンプトで次のように実行します。
#newfs --v /dev/vinum/raid
しばらくするとファイルシステムの作成が終わるので、mountコマンドでマウントしてやります。なお、ここで作成されたボリュームは、見かけ上ufsなので、SoftUpdateフラグを立ててやる事も可能です。