今回は GEOM STRIPE と MIRROR を組み合わせた RAID10 について纏めてみたいと思います.
ストライピングは複数のディスクを束ねた分散の読み書きが可能で IO 性能の向上が見込まれますが,耐障害性はありません.
一方,ミラーリングはデータを複数のディスクに保持する為耐障害性を得る事が可能となりますが,容量と IO 性能 はディスク1本分の性能となります.
その為ストライピングとミラーリングを組み合わせた RAID10 とする事で両方の弱点を補う事が可能となります.
デメリットは,RAID3 以降の技術と比較してディスク本数と容量の兼ね合いで損失が大きい事になります.通常,パフォーマンスは RAID10 の方が向上が見込めます.
「通常」というのは GEOM の仕組みだと制限があるのでこの書き方となっています.
- GEOM に関するお話
- FreeBSD GEOM 再々学習
- GEOM CONCAT (ディスクの連結) を使ってみる
- GEOM STRIPE (ストライプ/RAID0) を使ってみる
- GEOM MIRROR (ミラーリング/RAID1) を使ってみる (1)
- GEOM MIRROR (ミラーリング/RAID1) を使ってみる (2)
- GEOM STRIPE + MIRROR で RAID10 を構成してみる
- GEOM RAID3を使ってみる
- GEOM CACHE を使ってみる
- GEOM GVIRSTORを使ってみる
- GEOM GATE を使ってみる
- GEOM LABEL で名前による管理を行う
- GEOM PART でディスクパーティションの管理を行う
- GEOM MULTIPATH でマルチパスを構成する (1)
- GEOM MULTIPATH でマルチパスを構成する (2)
GEOM による RAID10 のイメージ
GEOM STRIPE と MIRROR の組み合わせによる RAID10 のイメージです.
MIRROR の2セットを STRIPE で束ねる事で容量と IO 性能の向上,耐障害性の向上が図れます.

RAID10 の作成
実施にあたり,カーネルモジュールは先にロードしておきます.
cat /boot/loader.conf geom_stripe_load="YES" geom_mirror_load="YES"
まずは2つのミラーリングのセットを作成します.
# gmirror label mirror0 da1 da2
root@bsd13:~ # gmirror label mirror1 da3 da4
root@bsd13:~ # gmirror status
Name Status Components
mirror/mirror0 COMPLETE da1 (ACTIVE)
da2 (ACTIVE)
mirror/mirror1 COMPLETE da3 (ACTIVE)
da4 (ACTIVE)
# gmirror list
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 226490004
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
Mediasize: 107374181888 (100G)
Sectorsize: 512
Mode: r0w0e0
Geom name: mirror1
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 518624559
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror1
Mediasize: 107374181888 (100G)
Sectorsize: 512
Mode: r0w0e0
続いて,作成したミラーリングデバイスをストライプで束ねます.
# gstripe label stripe0 /dev/mirror/mirror0 /dev/mirror/mirror1
# gstripe status
Name Status Components
stripe/stripe0 UP mirror/mirror0
mirror/mirror1
# gstripe list
Geom name: stripe0
State: UP
Status: Total=2, Online=2
Type: AUTOMATIC
Stripesize: 65536
ID: 200779422
Providers:
1. Name: stripe/stripe0
Mediasize: 214748233728 (200G)
Sectorsize: 512
Stripesize: 65536
Stripeoffset: 0
Mode: r0w0e0
Consumers:
1. Name: mirror/mirror0
Mediasize: 107374181888 (100G)
Sectorsize: 512
Mode: r0w0e0
Number: 0
2. Name: mirror/mirror1
Mediasize: 107374181888 (100G)
Sectorsize: 512
Mode: r0w0e0
Number: 1
ファイルシステムを作成してマウントします.
# newfs /dev/stripe/stripe0
/dev/stripe/stripe0: 204799.9MB (419430144 sectors) block size 32768, fragment size 4096
using 328 cylinder groups of 625.22MB, 20007 blks, 80128 inodes.
super-block backups (for fsck_ffs -b #) at:
192, 1280640, 2561088, 3841536, 5121984, 6402432, 7682880, 8963328, 10243776, 11524224, 12804672, 14085120, 15365568,
16646016, 17926464, 19206912, 20487360, 21767808, 23048256, 24328704, 25609152, 26889600, 28170048, 29450496, 30730944,
32011392, 33291840, 34572288, 35852736, 37133184, 38413632, 39694080, 40974528, 42254976, 43535424, 44815872, 46096320,
...
# mount /dev/stripe/stripe0 /mnt
# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/da0p2 19279260 2591108 15145812 15% /
devfs 1 1 0 100% /dev
/dev/stripe/stripe0 203123480 8 186873596 0% /mnt
以上で RAID10 ボリュームの利用が可能となります.
ディスクが1本障害となった場合は GEOM MIRROR のディスク交換の手順「ミラーデバイスを取り外す」と「ミラーデバイスを追加する」で交換,リビルドが行えます.
ディスクを拡張する
GEOM MIRROR を STRIPE で束ねている事から,さらに MIRROR デバイスを追加した拡張は「GEOM STRIPE (ストライプ/RAID0) を使ってみる の ディスクを拡張する」で記載したように実施出来ません.
MIRROR 側を玉突きで大きなディスクに入れ替えての拡張もこの構成だと上位レイヤーに STRIPE がある為不可能です.
今回のつくり方の場合,最初の段階で最大値を構成する必要がありますので注意してください.
RAID10 については別のアプローチで実現が可能ですので改めて纏めたいと思います.
コメント