USBメモリでRAID on OpenBSD 4.3

きのうは仕事でいっぱいいっぱいだったので、ここの更新はおやすみ。

だいぶ前に買ったeBox-2300でOpenBSDを使うにあたって、2GBのCFだけだとPortsとか使うのにちょっと厳しいかも。かといって、このゼロスピンドルPCにHDDつなぐのはなんだかイヤ。ということで、なぜかうちにたくさんころがってる1GBのUSBメモリをつかってRAIDを作ってみたり。
FAQによるとRAIDframeというのを使うように書いてあるんだけど、GENERICカーネルにはドライバが入ってなさげだったので、softraid(4)というのを使ってみる。RAIDframeだとRAID4やRAID5もできるみたいだけど、こっちはRAID0とRAID1だけ。別に信頼性高めたいわけじゃないので、ここはあえてRAID0で。4口のUSBハブつかうんで、4本でRAID0。
まず、USBハブにUSBメモリをさす。さしたときに、/var/log/messagesにそのUSBメモリのデバイス名(sd0とかsd1とか)が出るので、それをメモっておく。今回は、RAIDで使う4本のUSBメモリのほかに1本だけ別のUSBメモリをsd0としてつかってたので、RAID用に使う4本はsd1〜sd4。
softraid(4)にあるように、各USBメモリを初期化。

# fdisk -iy sd1
# fdisk -iy sd2
# fdisk -iy sd3
# fdisk -iy sd4
# printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E sd1
# printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E sd2
# printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E sd3
# printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E sd4

bioctl(8)RAIDを組む。さっき書いたように、sd1〜sd4を使ってRAID0にする。

# bioctl -c 0 -l /dev/sd1a,/dev/sd2a,/dev/sd3a,/dev/sd4a softraid0

RAIDが構成されると、/var/log/messagesにそのデバイス名がでてくる。うちだとsd5だって。
デフォルトだと、/dev/sd5x のデバイスファイルがないみたい(これに気づくまで数時間)なので、デバイスファイルをつくる。

# cd /dev
# ./MAKEDEV sd5

あとはsd5をふつうのディスクみたいにフォーマットして、使いたいところにマウントする。

# fdisk -iy sd5
# printf "a\n\n\n\n4.2BSD\nw\nq\n\n" | disklabel -E sd5
# newfs /dev/rsd5a
# mount /dev/sd5a /mnt

ディスクアクセスすると、USBメモリのLEDが連続してついたり消えたりしてけっこうきれい。RAID0にすることでアクセスが早くなったかどうかは不明。