blog

OpenStackから見たブロックストレージの世界

この記事はブロック・ストレージ・サービスに焦点を当てています。現在主流のブロック・ストレージ・サービス・プロバイダーとオープン・ソースのブロック・ストレージ・ソフトウェアを簡単に分析し、ブロック・スト...

Oct 9, 2013 · 9 min. read
シェア

ブロック・ストレージとは、簡単に言えば、ブロック・デバイス・ストレージへのインタフェースを提供するものです。ユーザーはブロック・ストレージ・ボリュームを仮想マシンやベアメタルにアタッチして操作する必要があります。これらのボリュームは永続的で、実行中のインスタンスからアタッチ解除や再アタッチが可能で、データはそのまま残ります。

この記事では、ブロックストレージサービスに焦点を当てます。現在主流のブロック・ストレージ・サービス・プロバイダーとオープン・ソースのブロック・ストレージ・ソフトウェアを簡単に分析し、ブロック・ストレージの開発に携わるエンジニアがブロック・ストレージをグローバルに理解できるようになることを期待しています。

以下では、ブロック・ストレージの最初の印象を構築するために、一般的なスタンドアロン・ブロック・デバイス・ツールの説明から始めます。

スタンドアロン・ブロック・ストレージ

まず、ハードディスクはブロックデバイスです。カーネルがハードディスクを検出すると、/dev/の下に/dev/sda/が表示されます。ハードディスクで異なることをするために異なるパーティションを取得するには、fdiskツールを使って/dev/sda1、/dev/sda2などを取得します。パーティションテーブルに直接書き込むことでハードドライブを指定しスライスするこの方法は、パーティション分割の最も厳格な方法です。

1.LVMとDevice-mapper

汎用スレッド:Linux LVMの学習、パート1

汎用スレッド:Linux LVMの学習、パート2

LVMは、Device-mapperユーザプログラムの実装に基づいています。Device-mapperは、論理ボリューム管理をサポートし、ストレージリソース管理のためのブロックデバイスドライバに高度にモジュール化されたカーネルアーキテクチャを提供する汎用デバイスマッピング機構です。以下のリンクは、Device-mapperアーキテクチャの優れた説明です:

Linux カーネルにおけるデバイスマッパーのメカニズム

2.SANとiSCSI

スタンドアロンでの論理ボリューム管理に触れた後は、今日のエンタープライズクラスの主流であるSAN理解する必要があります。

ほとんどのSANはSCSIサーバとストレージデバイス間の伝送と通信を行います。 SCSIの上に異なるイメージレイヤを確立することで、ストレージネットワーク接続を実現できます。一般的なものは、iSCSI、FCP、Fibre Channel over Ethernetです。

iSCSIはTCP/IPベースのSCSIマッピングで、iSCSIプロトコルとLinux iSCSIプロジェクトを通じて、一般的なPC上にSANストレージを構築することができます。

上記はすべて、頻繁に遭遇するスタンドアロン・ブロック・ストレージです。次に、本記事で共有する主なポイントとして、パブリック・クラウド・テクノロジー・サービスが提供するブロック・ストレージ・サービス、オープン・ソースのブロック・ストレージ・フレームワーク、OpenStackの現在のブロック・ストレージの定義とサポートについて説明します。

分散ブロックストレージ

高度に弾力的なストレージのニーズとパフォーマンス要件に直面し、スタンドアロンまたは独立したSANでは企業のニーズを満たせないケースが増えています。データベースシステムと同様に、ブロックストレージもスケールアップのボトルネックに直面してスケールアウトの必要性に直面しています。分散ブロック・ストレージ・システムのコンセプトを説明するには、次のような特徴があります:

  1. 分散ブロック・ストレージは、あらゆる物理マシンや仮想マシンに永続的なブロック・ストレージを提供できます。
  2. 分散ブロック・ストレージ・システムがブロック・デバイスの作成、削除、アタッチ/デタッチを管理
  3. 分散ブロック・ストレージは、強力なスナップショット機能をサポートしています。
  4. 分散ストレージ・システムは、異なるIO性能要件を持つブロック・デバイスを提供することができます。

3.1 Amazon EBS

Amazon EC2は現在、ほとんどの点で他のIaaSプロバイダーよりはるかに進んでいます。Amazon EC2の製品説明は、Amazon EC2を理解するための簡単な近道です。

EBSはAmazonが提供するブロックストレージサービスです。EBSを使用すると、ユーザーはいつでもボリュームとスナップショット操作を追加、削除、移行することができます。

Amazon EC2インスタンスは、ルートデバイスのデータをAmazon EBSまたはローカルインスタンスストレージのいずれかに保存できます。Amazon EBSを使用する場合、ルートデバイスのデータはインスタンスのライフサイクルとは無関係に保持されるため、シャットダウンして再び必要になったときに再起動するラップトップコンピュータのように、インスタンスが停止した後でもインスタンスを再起動して使用することができます。一方、ローカル・インスタンス・ストレージは、インスタンスの有効期間のみ保持されます。データがルート・デバイスに保存されないため、これはインスタンスを開始する経済的な方法です。

Amazon EBSには、標準ボリュームと設定済みIOPSボリュームの2種類があります。それぞれ性能特性と価格が異なるため、アプリケーションの要件と予算に応じて必要なストレージ性能をカスタマイズできます。

標準ボリュームは、中程度またはバースト的なI/Oを必要とするアプリケーション用のストレージです。これらのボリュームは、平均約100 IOPSを提供し、最大数百 IOPSまでバーストできます。標準ボリュームは、インスタンスの高速起動時間を提供するバースト機能を備えたブートボリュームとしての使用にも適しています。

構成済みIOPSボリュームは、データベースなどのI/O集約的なランダム読み取りおよび書き込み負荷に対して、予測可能な高性能を提供するように設計されています。ボリュームを作成すると、事前構成済みIOPSを使用してボリュームのIOPSレートが決定され、Amazon EBSはボリュームの有効期間中そのレートを提供します。Amazon EBSは現在、事前構成済みIOPSボリュームごとに最大4000 IOPSをサポートしています。

EBSは、ボリュームが接続され使用されている間、リアルタイムでスナップショットを取得できます。ただし、スナップショットはAmazon EBSボリュームに書き込まれたデータのみをキャプチャでき、アプリケーションまたはオペレーティングシステムによってローカルにキャッシュされたデータは含まれません。インスタンスに接続されたボリュームの一貫したスナップショットを確実に取得する必要がある場合は、ボリュームを完全に切断し、スナップショットコマンドを発行してからボリュームを再接続する必要があります。

EBSスナップショットはリージョンをまたいで増分的にバックアップできるようになったため、EBSスナップショット時間が大幅に短縮され、EBS利用のセキュリティが相手側から向上します。

全体として、Amazon EBSは今日のIaaSプロバイダーによって導入された最も注目されるサービスの1つであり、OpenStack、CloudStackなどの他の現在のオープンソースフレームワークは、Amazon EBSの弾力性とパワーを提供することはできません。Amazon EBSを理解し使用することは、IaaSブロックストレージについて学ぶ最良の手段です。

クラウドホスティングのアップグレードは、クラウドホスティングパッケージの有効期限が翌月に切れた場合にのみ有効になります。

1台のクラウドホストがバインドできるクラウドディスクは3台までです。

4.1 Ceph

Cephは、ペタバイトスケールの分散ファイルシステムのオープンソース実装であり、その分散オブジェクトストレージメカニズムは、ファイルインタフェース、ブロックストレージインタフェース、オブジェクトストレージインタフェースの上位レイヤを提供します。

Cephが提供するRULESを使用して、ストレージポリシーとプールの選択を弾力的に策定できます。クラスタ管理システムとしてのMonitorは、すべてのクラスタマップをマスターし、マップがない場合のクライアントは、まずMonitorに取得を要求し、対応するOSDサーバのオブジェクトIDの計算を介して取得する必要があります。

Cephは従来のPOSIXファイルインターフェースをサポートしているため、ファイルメタデータをサポートするために追加のデータシートが必要です。Cephはデータとメタデータを2つのサービスに分離しているため、Lustreなどの従来の分散システムと比較してスケーラビリティを大幅に向上できます。小さなファイルの読み取り/書き込みでは、Cephの読み取り/書き込みファイルには[RTT*2]がかかり、各オープンでは、メタデータサーバにクエリに1回行き、その後オブジェクトサーバに行きます。Cephが悪いのはメタデータだけではありません。メタデータサーバを経由することで、ディレクトリリストのようなディレクトリ操作は非常に高速になり、GlusterFSのような他の分散ファイルシステムのディレクトリやファイルのメタ操作をはるかに超えます。

Cephをブロックストレージプロジェクトとして使用する場合、考慮すべき問題がいくつかあります:

  1. Cephは読み取りと書き込みの安定性が低いです。現在、Cephは基盤となるファイルシステムとしてXFSを公式に推奨しています。
  2. Cephはスケーリングが難しく、Cephに関わる必要がある場合は時間がかかります。
  3. Cephは展開が簡単ではなく、クラスタも十分に安定していません。

4.2 シープドッグ

Sheepdogはもう1つの分散ブロックストレージシステムの実装です。Cephと比較して、Sheepdogの最大の利点は、コードが短く保守しやすいこと、ハックコストが非常に小さいことです。Sheepdogには、マルチディスク、クラスタ全体のスナップショットなど、Cephがサポートしていない機能も多数あります。

Sheepdogは、2つの主要な部分、1つは、クラスタ管理であり、もう一つは、ストレージサービスです。クラスタ管理は、現在CorosyncまたはZookperを完了するために使用している、そのストレージサービスは、クライアントとストレージホストによって特徴付けられるキャッシュの実装では、大幅にデータトラフィックを削減することができます。

現在、SheepdogはQEMU側のDriveしか提供しておらず、ライブラリのサポート不足が現在のSheepdogの主な問題です。しかし、コミュニティには既にこの問題を議論する関連ブループリントがあります。

シープドッグに関する情報をご覧ください:

タオバオは現在、シープドッグのメインユーザーであり、コミュニティへの貢献者です。

5.シンダー

OpenStack Novaはコンピュートサービス、Swiftはオブジェクトストレージサービス、Quantumはネットワークサービス、Glanceはイメージサービス、Cinderはブロックストレージサービス、Keystoneは認証サービス、Horizonはダッシュボードです。サービス、Horizonはダッシュボードで、他にもHeat、Oslo、Ceilometer、Ironicなどのプロジェクトがあります。

OpenStackのストレージは大きく3つのカテゴリーに分けられます:

オブジェクト・ストレージ・サービス, Swift

ブロックデバイスストレージサービスは、主に仮想マシンのストレージを「ハードディスク」として提供するサービスです。これは2つのブロックに分かれています:

  • ローカル・ブロック・ストレージ
  • 分散ブロックストレージ,Cinder

データベースサービスは、現在インキュベート中のプロジェクトTrove、以前はRackspaceのRedDwarfオープンソースで、AWS内のRDCに対応しています。

CinderはOpenStackでEBSのようなブロックストレージサービスを提供するためのAPIフレームワークです。ブロックデバイスの管理や実際のサービスは実装していませんが、バックエンドの様々なストレージ構造に対して統一されたインターフェイスを提供します。 様々なブロックデバイスサービスベンダーがOpenStackと統合するためにCinderにドライバサポートを実装しています。バックエンドのストレージは、DAS、NAS、SAN、オブジェクトストレージ、分散ファイルシステムなどです。つまり、Cinderのブロックストレージデータの整合性と可用性の保証は、バックエンドストレージによって提供されます。NetAPP、IBM、SolidFire、EMC、そして多くのオープンソースのブロックストレージシステムなど、多くのストレージベンダーからのCinderのサポートは、CinderSupportMatrixで見つけることができます。

上の図からもわかるように、Cinderは単に抽象化のレイヤーを提供し、バックエンドでサポートされるドライバの実装を通じて応答するコマンドを発行します。ブロックストレージの割り当てやオプションの設定などの情報は、OpenStackユニファイドDBに格納されます。

概要

分散ブロックストレージの実装は依然としてAmazon EBSがリードしており、優れた安定した読み取りと書き込みのパフォーマンス、強力な増分スナップショットとクロスリージョンブロックデバイスマイグレーション、そしてオープンソースや他の商用実装の追随を許さない驚異的なQoSコントロールを備えています。

emcは1ヶ月前にViPRプラットフォームをリリースし、他のベンダとオープンソースの実装を受け入れる試みでそのインターフェースをオープンしました。Nexenta はプロプライエタリな SDN 機能しか持たないソフトウェアをその上に実装することで、伝統的なストレージのプロプライエタリなハードウェアを破壊しています。 Inktank は必死に OpenStack を統合し、OpenStack コミュニティにおける Ceph の影響力を促進しようとしています。これら全ては、現在のストレージベンダーとオープンソースコミュニティの両方が分散ブロックストレージの発展を促進しようとしていること、そしてストレージプロプライエタリデバイスの限界が本来のエンタープライズストレージアーキテクチャを更に弱体化させていることを示しています。

分散ブロック・ストレージとOpenStackをより強固に結びつけ、企業のプライベート・クラウド・プラットフォーム上でブロック・ストレージの統合とO&Mを改善することができます。

Read next

VDIでセッションのロードバランシングを実装する方法

VDIロードバランシングの2つの主要なタイプの1つは、VDIでサーバロードバランシングを実装する方法で説明しましたが、これはVDIでセッションロードバランシングを実装する方法に続きます。

Oct 9, 2013 · 2 min read