*

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

RBL は使ってはならない

Seichan です.毎度様です. 最近めっきり使う人がいなくなったと思っていたのに,いまだ使ってい

記事を読む

no image

qmail で SMTP-AUTH がでけたぽぃ

苦節3日.Yuuji Hirose さん作の SMTP-AUTH with qmapop schem

記事を読む

wordpress-logo-100x100

Movable Type 4.23 から WordPress 3.7 に移行

Seichanです.こんばんわ. 今まで Movable Type を使っていたのですが,アップグ

記事を読む

pukiwiki-official

pukiwiki を PHP 5.4 に対応させる方法 (1)

Seichanです.こんばんわ. サーバの移行に伴い,PHP のバージョンが 5.3 から 5.4

記事を読む

no image

100G ショック

2.5 インチの 7400rpm 100GB HDD を購入してました Seichan です. 現在

記事を読む

FreeBSD

FreeBSD をクライアントとして使用する (firefox)

おひさしぶりです.seichan です. 更新をサボっていたのですが,取り合えずまたクライアントネ

記事を読む

no image

FreeBSD には関係ないが

CIFS は1アクション毎のやり取りが多すぎる.この為,リモートからのファイル送受信はとてつもなく時

記事を読む

no image

MovableTypeを入れてみた

FreeBSD なサーバにこの blog ツールである,MovableType を入れてみた. DB

記事を読む

pukiwiki-official

pukiwiki を PHP 5.4 に対応させる方法 (2)

Seichan です.こんばんわ. pukiwiki を PHP 5.4 に対応させる方法 (1)

記事を読む

FreeBSD

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

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

記事を読む

Message

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Google Adsense

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

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

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

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

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑