*

GEOM RAID0 を使ってみる

公開日: : 最終更新日:2014/01/09 FreeBSD, GEOM

Seichan です.こんばんわ.
前回「GEOM のモジュールを理解する」でも書きましたが,GEOM RAID から始めてみたいと思います.RAID ということで、本来は利用頻度の高い RAID1 や RAID3 (GEOM RAID3) を先にと思いつつ、番号の若い順番で…
Pukiwiki の「FreeBSD で GEOM を試してみる」に以前書いていて、新バージョンでの焼き直しになります.ですので,何にも変わってないかもしれません.

 SPONSORED LINK
 

1. RAID0 ってなんだ

今更な説明ではありますが,RAID0 について軽く説明します.
RAID0 は複数のディスクを束ねてひとつの大きなディスクとして利用する技術です.束ねるという手法/技術にはコンカチ(コンカチネーション)もありますが,両者の大きな違いは分散して書き込むのか,ディスクの1本目から順に書き込んでいくのか.の違いになります.
RAID0 は複数のディスクに分散して書き込みますので,読み書きのパフォーマンスの向上を狙うことが出来ます.メリットはディスクアクセススピードの向上ですが,デメリットはディスクが1本でも故障等で失われるとその RAID0 ディスク上のデータはすべて消失してしまいます.
ですので,主な用途としては演算や動画編集等の中間データを入れる等,消失してもオリジナルは存在出来る状態かつ,その作業中のパフォーマンスは高い方が望ましい.というシチュエーションで力を発揮します.

2. GEOM RAID0 を使う

では,早速構成してみましょう.
はじめに,kernel module がロードされているのかを確認し,ロードされていなければ明示的にロードしてください.多くの場合,何もしなくても必要に応じてロードしてくれる場合が多いのですがこれを当てにすると予期せぬトラブルになったりしますので,明示的に読み込むクセをつけた方がよいでしょう.

kldstat を実行した結果次のように「geom_stripe.ko」が表示されない場合は kldload geom_stripe でロードします

# kldstat
Id Refs Address            Size     Name
 1    1 0xffffffff80200000 15b93c0  kernel

# kldload geom_stripe
# kldstat
Id Refs Address            Size     Name
 1    3 0xffffffff80200000 15b93c0  kernel
 3    1 0xffffffff81812000 4900     geom_stripe.ko

GEOM RAID0gstripe という専用のコマンドが用意されていますので,これを使用します.

次の例の場合,da1 と da2 の2本を raid0-1 という名前で RAID0 ボリュームを作成します.

# gstripe label raid0-1 da1 da2

GEOM LABEL の時と同様,状態を確認するには status サブコマンドを付けて実行します.それが次の例です.また,/dev/stripe 以下に raid0-1 というデバイスファイルが作成されていますので合わせて確認しても良いでしょう.

# gstripe status
          Name  Status  Components
stripe/raid0-1      UP  da1
                        da2

status よりも詳細な情報が欲しい場合は list サブコマンドを付けて実行します.この環境では da1,da2 が 20GB のディスクで RAID0 を構成していますので,raid0-1 は 40GB のディスクになっています.

# gstripe list
Geom name: raid0-1
State: UP
Status: Total=2, Online=2
Type: AUTOMATIC
Stripesize: 65536
ID: 2824094330
Providers:
1. Name: stripe/raid0-1
   Mediasize: 42949541888 (40G)
   Sectorsize: 512
   Stripesize: 65536
   Stripeoffset: 0
   Mode: r0w0e0
Consumers:
1. Name: da1
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r0w0e0
   Number: 0
2. Name: da2
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r0w0e0
   Number: 1

3. ちょっとしたチューニング

先の例では gstripe label でそのままディスク名を渡して作成しています.その結果の gstripe list では次のようにストライプサイズが 65536 と出力されています.

1. Name: stripe/raid0-1
   Mediasize: 42949541888 (40G)
   Sectorsize: 512
   Stripesize: 65536
   Stripeoffset: 0
   Mode: r0w0e0

これは,複数のディスクに分散して書き込む際の分割サイズが 64KB 単位ということになります.普通にこのまま利用しても何も問題は無いのですが,書き込むデータの質によっては少し考慮するとパフォーマンスアップにつなげられます.
この状態のまま 64KB 以下のデータを書き込む場合,どちらか片方のディスクに対してのみ書き込み動作が発生します.64KB 以上の場合は2本のディスクに分散して書き込む事になります.
また,3本以上の場合は… 64-127KB の場合は2本,128KB 以上の場合は3本目も.という形になります.

単純な理想はほとんどのデータの読み書きで全てのディスクを有効にアクセスする事ですので,主要なデータサイズの見積もりと,ディスク本数を含めてストライプサイズを決定する事が望ましいと言えます.

ストライプサイズを変えた RAID0 ディスクを構成する場合,次のように -s オプションを付けて実行します.

# gstripe label -s 128K raid0-1 da1 da2

この場合,-s 128K という指定をしています.当然 128KB になります.バイト数でも良いですし,このように略した書き方でも大丈夫です.

list で結果をみると次のようにストライプサイズが変化している事がわかります.

1. Name: stripe/raid0-1
   Mediasize: 42949410816 (40G)
   Sectorsize: 512
   Stripesize: 131072
   Stripeoffset: 0
   Mode: r0w0e0

この手のチューニングに正解はありませんので,実施する場合は実際のシチュエーションを考慮したパフォーマンス試験を行って最適な値を探してください.

RAID0 ディスクを削除する

利用が終わった場合や間違って作成した場合,ストライプサイズを変えたい場合等で削除アクションを行う事になると思います.
GEOM LABEL でもやってきてますので,単純に書いちゃいます.destroy サブコマンドを使用して該当のディスクを選択するだけですね.

# gstripe destroy raid0-1

完了後,liststatus で状態を確認してみてください.

ちょっとした Tips

ディスク本数を変更したい場合(2本から3本に増やしたい場合等),動的に拡張する方法は残念ながら用意されていませんので,削除せずに行おうとした場合はちょっとした工夫が必要になります.
GEOM は重ねがけが出来る点を思い出してください.
ディスク2本で RAID0 を構成していたところに,2本追加したい場合はちょっとパフォーマンス上はもったいない事になる場合もありますが,ディスク2本の RAID0 を2つ用意して,この2つの RAID0 ディスクをコンカチする事で対応が可能になります.

こういう重ねがけで色んなディスク構成を作成することができます.このあたりは RAID 等が一通り出そろったら纏めたいと思います.

と,GEOM RAID0 は以上で終わりとなります.

SPONSORED LINK
  ☆ ブログランキング参加しました (*≧∀≦)ノシ
にほんブログ村 IT技術ブログ FreeBSDへ 

関連記事

no image

orz

間違って,make world 中のマシンをリブートしてしもた… もっかい make world や

記事を読む

no image

FreeBSD 4.11 と 6.1

寝ようと思っても,咳がひどくて眠れない Seichan Death. 月末に妹がこっちに来るようなの

記事を読む

no image

FreeNAS

眠れないので,ある程度かいてみるテスト(汗) な Seichan です.こばわ. FreeNAS で

記事を読む

FreeBSD は / から ZFS 化出来るらしいよ

Seichan です.とりあえずよさげなサイトを見つけたので,めもめも.http://www.ish

記事を読む

no image

djbdns から bind へ移行

DMZ 構成にして,ネットワーク構成を色々変更して,何か良くわからないんですが, djbdns でう

記事を読む

no image

PostgreSQLが…

家のサーバは2台あって,それぞれが Flets ADSL に接続されています.この内1台マシンの R

記事を読む

no image

atacontrol

ただいまなのです.Seichan です.じめじめしてて最悪… FreeBSD の ATA デバイスを

記事を読む

no image

FreeBSD 6.0 入れた

FreeBSD 6.0 を VMWare に入れてみた. 現在使っている 5-STABLE のマシン

記事を読む

no image

メンテナンス完了

結局,PM11:00 より開始して AM10:00 に終了しました.軽く寝て起きた Seichan

記事を読む

no image

fukuoka-u.ac.jp の NTP サーバ

2ch の Linux 板のあるスレッドに,福岡大学の ntp 管理者(?) からの書込みがあった.

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Google Adsense

PHPki で簡単証明書運用 (5) 【管理ユーザのメンテナンスとCRLの取得】

Seichanです.こんばんわ. いつものとおり,だいぶ日が経ってし

PHPki で簡単証明書運用 (4) 【作成した証明書を管理する】

Seichanです.こんばんわ. 先日の「PHPki で簡単証明書運

PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

PHPki で簡単証明書運用 (1) 【PHPki の修正と導入 (修正版)】

Seichan です.こんばんわ. 先日「PHPki で簡単証明書運

→もっと見る

PAGE TOP ↑