SSDに関する検証 その10
<緊急特集!!SSDに関する検証 その10>
ペンネーム: ミラニスタ
磁気ディスクの代わりに半導体メモリにデータを記録するストレージ装置
SSD (Solid State Disk) の検証を行っています。
検証製品(富士ゼロックス株式会社様製 GigaExpress)の紹介URL⇒
http://www.fujixerox.co.jp/product/gigaexpress/
▼ 前回のおさらい
前回は、読み込み処理(Select)における、磁気ディスクと SSD の比較を
考察しました。
Insert のようにディスクの性能差が顕著に現れる場合とは異なり、Select
においては、両者の差はあまり明確ではありませんでした。
すなわち、ディスクビジー率では明らかに SSD は余裕があるにもかかわら
ず、ユーザ CPU 使用率がほとんど変わりませんでした。
そもそも、インデックスを適切に使用したユニーク・スキャンは I/O 負荷
がそれほど高くないので、I/O ボトルネックとなる可能性は比較的低いと言え
ます。
今回、なるべく I/O ボトルネックに近い状況を作り出すために 200個の小
規模テーブルに対して、同時並行で全件検索を実施しました。
他にも、10GBくらいの巨大なテーブルに対する全件検索等いろいろ試してみ
たのですが、いずれも「DB キャッシュを介した」読み込みのため、ディスク
性能の明確な差を感じることは出来ませんでした。
▼ 冗長化に挑戦!!
今まで SSD の、特にデータベース用途としての性能面でのメリットを確認
してきました。しかし、万一の電源瞬断や機器故障でデータが失われてしまう
ということからミッション・クリティカルな場面での使用はどうしても不安が
残るというご意見をいただいています。
電源瞬断に関しては「連載 その7 メーカーへの質問 Q4. 」でご紹介したよ
うに、 UPS(無停電電源)からの給電および退避用磁気ディスクの組み合わせ
によって備えることができると考えます。
ところが、予期せぬ機器そのものの故障に対しては、やはり冗長化を検討し
なくてはなりません。
そこで、今回から OS や Oracle の持つ冗長化機能を利用して、SSD が実運
用に耐えられるどうか、課題があるとすればどんな点に注意すべきかを検証し
てみたいと思います。
株式会社シマンテック様の VERITAS Storage Foundation のような有償製品
でストレージの冗長化を行うことも可能ですが、本検証では Linux のソフト
ウェア RAID である「mdadm」というツールを使ってミラーリングを行わせて
みます。(mdadm の詳細は man page 等で確認してください。)
▼ ミラーリングの手順
1. パーティションの作成
fdisk コマンドによるパーティションの作成は
「連載 その1 ▼ セットアップ」を参照してください。
ここでは、16GB の SSD 2台に、それぞれ1つのパーティションを作成しま
す。
デバイス名: /dev/sdb, /dev/sdc
# fdisk -l ............................................................. Disk /dev/sdb: 16.9 GB, 16911433728 bytes 64 heads, 32 sectors/track, 16128 cylinders Units = シリンダ数 of 2048 * 512 = 1048576 bytes デバイス Boot Start End Blocks Id System /dev/sdb1 1 16128 16515056 83 Linux Disk /dev/sdc: 16.9 GB, 16911433728 bytes 64 heads, 32 sectors/track, 16128 cylinders Units = シリンダ数 of 2048 * 512 = 1048576 bytes デバイス Boot Start End Blocks Id System /dev/sdc1 1 16128 16515056 83 Linux
2. 新規アレイの作成
複数のディスクを束ねて1つのディスクに見せたものを「(ディスク)アレ
イ」と呼びます。
新規にアレイを作成するためには、create オプションを使います。
mdadm –create /dev/md0 –level=raid1 –raid-devices=2 /dev/sdb1 /dev/sdc1
このコマンドの意味するところは…
デバイス名「/dev/md0」という名前でアレイを新規に作成する。RAIDレベル
は「1」(ミラーリング)、アレイ内のアクティブなデバイスの数は「2」で
デバイス名はそれぞれ /dev/sdb1 と /dev/sdc1
ということになります。
# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1 mdadm: /dev/sdc1 appears to contain an ext2fs file system size=16514944K mtime=Mon Aug XX 13:56:09 2007 mdadm: /dev/sdc1 appears to be part of a raid array: level=1 devices=2 ctime=Mon Aug XX 13:54:43 2007 Continue creating array? yes ←入力 mdadm: array /dev/md0 started. 確認(詳細情報の表示) # mdadm --detail --scan ARRAY /dev/md0 level=raid1 num-devices=2 UUID=be839689:5472c1bf:8b34b455:4d387668 devices=/dev/sdb1,/dev/sdc1 また、psコマンドで確認すると何やら怪しげなデーモンが動いているのもわかります。 # ps -ef | grep md0 | grep -v grep root 13823 1 0 15:49 ? 00:00:07 [md0_raid1]
3. パーティションのフォーマット
通常のディスクと同じようにフォーマットを実施します。
# /sbin/mkfs ext3 -c /dev/md0 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 2064384 inodes, 4128736 blocks 206436 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4227858432 126 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group ...................................... Checking for bad blocks (read-only test): done Writing inode tables: done Writing superblocks and filesystem accounting information: done ...................................... 4. パーティションのマウント # mount /dev/md0 .../ssd/raid1 5. 最後に確認 # df -k Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/md0 16255800 44332 15385724 1% .../ssd/raid1 ▼ 参考:ベンチマークテスト それでは、hdparm でアレイの基本性能を確認しておきましょう。 # hdparm -Tt /dev/md0 /dev/md0: ..................................................................... Timing buffered disk reads: 1022 MB in 3.00 seconds = 340.15 MB/sec ^^^^^^ 比較:同一サーバ上の磁気ディスク(RAID5) # hdparm -Tt /dev/sda /dev/sda: ..................................................................... Timing buffered disk reads: 352 MB in 3.00 seconds = 117.31 MB/sec
ソフトウェアRAID でミラーリングしても、性能は十分確保されています。
準備に手間取ったので、今回はここまで!
次回は、今回作成した領域にファイルを置き、片方の SSD の電源を落とし
て障害をシミュレートしてみます。
イタリアのセリエA開幕しました!A.C.ミランは初戦白星でした!!
皆既月食は雲で見えない 茅ヶ崎にて