最新のOracle Databaseでストレージと賢く付き合う 第1回 ストレージのサイジングは容量だけで考えてはいけない

CPUのマルチコア化に代表されるように、近年はITシステムにおけるハードウェア・トレンドがめまぐるしく変化しており、データベース・システムにおいて最新のハードウェアを使いこなすためには、従来の常識が通用しなくなっているケースも珍しくありません。本連載ではストレージを中心に、"新しい常識"を解説していきます。(編集部)

語り手:
日本オラクル株式会社
テクノロジー製品事業統括本部
アライアンス技術本部
柴田長(しばたつかさ)

■ストレージの賢いサイジングとは?

 CPUやメモリ、ネットワークなど、企業システムはさまざまなハードウェアで構成されています。そして、システムを開発する際には要求されるパフォーマンスを満たすべく、適切なハードウェアを選択する必要があります。

 さて、こうしたハードウェアの1つとして、データを保存/蓄積するために利用されているのがストレージです。このストレージをサイジングする際、皆さんは次のようなやり取りで決めてはいないでしょうか。

エンジニア:「そろそろ新しいシステムのストレージを決めたいのですが、どうしましょうか?」

マネージャー:「うーん、データは1年間で大体500GBくらいになりそうなんだっけ? じゃあ、5年分を蓄積できる容量に多少の余裕を加えて3TBくらいHDDを積んだディスクアレイを発注しておいてよ」

エンジニア:「わかりました。では、その容量で見積もりを出してもらいます」

 上の例のように、データベース・システムでは、データ容量をベースにしてストレージをサイジングする傾向が見られます。しかし、このアプローチには「システム全体のハードウェア・バランス」という観点が抜け落ちています。

 CPU数に関しては、システムのパフォーマンス要件を考慮したサイジングが行われる傾向がありますが、データベース・システムにはストレージ上のデータの読み書きを行うという特性があります。そのため、いくら高性能なCPUを多く搭載しても、データを読み書きするストレージの性能が低ければ、そのCPUを使いこなすことができず、データベース・システム全体のパフォーマンス要件が満たされない可能性があるのです。

■ストレージのサイジングは容量ではなくディスク本数で考える

 昨今、ハードディスク・ドライブは高密度化により1本当たりに格納できるデータ容量が大幅に増加してきており、従来よりも大幅にディスク本数を減らすことで、ハードウェア・コストを削減することが可能となっています。これが容量ベースでストレージをサイジングする傾向を助長している原因の1つです。しかし、データベース・システム全体のパフォーマンスを考慮した場合には、このディスク本数を十分に検討する必要があります。

 OLTP処理の場合、データベースはストレージに対して小さなサイズのランダムI/Oを大量に行います。高密度化したHDDでは、シーケンシャルなアクセス(例えば動画など)ならディスク1回転当たりに読み込めるデータ量が増加しますが、ランダムI/Oは連続的にデータにアクセスするわけではないため、大幅な高速化は期待できません。特に、小さなサイズの大量のランダムI/Oを高速化するには、複数のディスクにデータを分散配置させることが必要になります。

 例えば、データベース・システムにおいてOLTP処理で秒間1,000トランザクションを処理したいという要件があったとします。1トランザクション当たり5回のIOが発生すると仮定した場合、必要となるSASディスクの本数は約50本(=1000 × 5 / 100)になります。
img_storage_110421_01.jpg
 また、OLTP処理だけでなく、データウェアハウスの処理でも、複数ディスクでのデータの分散配置が重要となります。データウェアハウスのように大量データにアクセスする場合はまとめてデータを読み込むため、ディスクの高密度化も読み取り性能の向上に役立ちます。しかし、マルチコア化されたCPUリソースを効果的に使用してデータウェアハウスの検索性能を向上させるためには、複数のディスクにデータを分散配置させることが必要になります。

 例えば、8CPUコアを搭載しているデータベース・サーバを想定した場合、すべてのCPUコアを使い切るためには、約80本(= 8 × 200 / 20)のSATAディスクが必要となります。
img_storage_110421_02.jpg
 このように、データベース・システム全体のパフォーマンスを考慮した場合、容量ベースよりも性能ベース(ディスク本数)でのサイジングが非常に大切になります。とは言え、実際にどのように設計すべきか、多くのディスクを搭載可能なハイエンド・ストレージを採用すればコストがかさむといった課題があります。以降では、これらの課題を解決する方法をご紹介します。

■データは全体をまとめてストライピングし、偏りをなくす

 実際にデータを複数のディスクに分散配置する場合、どのように設計すべきでしょうか。従来は、それぞれの表や索引のアクセス頻度やデータ量を想定し、それに合わせてディスクを割り当てるといったことを行ってきました。しかし、システム稼働前に正確にこれらを見積もるのは容易なことではありません。また、数か月の工数を要したのにもかかわらず、当初の想定が外れた、あるいはシステム変更により傾向が変わったといった場合には、アクセス頻度やデータ容量の偏りにより、大きな無駄が生じるなどの事態が発生してしまいます。
img_storage_110421_03.png
 このような課題に対し、オラクルはディスクへの物理配置の基本的なコンセプトとして「Stripe And Mirror Everything(S.A.M.E.)」、つまり「すべてのディスクに均等に負荷がかかるように、データをストライプしてすべてのディスクに分散配置する」ことを提唱しています。このコンセプトに従うことで、設計の工数を大幅に削減し、すべてのディスクの性能と容量を効率的に活用することが可能となります。また、突発的なシステム変更にも柔軟に対応することができます。

 このS.A.M.E.のコンセプトを自動化したものが、Oracle Database 10g以降で標準搭載されている機能「Oracle Automatic Storage Management(Oracle ASM)」です。Oracle ASMを使って複数のディスクを束ねた「ASMディスク・グループ」を定義すると、そのASMディスク・グループ内ですべてのデータがストライピングされます。さらに、ミラーリングによって耐障害性を高めることもできます。

 なお、ストレージ側のRAIDでもストライピングやミラーリングは可能ですが、Oracle ASMを使うと何が違うのでしょうか。

 1つはデータの自動リバランスです、これは、ディスク構成を柔軟に変更しながら性能改善するのに重要な機能です。例えば、I/Oのボトルネックによる性能不足が発生した場合、ディスクを追加してより多くのディスクでストライプすることが必要となります。しかし、単にディスクを追加しただけではアクセス頻度やデータ量に偏りが生じてしまうため、すでに格納されているデータを手動で再配置するなど、非常に多くの工数が必要になります。
img_storage_110421_04.png
 Oracle ASMでは、こうした作業を自動的に行います。さらに、リバランスが行われている間でもストレージへのアクセスが可能なため、業務を停止せずにディスクの追加や削除が可能です。
img_storage_110421_05.png
 2つ目として、Oracle ASMは複数のストレージ筐体をグループ化し、仮想的なストレージとして扱えることが挙げられます。ストレージI/O性能のボトルネックへの対応としては、1ストレージ筐体内でディスクを追加したり、より多くのディスクが搭載可能なストレージに買い替えたりといった方法に加えて、新たに別のストレージ筐体を追加するというアプローチが可能となるため、ストレージ構成がより柔軟になります。

■ディスク本数を増やすだけでは高価になるので、コストを考慮した構成を考える

 容量ベースではなく性能ベースでストレージをサイジングした場合には、ディスク本数が当初予想よりも増える傾向がありますが、構成を工夫することでストレージのコストを大幅に下げることが可能です。Oracle Databaseの場合なら、次のようなアプローチをとることができます。
  • ・Storage GRID:複数台の低コスト・ストレージの仮想化
  • ・ILM(Information Lifecycle Management):階層型ストレージ
  • ・Oracle Advanced Compression:データの圧縮
 前述したように、Oracle ASMは複数のストレージ筐体を仮想的に1つにまとめることが可能であり、複数台の低コスト・ストレージを使用して、コスト・パフォーマンスの高い仮想的なハイエンド・ストレージを構成することが可能となります。すべてのデータを全ストレージ筺体のディスクでストライピング&ミラーリングすることで、性能と可用性を両立させながらストレージ・コストを大幅に削減することができるのです。このような構成をStorage GRIDと呼んでいます。

 また、Oracle DatabaseのPartitioning Optionを使用すると、時系列でデータを分割し、データの利用頻度に応じて適切なストレージに配置するILMを実現することが可能です。Partitioning Optionにより、頻繁にアクセスする直近のデータは高速なFCディスクに、アクセス頻度が低い過去の大量なデータは安価なSASやSATAディスクに配置し、全体のストレージ・コストを抑えることができるのです。
img_storage_110421_06.png
 Oracle Advanced Compressionは、データを圧縮してストレージに保存するという技術です。OLTPやデータウェアハウスなど、用途を問わずに適用することが可能で、さらに平均2~4倍に圧縮可能なため、必要なディスク容量の削減にもつながります。

 加えて、ストレージI/O性能の改善まで期待できる点も、Oracle Advanced Compressionの大きなメリットです。Oracle Databaseでは、圧縮したままのデータを読み込むことが可能であり、例えば約3倍に圧縮されている場合には、そのデータの読み込みに要する時間は約1/3になる可能性があります。また、圧縮した状態でデータベース・サーバ上のメモリにキャッシュされるため、実質的にメモリ・サイズが2~4倍になると考えることもできます。
img_storage_110421_07.png
 これらのアプローチを組み合わせて採用することで、コストを大幅に抑えながらストレージI/O性能を改善することが可能となります。

 なお、データベース・アプライアンスであるOracle Exadataには、Oracle ASMが標準で組み込まれており、複数台のストレージを束ねることで高いストレージI/O性能を実現しています。また、専用の圧縮技術である「Exadata Hybrid Columnar Compression」により10倍~30倍の圧縮率を実現しています。こうした機能により、ストレージ・コストの大幅な低減を実現していることは、Exadataの大きな特徴だと言えます。

 次回は、SSDを利用してデータベースのパフォーマンスを向上させる技術を解説していきます。

Comments:

Post a Comment:
Comments are closed for this entry.
About

Twitter
Facebook

Search

Recent Posts
Archives
« 4月 2014
  
1
2
3
4
5
6
7
9
10
11
12
13
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today