クラウドのデータ・ストレージを最適化する

クラウド対応の最新のデータ管理ツールおよび Software-Defined Storage ツールを探る

Comments

世界全体で毎日大量のデータが作成されていることを考えると、企業がより効率的でコスト効果の高いデータ保管の手段を捜し求めているのは当然のことです。クラウド・コンピューティングの時代が幕を開けると同時に、世界ではこれまでよりも遥かに大量のストレージが低価格で必要になったことから、ストレージ・メディアのコストは低下しました。ところが、ビッグ・データ分析とモノのインターネットという新たな 2 つのトレンドが生じ、そのデータ処理要件があまりにも膨大になりかねないという単純な理由で、より低価格のストレージ・メディアを使用することによるコスト削減の効果が、トータル・コストに対して意味を成さない程度のものになる恐れが出てきています。

  • ビッグ・データ分析には、大量のデータに極めて効率的にアクセスできなければならないという要件が伴います。つまり、ビッグ・データ分析では膨大な量のデータに迅速にアクセスする必要があるだけでなく、データをほぼリアルタイムでシステムにフィードして、そのデータの意味を可視化できなければならないことを意味します。
  • モノのインターネットでは、控えめに見積もったとしても、データ入力 (およびストレージ容量のニーズ) が 10 倍に増加する可能性があります。

従来のローカル・ディスク・アレイによるストレージ・アーキテクチャーは、必要に応じて新しいディスクを追加すれば拡張することができますが、このようなアーキテクチャーでは、最小規模のビジネス以外にはもはや十分ではない時代に、業界は戻りつつあります。

これらのトレンドがクラウド・コンピューターとどのように関係するのかと言うと、インタラクションとアプリケーションのホスティングの大部分、そして (もちろん) 分析と収集を行うためのストレージおよびデータのネットワーキングの、すべてではないとしても、少なくともそのかなりの部分がクラウド・システム上で行われることになります。

業界は再び、データ・ストレージ、ストレージ内のデータ、そしてそのデータへのアクセス方法を最適化することを考慮しなければならないところへ立ち戻っています。

改めてクラウド・ストレージとは何か?

エンタープライズ・レベルのクラウド・データ・ストレージは、仮想化インフラストラクチャー上に構築されます。この仮想化インフラストラクチャーを成り立たせているのは、アクセスしやすいインターフェース、高速かつ信頼性の高い (水平および垂直の両方向での) スケーラビリティー、複数のクライアントのデータを同じ場所に保持しながらも完全に分離できる機能、そして場合によってはクライアントが使用しているストレージ容量を測定する機能です。クラウド・ストレージは、かつてはオブジェクト・ストレージ (データをオブジェクトとして管理するストレージ) でしたが、今ではブロック・ストレージのような手法にまで拡張されています (つまり、セクターおよびトラック内のブロックとしてデータを管理します)。クラウド・ストレージは、ユーザーにとってシームレスに見える必要があり、冗長性とリソース配分によるアクセスにおいても、バージョン管理においても一貫していなければなりません。データは、論理プールに保管されます。物理ストレージ・リソースがストレージ・プールに集約され、これらのストレージ・プールから論理ストレージが作成されます。

ストレージ仮想化には、以下の仮想化が含まれます。

  • ブロック仮想化: 物理ストレージを問わずにデータにアクセスできるよう、論理ストレージを物理ストレージから切り離します。
  • ファイル仮想化: ファイル・レベルでアクセスされるデータと、ファイルの物理的な保管場所との間にある依存関係をなくします。

次に、クラウドの使用特性に応じたストレージ最適化オプションのいくつかを紹介します。

クラウド用に最適化されたストレージの特徴

クラウド・システムのストレージを最適化するための主な方法は、データを最適化する方法、データベースを最適化する方法、Software-Defined Storage を実装する方法の 3 つに分類することができます。

データを最適化する方法

ストレージに関する最近のソフトウェア・イノベーションの中でおそらく最も意義深いのは、より多くの情報をより小さな物理領域に保存することを可能にする、データの最適化です。データを最適化する手段には、重複排除、圧縮、シン・プロビジョニングの 3 つがあります。

重複排除

重複排除 (単一インスタンス・ストレージとも呼ばれます) を使用して、反復データの重複するコピーを排除することにより、領域を節約します。このプロセスでは、データの固有のチャンク (バイト・パターン) を識別して保管するためにデータを分析します。データの分析を続ける中、他のチャンクが保管済みのチャンクと比較されます。2 つのチャンクが一致した場合は、新しく見つかった重複するチャンクは、保管済みのチャンクを指す参照へと置き換えられます。

典型的なデータ・ストレージでは、(重複排除しようとしているチャンクの大きさによっては) 同じバイト・パターンが何千回も出現することがあります。ストレージのブロック・サイズが小さければ小さいほど、データの重複を排除する能力が高くなります。

標準のファイル圧縮ツールは、単一のファイル内で短いサブストリングを識別する傾向がありますが、重複排除ツールは大量のデータの中から大きなセクション (さらにはファイル全体) を検索します。

クラウドのファイル共有アプリケーションは一般に、重複排除のターゲットとして最適です。ネットワーク・データ転送に対して重複排除を適用し、送信するバイト数を削減することもできます。

圧縮

データ圧縮 (インテリジェント圧縮とも呼ばれます) は、単に情報をエンコードして元のビット数より少なくすることを意味する周知の用語です。注意する点として、圧縮には、非可逆圧縮と可逆圧縮の 2 つのタイプがあります。非可逆圧縮では、不要な情報が特定されて削除されます。一方、可逆圧縮では、データの送信には必要ではあるものの (統計的冗長性)、データそのものではない情報が特定されて削除されます。

一般に使用されているファイル・レベルの圧縮には、ほとんどの音声ファイルおよび画像ファイルの圧縮が含まれます。

シン・プロビジョニング

シン・プロビジョニング (疎ボリュームとも呼ばれます) は、仮想化のコアとなる概念ですが、これはデータ削減手法ではなく、リソース・プロビジョニングのモデルです。シン・プロビジョニングは、物理リソースが実際に使用可能な量より多くあるように見せかけ、かろうじて足りるだけの領域をジャスト・イン・タイム方式で簡単にサーバーに割り当てられるようにします。このメカニズムが適用されるのは、大規模なディスク・ストレージ・システム、SAN、ストレージ仮想化システムです。

データベースを最適化する方法

シャーディングは、データを最適化する方法と見なすこともできるかもしれませんが、データベースを最適化する方法として定義したほうがおそらく適切でしょう。シャーディングとは、水平データ・スケーリングの 1 つの形であり、データの増大とアクセスの需要を満たすように意図されています。このプロセスでは、読み取り/書き込み操作のスループットが許容範囲を超え、データベースのサイズが原因でパフォーマンスが制限されると、データ・レコードを複数のマシンに保管します。したがって、マシンを追加するだけで、データの増大に対応することができます。

データベース・パーティショニングは、データベースを個別の論理領域に分割することによって行われます。多くの場合、この分割は複数のサーバー間で行われます。

  • 垂直パーティショニングでは、データ列を分割してから、それらの列を他のデータベース・テーブルに保管します。正規化 (リレーショナル・データベース・テーブルに保管されている情報を編成して、データの重複を最小限にすること) でも、ある程度の垂直パーティショニングを行います。典型的な垂直パーティショニングでは、頻繁には使用されない列や、非常に幅の広い列を別のデバイスに保管するという例、検索しにくい動的データを簡単に検索できる静的データから分離するという例があります。
  • 水平パーティショニング (シャーディングはその一例です) では、さまざまな行を複数のテーブルに分割します。例えば、列エントリー「Age (年齢)」の値が 50 以上であるすべての行を一方のテーブルに入れ、49 以下であるすべての行をもう一方のテーブルに入れます。この場合、すべての行は 50 才以上のテーブルとそれよりも若い年齢のテーブルの 2 つに分けられます。

水平パーティショニングは一般に、例えば東と西、高と低などのデータベース・スキーマごとに 1 つのパーティションを使用することを意味します。一方、シャーディングは、スキーマごとに複数の行パーティションを使用することを意味します。

シャーディングによって行がシャードに分割されると、そのシャードは場所を問わず、単独で存在することも、別の論理スキーマ・インスタンス、別の物理データベース・サーバー、または別のデータ・センターに存在することもできます。したがって、単純な水平パーティショニングとは異なり、複数のサーバー間でデータを簡単に複製することができます。

シャーディングは索引のサイズを小さくすることから、検索のパフォーマンスが向上することになります。シャードは複数のマシンに分散されるため、データベースのパフォーマンス要件も個々のマシンに分散されます。つまり、検索のパフォーマンス・レベルが高くなるということです。さらに、シャードが実際のデータ・セグメント (「属性 A」対「属性 B」) に基づいていれば、照会する必要があるシャードを簡単に推測できるので、他のシャードを照会する分の時間を節約することができます。

シャーディングの弱点としては、サーバーの相互接続に大きく依存すること、複数のシャードを照会しなければならない場合 (またはデータあるいは索引が一律にシャーディングされているだけの場合) は待ち時間が長くなること、サーバーの障害モードの違いから、シャードの一貫性を保証できないことが挙げられます。また、データベースをシャーディングしてから最適化するとなると、手に負えないほど複雑になります。

データベースをシャーディングするという決定は、真剣に考えなければなりません。この決定は、他の最適化手法を使い尽くしてから行うべきです。シャーディングには、以下の覚悟が伴います。

  • データを検索するために作成するクエリーが、より複雑なものになることが想定されます。
  • ハードウェアやネットワークの問題が原因で 1 つのシャードが壊れた場合、単一障害点に対処しなければならない可能性が出てきます。つまり、テーブル全体に障害が発生する可能性があります。
  • フェイルオーバー・サーバーにデータベース・シャードのコピーがあることを確実にしなければなりません。
  • すべてのシャードのバックアップを調整する必要があります。
  • 索引および列の追加と削除に要する時間も、データベース・スキーマの変更に要する時間も長くなる可能性があります。

Software-Defined Storage を実装する方法

Software-Defined Storage (SDS) とは、コンピューター・データ・ストレージ・ソフトウェアが、ハードウェアとは無関係に、ポリシー・ベースのプロビジョニングとストレージ・タスクを管理する役割を担う方法です。SDS では通常、何らかの形のストレージ仮想化ツールを組み込んで、ストレージ・ハードウェアをソフトウェアから切り離します。SDS がどのようなものであるかは、SDS が持つ一般的な特徴のいくつかによって一層明確になります。

  • SDS は、論理ストレージ・サービスを物理ストレージ・システムから抽象化します。
  • 互いに異なる可能性がある複数の実装の間で、リソースをプールすることができます。
  • ストレージ仮想化、仮想ボリューム、ストレージとの対話用 API、またはパラレル NFS などの抽象化ツールを使用することができます。
  • ストレージ・ロジックをソフトウェア・レイヤーに抽象化することで、一般商品化されたハードウェアを使用することができます。
  • 水平スケーリング・アーキテクチャーを採用できます (これにより、さらに多くのノードがシステムに追加されます)。

SDS には通常、重複排除、複製、シン・プロビジョニング、スナップショット、バックアップといったタスクを管理するための方法があります。

SDS には、以下の 3 つの重要な特性が備わっていなければなりません。

  • 仮想化されたポリシー・ベースのストレージ・サービス (エラスティック (弾力的) なパフォーマンスとキャパシティーを含む)、マルチテナント・サービスの分離、SAN および NAS へのアクセス、ストレージの効率性、統合されたデータ保護
  • 最適化された SAN および NAS アレイ、既存のストレージ・アレイを仮想化するためのゲートウェイ、クラウドおよびハイブリッド・クラウド用に設計されたストレージ・サービス、一般商品化されたサーバー・ディスクなどの広範なストレージ・オプション
  • テナントがアプリケーションを作成してワークフローを自動化するために使用できる、オープンでプログラム可能な API とアプリケーション・セルフ・サービス

SDS のオペレーション・モデルは、仮想データ・プレーンと、ポリシー駆動型制御プレーンで構成されます。

  • 仮想データ・プレーンの役割は、データを保管し、データ・サービス (複製やキャッシングなど) を適用することです。このデータ・プレーンは、物理ハードウェア・リソースを分離し、これらのリソースを使用および管理できるよう、論理プールに収集することによって仮想化されます。仮想ディスクを、ストレージのオペレーションを管理する上での基本単位にすると、仮想マシンごとに独立してリソースの組み合わせとデータ・サービスを構成、制御することができます。
  • 制御プレーンは、アプケーションとインフラストラクチャーをつなぐブリッジであり、ストレージのさまざまな層で標準化された管理および自動化を行います。制御プレーンは、ポリシー (スクリプトおよびクラウド自動化ツール) を制御するために使用するパブリック API を介してプログラミングすることができます。したがって、テナントは独自の方法でストレージを利用することができます。ストレージ・サービス・クラスは論理エンティティーとして扱われ、ソフトウェアによって完全に制御することも、ポリシーによって解釈することもできます。この種の自動化では、仮想マシンごとの個々のサービス・レベルを動的に制御することが可能です。

新しいデータ世界の到来

データ・ストレージは、もはやウェアハウジングの問題ではありません。至るところにデータが存在する新しい世界では、暗黙のうちにデータの検索や、データへのアクセス、データの利用を効率的に行える方法が潜在しています。これらのデータの (「ほとんど」ではないにしても) 多くはクラウド上に存在するか、クラウドから提供されるため、この成功への重要な懸け橋 ― つまりデータを利用する能力 ― を最適化して、皆さんの一連の知識の中でこの懸け橋が弱くならないようにする方法を今こそ学ぶときです。この目標を達成するためのツールとして利用できるのが、データおよびデータベースを最適化し、ソフトウェア・レイヤーから仮想データ・ストレージを管理できるようにする手法とソフトウェアなのです。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Information Management
ArticleID=1007855
ArticleTitle=クラウドのデータ・ストレージを最適化する
publish-date=06182015