プロフィール

けい

Author:けい
公開したWebサービス・アプリ一覧はこちら

※2014年12月、私が個人で開発したWebサービス・アプリへの
累計アクセス数は8億を超えました。
負荷対策頑張ります。日々精進していきます!!


■■■ 業務経歴 ■■■
社会人1年目:携帯電話開発。画面周りを1年間
2年目 :海外向け携帯電話ミドルウェア開発
     ブラウザとプロトコルスタック周り
2年目後半~:携帯電話の通信専用チップ開発
3年目:カーナビ。画面周りの開発
3年目後半~:BDビデオカメラ
     組み込みLinux カーネルと
     ドライバの開発。
4年目12月:プロジェクト途中で退社
~ここまではC、またはC++で開発~

~ここからJavaがメインの開発~
4年目1月:Web系の会社に転職
       ~4ヶ月間の研修
5年目5月:製造業向け生産管理システム開発
6年目9月:証券会社向けシステム開発
7年目10月~携帯電話向けコミックサイトの運用・開発
8年目12月:プロジェクト途中で退社

~ここからPHPがメインの開発~
8年目1月~仲介手数料が無料の不動産屋の社内SEに転職
交渉しほぼ完全に裁量労働が可能な立場になる。
業務内容はシステム全般ですが、
最近はSEO対策の作業が多いです。
現在14年目 まだ、しばらくはこの会社に居るつもりです。

あと、全ての記事がリンクフリーです。

最近の記事

過去ログ

全ての記事を表示する

全ての記事を表示する

カテゴリー

FC2カウンター

RSSフィード

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.--    [ Myカテゴリ:スポンサー広告 ]

ソフトウェアRAIDはRAIDレベルを複合させるべきである。

先日作成した自作PCはDevice Mapperを用いてRAID0 * 4台でアクセスしており、
アクセス速度が平均270MB/sec くらいです。
この結果には非常に満足していたのですが、RAIDについて考えていくうちに、
Device Mapperを用いるよりも、mdを用いたRAIDレベル複合型の方が効率がいいことに気がつきました。

というのも、各RAIDレベルの欠点をほぼ完璧に補うような使い方が
MDを用いたソフトウェアの複合RAIDならば可能だからです。
(DeviceMapperはHDD単位でRAIDレベルを決めなければならないので
欠点を補うことができない)

RAID0の利点と欠点
 利点:読み書き共に最も高速
 欠点:信頼性無し
 向いている用途:読み書きが頻繁に発生する、どうでもいいデータ。
       例:コンパイル、エンコード、デコード、変換などの重い作業やスワップ。

RAID10
 利点:読み書き共にそこそこ高速で、信頼性がある
 欠点:使用可能な容量は 一台のHDDの容量 * HDDの台数 / 2
    速度は一台のHDDの速度 * HDDの台数 / 2
    つまりHDDの性能の半分しか使えない。
 向いている用途:読み書きが発生する重要なデータ
       例:CVS、FTP、samba, SQLサーバやログファイルなど

RAID5
 利点:読み込みがかなり高速で、信頼性がある
 欠点:書き込みが遅すぎる。どのくらい遅いのかと言うと、
    パリティチェックがあるため、HDD一台で使用しているときよりも書き込みは遅い。
 向いている用途:読みこみのみが発生するデータ
       例:Webサーバー

実際にシステムを使用状況を調べてみると、
9割方のIOアクセスが読み取りであることがわかった。
ということはほとんどのディレクトリをRAID5にすることができ、
残りの1割をRAID10にすればいいのだ。
そして、作業用スペースはRAID0にする。(オリジナルデータはRAID10のCVSに保存)

実際に試してみた。
リソースはHDDは250GB * 5台。内訳:ATA1台、SATA4台。

全てのディスクのパーティションは以下のように分割した。
1 1513MB -- RAID0用
2 8743MB -- RAID10用
3 239799MB -- RAID5用

RAID10は2で割り切れる台数でしかRAIDを組めないので、
SATA 4台でRAID10を組み、ATAの2はルートパーティションとした。


ファイルシステムの作成
※mdを使用する場合にはファイルシステムの作成後にmd Arrayを作らないと、
容量がおかしくなるので必ずファイルシステム作成後にArrayを作ること!

sudo mkfs.reiserfs /dev/hda1
sudo mkfs.reiserfs /dev/sda1
sudo mkfs.reiserfs /dev/sdb1
sudo mkfs.reiserfs /dev/sdc1
sudo mkfs.reiserfs /dev/sdd1
sudo mkfs.reiserfs /dev/sda2
sudo mkfs.reiserfs /dev/sdb2
sudo mkfs.reiserfs /dev/sdc2
sudo mkfs.reiserfs /dev/sdd2
sudo mkfs.reiserfs /dev/hda3
sudo mkfs.reiserfs /dev/sda3
sudo mkfs.reiserfs /dev/sdb3
sudo mkfs.reiserfs /dev/sdc3
sudo mkfs.reiserfs /dev/sdd3


Arrayの作成
RAID0の作成
$ sudo mdadm --create --verbose /dev/md1 --level=0 --raid-devices=5 /dev/hda1 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: /dev/hda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/hda1 appears to be part of a raid array:
level=raid0 devices=5 ctime=Wed Oct 31 22:05:42 2007
mdadm: /dev/sda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdb1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdc1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdd1 appears to contain a reiserfs file system
size = 1477888K
Continue creating array? y
mdadm: array /dev/md1 started.


RAID10の作成
$ sudo mdadm --create --verbose /dev/md2 --level=10 --raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: layout defaults to n1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdb2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdc2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdd2 appears to contain a reiserfs file system
size = 8538496K
mdadm: size set to 8538432K
Continue creating array? y
mdadm: array /dev/md2 started.

RAID5の作成
$ sudo mdadm --create --verbose /dev/md3 --level=5 --raid-devices=5 /dev/hda3 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/hda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/hda3 appears to be part of a raid array:
level=raid5 devices=5 ctime=Thu Nov 1 22:36:39 2007
mdadm: /dev/sda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdb3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdc3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdd3 appears to contain a reiserfs file system
size = 234179456K
mdadm: size set to 234179392K
Continue creating array? y
mdadm: array /dev/md3 started.

RAID5はパリティの作成があるので、ここで20分くらい待つ。
作成状況は以下のコマンドで確認できる。

$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 sdd3[5] sdc3[3] sdb3[2] sda3[1] hda3[0]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
[=====>...............] recovery = 28.6% (67002024/234179392) finish=40.8min speed=68165K/sec

md2 : active raid10 sdd2[3] sdc2[2] sdb2[1] sda2[0]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid0 sdd1[4] sdc1[3] sdb1[2] sda1[1] hda1[0]
7389120 blocks 64k chunks

unused devices:



/dev/mdX のパーティションの作成
この時点では/dev/md0 のファイルシステムタイプは決まっていないので、
cfdisk /dev/md0 などでファイルシステムのタイプを決める。
sudo cfdisk /dev/md1
sudo cfdisk /dev/md2
sudo cfdisk /dev/md3

/dev/mdXへのファイルシステムの作成
sudo mkfs.reiserfs /dev/md1
sudo mkfs.reiserfs /dev/md2
sudo mkfs.reiserfs /dev/md3

これで作成完了!


そして、気になるベンチは・・・
RAID0 5台 /dev/md1

$ sudo hdparm -ft /dev/md1

/dev/md1:
Timing buffered disk reads: 1024 MB in 3.00 seconds = 341.32 MB/sec


RAID10 4台 /dev/md2
$ sudo hdparm -ft /dev/md2

/dev/md2:
Timing buffered disk reads: 542 MB in 3.00 seconds = 180.57 MB/sec

RAID5 5台 /dev/md3
$ sudo hdparm -ft /dev/md3

/dev/md3:
Timing buffered disk reads: 810 MB in 3.01 seconds = 269.48 MB/sec


うん。ほぼ予想道理の結果となった。
システム起動時に自動的にマウントされるように/etc/fstabの編集を行う。

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda2 / reiserfs notail 0 1
/dev/md1 /mnt/raid0 reiserfs defaults 0 0
/dev/md2 /mnt/raid10 reiserfs defaults 0 0
/dev/md3 /mnt/raid5 reiserfs defaults 0 0


これで何の作業を行うにしても、ディスクに関しては
通常の2倍(raid10)~5倍(RAID0)程度高速に作業ができる環境の出来上がりです。

2007/12/09 追記
いつからかわからないが、いつも間にか
/dev/hda3 がRAID5から外れてしまっていた。
チャンスとばかりにベンチマークを取ると、108MB/s のアクセス速度であった。
へ~。RAID5は障害が起きると、アクセス速度が激遅になるので
すぐにわかると言っていた人もおりましたが、この速度だと微妙かも。
(実際私も気がつきませんでしたし)

以下のコマンドを実行し復旧した。

% sudo mdadm /dev/md3 -a /dev/hda3

復旧度は以下のコマンドで確認する。
% cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 hda3[5] sda3[1] sdd3[4] sdc3[3] sdb3[2]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
[>....................] recovery = 4.1% (9733504/234179392) finish=54.1min speed=69056K/sec

md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid0 hda1[0] sdd1[4] sdc1[3] sdb1[2] sda1[1]
7389120 blocks 64k chunks

unused devices:

2008/08/25 追記
 10ヶ月ほど使用してみても、壊れることは無く安定して動作している。
ただ、使用していて、うっかりやってしまったミスがあるので、
注意点として報告しておこうと思う。

・カーネルを再構築して再起動した際、再構築のオプションなどにミスがあると、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。

・aptitude install でうっかりカーネルをインストールしてしまった場合、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。

私の場合、xen-hypervisor-3.0.3-1-i386-pae がカーネルだと気がつかなかったのですよ。
そのおかげで、再起動したらエラーが大量に発生し、
ルートパーティションにあるRAIDアレイが通常のファイルシステムとしてマウントされ、
データが吹っ飛びました。

RAID5 と RAID10は復旧可能だったのですが、RAID0は完全にお亡くなりになりました・・・


2010/11/28 追記
とうとう、HDD自体が完全にお亡くなりになりました。
めったに起きる現象ではないので、記録として残しておきます。

lfll@debian:~/src$ cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md1 : active raid5 sda2[0] hda2[5](F) sdd2[3] sdc2[2] sdb2[1]
965056256 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]

md2 : active raid10 hda1[5](F) sdd1[4] sdc1[3] sdb1[2] sda1[1]
7329280 blocks 64K chunks 2 near-copies [5/4] [_UUUU]

unused devices:

hdaが壊れたのですが、ディスクが壊れた場合には(F)のマークがついており、
アレイから外れていることがすぐに分かります。
アレイから外れただけならばアレイに追加すれば良いのですが、
今回は不良ブロックが大量にあり、完全に壊れておりました。

lfll@debian:~/src$ sudo badblocks -sv /dev/hda| more
Checking blocks 0 to 244198583
Checking for bad blocks (read-only test): 0 0.00% done, 0:00 elapsed
1
2
3
4




スポンサーサイト
コメント(1)   2007.11.03    [ Myカテゴリ:試してみた ]

コメント

アレイ作る前にfs作ったらmdメタデータとfs内が重なるだろうが
2007.11.26 16:02 URL #3mQ6ONHA - 編集

コメントの投稿













管理者にだけ表示を許可する

Template Designed By
ぐらいんだぁ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。