1.vinumでRAID構築


FreeBSDにはvinumという仕組みが用意されています。これは、ソフトウェアでRAIDを組んだりと……まぁ、いろいろできます。詳細はググってください(ヲ

今回は、このvinumでRAID5を構築する方法等を記述していきます。



1.前準備

 何はともあれ、ディスクが必要です。ディスクを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"』と書いて再起動しておきます。

 

2.ディスクのフォーマットとディスクラベルの書き換え

 ブートしたら、何も考えずに増設したディスクをフォーマットします。その後、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で使用するディスク全てに実行します。

 

3.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の対話設定を終了します。

 

4.newfsしてmount

 最後に、作成されたボリュームをnewfsしてやります。rootでプロンプトで次のように実行します。

#newfs --v /dev/vinum/raid

 しばらくするとファイルシステムの作成が終わるので、mountコマンドでマウントしてやります。なお、ここで作成されたボリュームは、見かけ上ufsなので、SoftUpdateフラグを立ててやる事も可能です。


インバース亭トップページへ戻る