*

GEOM RAID1 を使ってみる

公開日: : 最終更新日:2014/02/03 FreeBSD, GEOM

Seichan です.こんばんわ.
前回の「GEOM RAID0 を使ってみる」に続いて今回は RAID1 に触れてみたいと思います.
こちらも同様に Pukiwiki の「FreeBSD で GEOM を試してみる」に以前書いていて、新バージョンでの焼き直しになります.ですので,何にも変わってないかもしれません.

 SPONSORED LINK
 

1. RAID1 ってなんだ

今更な説明ではありますが,RAID1 について軽く説明します.
RAID1 は二つ以上のディスクに対して同一のデータを書き込み,耐障害性を確保する技術です.同一データを保持する事から,ミラーリングという呼び方も一般的です.全てのディスクが故障するまでデータは保護し続けられます.多くの RAID コントローラやソフトウェア RAID は3つ以上のディスクを RAID1 としてミラーリングする事ができます.ミラー数が増えるほどに耐障害性は高められることになります.
デメリットはスピードとコストです.同一データを書き込む事から,ディスク本数が増えても速度はディスク1本分の (またはそれより少ない) パフォーマンスとなります.また,コストも1つのデータを保護するのに2倍以上のコストをディスクにかける事になります.
その為,多くの場合は単純な RAID1 では無く,RAID1 と RAID0 を組み合わせた RAID10 と呼ばれる方法を用いたり,RAID5 や RAID6 を用いたり,RAID5 と RAID0 を組み合わせた RAID50 と呼ばれる方法を用いたりします.
OS 領域やいわゆるブートディスクとして利用される部分はデータ量も多くない場合が多数のため,RAID1 が多く利用されます.

2. GEOM RAID1 を使う

では,早速構成してみましょう.
はじめに,kernel module がロードされているのかを確認し,ロードされていなければ明示的にロードしてください.kldload geom_mirror でロードすることが出来ます.
手元の環境では明示的なロードが必要でした…

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

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

GEOM RAID1 は gmirror という専用のコマンドが用意されていますので,これを使用します.
次の例の場合,da1 と da2 の2本を raid1-1 という名前で RAID0 ボリュームを作成します.

# gmirror label raid1-1 da1 da2

こちらも同様に,status サブコマンドで状態を確認することが出来ます.

# gmirror status
          Name    Status  Components
mirror/raid1-1  COMPLETE  da1 (ACTIVE)
                          da2 (ACTIVE)

status より詳細な情報が欲しい場合は list サブコマンドで確認してください.この環境では da1,da2 が 20GB のディスクで RAID1 を構成していますので raid1-1 は当然 20GB のままとなっています.

# gmirror list
Geom name: raid1-1
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2655055578
Providers:
1. Name: mirror/raid1-1
   Mediasize: 21474835968 (20G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: da1
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 1015435515
2. Name: da2
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 1
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 4199385851

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

GEOM RAID0 では,ブロックサイズ/セクタサイズ の調整がありましたが GEOM RAID1 では,主に読み取り時の動きを調整する事が出来ます.読み取り時にミラー全てから読み取るのか,ひとつのディスクから読み取るのか.という動きを調整可能です.設定可能な項目としては次のとおりです.

  • load: 負荷の低いディスクから優先的に読み出しを行う
  • prefer: プライオリティの高いディスクを使用する
  • round-robin: ラウンドロビンで交互に読み取る
  • split 指定した大きさで分割して複数のディスクから読み取る

何も指定していない場合は load となっていますので,負荷の低いディスクから優先的に読み出しを行う.という設定です.
gmirror label で作成する際にオプションとして一緒に渡すことも可能ですが,作成後に変更することも可能です.ここでは,作成済みのものに対する変更を行います.

# gmirror configure -b round-robin raid1-1

設定後,状態を確認したい場合は list サブコマンドで確認します.Balance という行が load から round-robin に変更されています.

# gmirror list
Geom name: raid1-1
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2655055578
Providers:
1. Name: mirror/raid1-1
   Mediasize: 21474835968 (20G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: da1
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 1015435515
2. Name: da2
   Mediasize: 21474836480 (20G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 1
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 4199385851

なお,prefer の場合は各ディスクの Priority 行が一番大きなディスクが使用されます.split の場合は Slice 行の値が分割データサイズとなり,この値で分割されて複数のディスクに読み出しのリクエストを行います.
Slice の値は当然変更することが出来ます.たとえば分割サイズを 128KB にする場合は次のように実行します.その後 list で状態を表示させていますが,Slice の値が 4096 から 131072 に変更されています.
# ただ,この例の場合 Balance タイプの変更はしておらず,round-robin のままなので Slice に意味はありません…

# gmirror configure -s 128K raid1-1

# gmirror list
Geom name: raid1-1
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 131072
Flags: NONE
GenID: 0
SyncID: 1
ID: 2655055578
Providers:
1. Name: mirror/raid1-1
   Mediasize: 21474835968 (20G)
   Sectorsize: 512
   Mode: r0w0e0

このように RAID1 も簡単に構成する事が出来ます.

4. RAID1 ディスクを削除する

GEOM RAID1 ディスクを壊す場合は次のようなオペレーションとなります.RAID1 は壊してしまいますが,データが破壊されるわけではないので単体としてそのままマウントすることが可能です.

gmirror stop で raid1-1 を停止します.これだけだと次に再起動した場合等でまた RAID1 ディスク化してしまいますので,各ディスクにあるメタデータを削除する必要があります.それが gmirror clear です.メタデータもキレイに削除しておかないと,別の環境に接続した場合等に突然 RAID1 ディスクとして認識します.また,もう一方が存在しないと冗長性が無い.というメッセージが出たりしてちょっとうざったい状態を味わう事が出来ます.

# gmirror stop raid1-1

# gmirror clear da1
# gmirror clear da2

と以上 RAID1 でした.次回は… RAID1 と RAID0 の組み合わせなんかやってみたいですね.

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

関連記事

no image

でーたがとんだ?

え〜と.PostgreSQL の復旧をしたと先に書いたのですが,完全復活じゃぁ無いようで… 1週間分

記事を読む

FreeBSD

7-STABLE がきたよ

おひさです.seichan です. 7-current が,7-stable に落ちてきたの.

記事を読む

no image

FreeBSD 2.2.8

部屋の掃除をしていたら,1999年の UNIXUSER の CD-ROM が見つかった. 読み込んで

記事を読む

no image

RAID の解説

そういや,前に自分の wiki サイトに用語集カテゴリ作って,適当に RAID に関する事をつらつら

記事を読む

no image

RBL は使ってはならない

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

記事を読む

no image

djbdns

新しく入れ替えたマシンですが,当然サーバソフトウェアは入っていません. 同居人に実習形式で導入しても

記事を読む

no image

業務連絡

Celeron 300A な CPU を PPPoE ルータにした所,それなりにスピード叩き出してて

記事を読む

freenas-logo-black

FreeNAS 0.69 (Kwisatz Haderach) の日本語環境アップデート

おひさしぶりです.Seichan です.FreeNAS 0.69 が出てからちょっと立ちました.とて

記事を読む

FreeBSD

GEOM RAID1 を管理する

Seichan です.こんばんわ. 前回の「GEOM RAID0 と GEOM RAID1 の組み

記事を読む

no image

MovableTypeを入れてみた

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

記事を読む

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 ↑