今回は 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 については別のアプローチで実現が可能ですので改めて纏めたいと思います.
コメント