タグ別アーカイブ: dmraid

dmraidによるRAID5について

以前dmraidでraid5がうまく認識されていないけどまあいいやでスルーしたんだけども、何とかならないか調べてみた。
とりあえず、2chで色々とやってみた人がいたので、抜粋。

479 :473[sage]:2007/10/10(水) 10:54:47 ID:Zsa0oy3m
HDD4つということでNAS用途マシンを作りたいのが意図です。
HDD4つをLVMですべてひとつの同じパーティションにしてしまうと、
HDDがどれかひとつでも死んだ場合にパーティション全体がすべて
クラッシュしてしまうかなと思い、RAID5にしてみました。
Escaladeは使ったことがありますが、ハードウェアゆえ、逆に簡単に
Linuxでも利用できてしまうので初めてオンボRAIDをやってみたかったというのもあります。
(RAID BIOS上でアレイを作っておけば、Debian woodyで何もデバイスドライバを入れなくとも認識された)、
あとNASなのでネットワーク越しに使うため、それほどパフォーマンスは必要ないというのもあります。

LVMをやってみるまえに、ぐぐって dmraid というやつがあったので試してみました。
apt-get install でインストールし、dmraid -r すると

/dev/sda: nvidia, “nvidia_adidefhc”, raid5_ls, ok, 625142446 sectors, data@ 0

と raid5 とでてくるのですが、ディスクが4つあるから4行出てきてほしいのに
1行しかでてきません。だめもとで dmraid -ay すると
ERROR: device-mapper target type “raid45″ not in kernel
とでてきて、dmraid の作者の方のページにある raid45 を kernel パッチとしてあてる必要なようです。
ここまできて dmraid はあきらめました。

494 :473,479,486,489[sage]:2007/10/17(水) 03:39:16 ID:Z9lCf1KP
>>479 の続きです。
実用的かどうかは別として、いろいろ潰せる状態なのでもう少しdmraidでがんばってみました。

dmraid/raid45 の作者である http://people.redhat.com/~heinzm/ に行き、
raid45のページを見ると、kernel パッチの形として提供されているようなので、
www.kernel.org から 2.6.22.1 の kernel ソースを持ってきて、raid45 のパッチをあてて
kernel を再構築。そのあと >>479 のとおり dmraid -r すると、
>>479 のときは 1 行しか出なかったけど、4行出るようになった。
この状態で dmraid -ay すると、やはり
ERROR: device-mapper target type “raid45″ not in kernel
と出てくる。

ぐぐると↓のようなページが見つかり、
http://lists.alioth.debian.org/pipermail/utnubu-maintainers/2007-February/000534.html
どうやら raid45 パッチをあてても、dmraid ツールが raid456 という名前で見に行くようなので
見つからない、ということなんだと理解しました。

dmraid、libdevmapper は ubuntu の apt-get install でインストールしたが、
これらもソースからビルドしたらうまく行ったかも。でもめんどくさい

ここで「オンボRAIDでRAID 5」+「dmraid」はあきらめましたが、raid45 がだめなら、
RAID0 とか 1 とか 0+1 ならできるかも、ということでやってみました。

495 :473,479,486,489[sage]:2007/10/17(水) 03:40:41 ID:Z9lCf1KP
手順:
1.オンボRAID の BIOS で RAID0 を構成。
>>479 のとおりデータ領域用に用意した HDD は4つあるので4台の RAID0 をつくった。
2.マシンを再起動して Ubuntu を起動。
3.dmraid -r したらうまく認識されているっぽい

# dmraid -r
/dev/sda: nvidia, “nvidia_fceebfde”, stripe, ok, 625142446 sectors, data@ 0
/dev/sdb: nvidia, “nvidia_fceebfde”, stripe, ok, 625142446 sectors, data@ 0
/dev/sdc: nvidia, “nvidia_fceebfde”, stripe, ok, 625142446 sectors, data@ 0
/dev/sdd: nvidia, “nvidia_fceebfde”, stripe, ok, 625142446 sectors, data@ 0

4.dmraid -s してもうまく認識しているっぽい。なお dmraid -ay はする必要がなかった
(Ubuntu を起動したら、すでに /dev/mapper/ の下に nvidia_fceebfde というディレクトリができていた)
あとは mkfs して mount すれば使えるようになった。
# mkfs -t reiserfs /dev/mapper/nvidia_fceebfde
# mkdir /backup
# mount -t reiserfs /dev/mapper/nvidia_fceebfde /backup

ちなみにベンチマーク:

# hdparm -ft /dev/mapper/nvidia_fceebfde
/dev/mapper/nvidia_fceebfde:
Timing buffered disk reads: 726 MB in 3.00 seconds = 241.94 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

使っているマザー(>>473 で書いたとおり AN-M2HD)では、オンボRAID では RAID1 や 0+1 もできるので
それもやってみました。RAID0 のときと同様に、無事に使えました。

○RAID1
# dmraid -r
/dev/sda: nvidia, “nvidia_beadjbcg”, mirror, ok, 625142446 sectors, data@ 0
/dev/sdb: nvidia, “nvidia_beadjbcg”, mirror, ok, 625142446 sectors, data@ 0

# hdparm -ft /dev/mapper/nvidia_beadjbcg
/dev/mapper/nvidia_beadjbcg:
Timing buffered disk reads: 240 MB in 3.01 seconds = 79.66 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

496 :473,479,486,489[sage]:2007/10/17(水) 03:42:27 ID:Z9lCf1KP
○RAID0+1
# dmraid -r
/dev/sda: nvidia, “nvidia_fgcifccb-0″, stripe, ok, 625142446 sectors, data@ 0
/dev/sdb: nvidia, “nvidia_fgcifccb-0″, stripe, ok, 625142446 sectors, data@ 0
/dev/sdc: nvidia, “nvidia_fgcifccb-1″, stripe, ok, 625142446 sectors, data@ 0
/dev/sdd: nvidia, “nvidia_fgcifccb-1″, stripe, ok, 625142446 sectors, data@ 0

# hdparm -ft /dev/mapper/nvidia_fgcifccb
/dev/mapper/nvidia_fgcifccb:
Timing buffered disk reads: 446 MB in 3.00 seconds = 148.43 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

ちなみにこの HDD 単発のベンチ:
# hdparm -ft /dev/sda
/dev/sda:
Timing buffered disk reads: 214 MB in 3.02 seconds = 70.83 MB/sec

★★まとめ★★

Linux板のRAID総合スレをみても、md でRAIDを構成したほうがいいと思いますが、
とりあえず dmraid が対応してくれれば、LinuxでもオンボRAIDで構成したアレイが使えることがわかった。
なお RAID0 や RAID0+1では、hdparm で測ったベンチはなかなかいい値がでているが、
ランダムリードがわからんので実際のところはどうなんだろう

とりあえず自己満足は終わったので、これから md でやり直して本運用することにします。
長々とすみませんでした。

カーネルパッチあてるのはめんどくさい。
というかカーネルのメンテナンスが面倒くさくなる。
なのでやらない。
ってかなんかぐぐるとどうもうまくいかない系の話ばっかりでてくる。
ubuntuのカーネルソースにバグとして取り上げられてたりするし。

でまあ、そもそも、dmraidってRAID5サポートしてんの?っていう。
そこで、man dmraid。
そこでこんな記述が。

{-l|–list_formats}
List all available metadata format handlers with their names and
descriptions. Supported RAID levels are listed in parenthesis:

S: Span (concatination)
0: RAID0 (stripe)
1: RAID1 (mirror)
10: RAID10 (mirror on top of stripes)
01: RAID10 (stripe on top of mirrors)

えーと。

# dmraid -l
asr     : Adaptec HostRAID ASR (0,1,10)
ddf1    : SNIA DDF1 (0,1,4,5,linear)
hpt37x  : Highpoint HPT37X (S,0,1,10,01)
hpt45x  : Highpoint HPT45X (S,0,1,10)
isw     : Intel Software RAID (0,1)
jmicron : JMicron ATARAID (S,0,1)
lsi     : LSI Logic MegaRAID (0,1,10)
nvidia  : NVidia RAID (S,0,1,10,5)
pdc     : Promise FastTrack (S,0,1,10)
sil     : Silicon Image(tm) Medley(tm) (0,1,10)
via     : VIA Software RAID (S,0,1,10)
dos     : DOS partitions on SW RAIDs

あ、はい。
iswのRAID5サポートしてねーじゃん。
じゃ、そういうことで。

ich9rでRAID0およびRAID5を構築しているマシンにdebianをUSBメモリからインストールしてみる

前作ったUSBメモリのdebianインストーラ
ICH9RでRAID0およびRAID5で構築しているマシンにインストールを試みたところ、予想通りうまくいかない。
HDDが/dev/sdxで認識されており、RAIDとして認識されていない。
この状態でインストールするとRAIDのデータが激しくぶっ壊れて涙目になるわけで、とりあえず、i386じゃなくてamd64で使いたいんでそっちの準備をする。
前回はLinuxでUSBブートディスクを作成したが、今回はWindowsで作ってみようと思う。

ブートイメージの流し込みはlinux だと

zcat boot.img.gz > /dev/sdd

で幸せになれたが、zcatがwindowsではないので、何か無いかと思ったらdd for windowsというものがあった。
ということでまず入れてみる。
で、amd64用のboot.img.gzをとってくる。
んで、とってきたイメージはgzip圧縮されているのでとりあえず適当な解凍ツールで解凍。
うまれたboot.imgを使ってdd for windowsでUSBメモリにイメージを流し込む。

ddforwindows1

dd for windowsはビッグドライブに対応していないようだが、まあ気にしない。
netinstイメージをとってきてUSBメモリにつっこむ。

これでUSBからブートしてみる。
とりあえず起動はした。

続きを読む ich9rでRAID0およびRAID5を構築しているマシンにdebianをUSBメモリからインストールしてみる