*

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

MyServerRooM

ばんわー Seichan です. ちょっと前に,DDS4 チェンジャードライブのエントリをのっけまし

記事を読む

no image

Pukiwiki

自民党キター と喜んでいる最中ですが,はまっていた事があったの備忘録をかねてのメモ. # 選挙ネタは

記事を読む

Qmail.Logo_.lg_-300x300

ucspi-tcp (SSL Patch) と ucspi-ssl (TLS Patch)

Seichan です.qmail 関連の SSL/TLS 化を考えてます.特に SMTP(submi

記事を読む

no image

サーバメンテナンス

Seichan です. 今日の夜より,がっつりとサーバメンテを行います. FileServer のデ

記事を読む

no image

CF 512MB と CF-IDE 変換

Seichan です.そういえば,CF の 512MB と,CF-IDE の変換基盤を買ったさ. 動

記事を読む

no image

100G ショック

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

記事を読む

no image

でーたがとんだ?

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

記事を読む

no image

papu さんへご報告

なんだか,稚内にいないようなのでこっちに書いておく. papu さんのサイトを,こっちのサーバに移動

記事を読む

FreeBSD

GEOM CONCAT を使う

Seichan です.こんばんわ. 前回の「GEOM RAID1 を管理する」で書いた通り今回

記事を読む

no image

UPS

UPS 買いました.APC の ES 500. 前々から買いたいと言うか,必要だと思ってはいたのです

記事を読む

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 ↑