OpenStackのブロックストレージ「Cinder」の押さえておきたい機能OpenStack環境のストレージ選定ポイント【第1回】

OpenStackのブロックストレージ機能である「Cinder」は、OpenStackの企業利用に欠かせないコンポーネントだ。Cinderを中心に、ストレージ関連コンポーネントについて解説する。

2015年05月29日 08時00分 公開
[木島 亮伊藤忠テクノソリューションズ]
OpenStackのストレージ関連コンポーネント《クリックで拡大》

 一般企業での「OpenStack」採用検討が本格化しているようだ。実際に検証実施まではいかなくとも、相談の件数は着実に増えてきている。OpenStackが着目されている理由としては、アジリティ(俊敏性)、コスト削減、新規技術の採用、ベンダーロックイン回避などが挙げられる。その中でもアジリティについては一般企業も重要視し始めている。一般企業のITシステムも、追加/拡張/縮小をより短時間で行うことが求められてきているからだ。また、海外では米VMware製品からOpenStackに乗り換えるユーザー事例(米PayPalなど)も出てきている。国内市場においても、サーバ仮想化は本格的な普及期に入っている中、次期リプレースを見据えて、OpenStackは今から注目すべき技術トピックといえるだろう。

 本連載「OpenStack環境のストレージ選定ポイント」では、OpenStack環境のインフラとして、ストレージに着目して選定のポイントを紹介する。最終ゴールは、OpenStackを導入する際のストレージ製品の選定ポイントを明確化することである。本題に入る前に、今回はOpenStackのストレージ関連コンポーネントについての理解を深め、次回では各ストレージベンダーの取り組み、独自性を紹介したい。

 今回の内容は下記の通りである。

  • OpenStackに適したストレージはOSS? それとも商用ストレージ?
  • OpenStackのストレージ関連コンポーネント
  • Cinderを深く理解しよう

OpenStackに適したストレージはOSS? それとも商用ストレージ?

 OpenStackは多数のコンポーネントが連係して動作する。その中でも、ベンダーの開発貢献度や、インターネット記事の豊富さなどを見ると、サーバ管理(Nova)、ネットワーク管理(Neutron)に注目が集まっていることは疑う余地がない。ただ、最も重要なはずのデータを保持するためのストレージ観点でまとめられた情報はあまり存在しない。

 「OpenStack」と「ストレージ」のキーワードでインターネット検索すると、SwiftやCephなどオープンソースソフトウェア(OSS)の記事ばかりが目立つように思える。OpenStack自体もOSSだが、サポート付きのディストリビューションという形での提供にも注目が集まっている。データを格納するストレージも、果たして本当にOSSでいいのだろうか? トラブルが発生した際に、ソースコードから原因を究明し、修正/解決できるのであればいいかもしれない。しかし、今後、一般の企業でOpenStackが利用されることを考えると、ベンダーが提供するサポートが充実している商用ストレージの使用が進むと考えられる。ストレージに関わるOpenStackのコンポーネントは多く、データの格納先に使用できるストレージの種類もOSSや商用製品など多岐にわたる。OpenStackの利用用途、利用者の業種やスキルによっても向き不向きがある。OSSが商用製品の全てを置き換えることにならなかったのと同様に、OpenStack環境でもOSSとベンダーストレージの選択が適材適所で行われていくことになるだろう。

 ストレージを選定するに当たっての事前準備として、ストレージ関連のコンポーネントとそれらの機能について見ていこう。

OpenStackのストレージ関連コンポーネント

 OpenStackのストレージに関連するコンポーネントといえば、真っ先にSwift、Cinderを思い描く方は多いと思う。だが、それら以外にNovaやGlanceもデータの格納先(バックエンドストレージ)に外部ストレージを使用できる。そういう意味ではNova、Glanceも広い意味でストレージ関連コンポーネントといえるだろう。

図1 OpenStackのストレージ関連コンポーネント《クリックで拡大》

 OpenStackをデフォルトの設定で構築すると、各ストレージ関連コンポーネントのバックエンドストレージは、サーバの内蔵ディスクのディレクトリやLVMのボリュームが使用される。だが機能面や性能面から、その他のストレージを使用することも可能だ。以下にそれぞれのコンポーネントの動作を記述する。

Novaコンピュートノード

 Novaコンピュートノードのバックエンドストレージは、ローカルストレージ、NFSストレージ、Cephなどから選択可能である。これらの領域はエフェメラルストレージ領域と呼ばれ、仮想マシンインスタンスのOSが格納される。ただ、インスタンスを終了すると、データが消失する。

 インスタンスを作成すると、OSイメージを保持しているGlanceからNovaコンピュートノードにデータがコピーされる。採用するストレージによっては、データのコピーがネットワーク経由で行われるのではなく、ストレージ側にオフロードできる。オフロードできるとOpenStackを構成する各サーバ間のネットワークを経由してデータを転送するのではなく、ストレージの機能を使用してストレージ内やストレージ間でデータを転送できるため、効率が良い。

図2 Novaコンピュートノード、Cinder、Glance間のデータコピー動作《クリックで拡大》

Glance

 GlanceはインスタンスのOSイメージとスナップショットの保持、管理を行う。バックエンドストレージは、ローカルストレージ、NFSストレージ、Ceph、Swiftなどが選択可能である。

 GlanceのイメージからCinderのボリュームを作成し、そのボリュームからのインスタンスを起動することも可能だ。それにより、OS領域も永続的に保持することが可能になり、Novaコンピュートノード障害時もOS領域を保護することが可能になる。

Swift

 SwiftはOpenStackの1つのコンポーネントというより、Glanceのイメージ保存先、Cinderボリュームのバックアップ先など、コンポーネントのバックエンドに配置できるストレージの1つと理解する方が分かりやすい。Swiftは公開されている情報が多いので、詳細については本稿では割愛する。

Cinderを深く理解しよう

Cinderとは

 Cinderはインスタンスに永続的なブロックストレージを提供するコンポーネントだ。Cinderで作成されたボリュームはインスタンスのOSからブロックデバイスとして認識され、ファイルシステムの作成、マウントが可能である。ただし、CinderのバックエンドストレージがSANストレージである必要はなく、NASも使用可能であることには注意されたい。バックエンドストレージには、LVM、NFSストレージ、各ベンダーのNAS、SANストレージおよび分散ストレージが設定できる。

 各ストレージのCinderドライバはOpenStackに含まれており、一般的には別途インストールは不要である。だが、有償サポートを購入することで機能追加されたドライバを提供しているベンダーもある。そのドライバを検証したい場合は、別途ベンダーと調整する必要がある。

Cinder機能一覧

 Cinderは機能が多く、バージョンアップの度に頻繁に機能追加が行われている。下記の情報を基に、機能一覧を書き出してみた。

  • cinderコマンドのヘルプ
  • Cinderサポートマトリックス
  • OpenStackのリリースノート(Cinderの項目)

・cinderコマンドのヘルプ

 「cinder --help」の出力から代表的なオプションをまとめたものである。なお、インスタンスへのボリュームのアタッチ、デタッチはnovaコマンドで行う。表内の「xxx」の表記は複数の関連オプションを便宜上まとめて表示している。

表1 cinderコマンドの代表的なオプション
コマンドのオプション 意味
create、rename、delete、extend、list 基本操作(作成、リネーム、削除、拡張、一覧表示)
metadata-xxx メタデータ設定
extra-spec-list、type-xxx ボリュームの種別(Volume Type)設定
quota-xxx クォータ設定
qos-xxx QoS設定
encryption-xxx 暗号化の設定
snapshot-xxx スナップショットの操作
backup-xxx バックアップの操作
migrate-xxx マイグレーションの操作
transfer-xxx 転送の操作

・Cinderサポートマトリックス

図3 Cinderサポートマトリックス《クリックで拡大》

 「Cinderサポートマトリックス」では、Cinderの全機能について網羅されているわけではないが、各ベンダーのストレージとCinderの機能が、どのOpenStackのバージョンからサポートされるかを一覧で確認できる。内容については、各ベンダーが自己申告で書き込んでいるようだ。同じ「サポート」でも、機能差がある可能性がある。2015年3月時点では無かったQoSの列が現在は追加されている。今後も機能名の列は追加されていくと思われる。

・OpenStackのリリースノート(Cinderの項目)

 OpenStackの各バージョンのリリースノートを確認すると、Cinderの機能追加、改善について記載されている。以下にリリースノートへのリンクを記載する。

https://wiki.openstack.org/wiki/ReleaseNotes/Folsom#OpenStack_Block_Storage_.28Cinder.29
https://wiki.openstack.org/wiki/ReleaseNotes/Havana/ja#OpenStack_Block_Storage_.28Cinder.29
https://wiki.openstack.org/wiki/ReleaseNotes/Icehouse/ja#OpenStack_Block_Storage_.28Cinder.29
https://wiki.openstack.org/wiki/ReleaseNotes/Juno/ja#OpenStack_Block_Storage_.28Cinder.29
https://wiki.openstack.org/wiki/ReleaseNotes/Kilo/ja#OpenStack_Block_Storage_.28Cinder.29

Cinder各機能の動作

 Cinderの基本的かつ重要な下記の機能について、動作と用途を紹介する。

  • ボリュームの種別(Volume Type)
  • スナップショット
  • バックアップ
  • マイグレーション
  • 転送(transfer)
  • レプリケーション
  • コンシステンシーグループ
  • QoS(Quality of Service)

 極力、動作確認を行った上での筆者の理解を図式化して紹介しているが、全ての機能について動作確認は行えてはいない。公開されている複数の情報を基に、記述している箇所もある。そのため、使用されるOpenStackのバージョンで想定通りの動作が行われるかは、実際の環境での検証をお願いしたい。

1.ボリュームの種別(Volume Type)

 管理者はボリュームに種別(Volume Type)を定義することができる。ユーザーはボリュームを作成する際に、種別を選択できる。ユーザーは、QoS、シン/シック、重複排除/圧縮の有無などを指定してボリュームを作成できる。ただし、どのような設定が可能かは、ストレージの機種とCinderドライバの実装に依存する。

 複数ストレージをバックエンドに設定する際にも使用する概念である。下記のように、cinder.confを設定することで、GUIよりボリューム作成時に指定できる。

…<省略>…
enabled_backends=ceph,netapp
[ceph]
volume_backend_name=ceph
…<省略>…
[netapp]
volume_backend_name=netapp
…<省略>…
cinder.confの例
# cinder type-create netapp
# cinder type-create ceph
# cinder type-key netapp set volume_backend_name=netapp
# cinder type-key ceph set volume_backend_name=ceph
# cinder extra-specs-list
…<省略>…
ボリュームの種別 設定コマンドの例
図4 管理者はボリュームに、タイプ(種別)を定義できる。ユーザーはボリュームを作成するときに種別を選択できる

2.スナップショット

 Cinderのスナップショットは、同一バックエンドストレージ内でボリュームのスナップショットが取得される。使用するストレージによっては、ストレージ機能のスナップショットまたはクローンが実行される。通常はスナップショットからは直接リストアできず、スナップショットからボリュームを作成する必要がある。しかし、ベンダーストレージによっては、直接リストアができるものもある。

図5 スナップショットの動作《クリックで拡大》

3.バックアップ

 バージョンGrizzlyでボリュームをSwiftにバックアップする機能が追加された。スナップショットは同一バックエンドストレージ内で取得されるが、バックアップは別のバックエンドストレージに保存される。現在は常にフルバックアップの動作になる。保存先はSwiftの他、Ceph、「IBM Tivoli Storage Manager」(TSM)、NFSストレージが指定可能だ。

図6 バックアップの動作《クリックで拡大》

4.マイグレーション

 マイグレーションは、バックエンドストレージ間でボリュームを移行する機能だ。ストレージのメンテナンス/リプレース時に使用できる。ストレージ間(ストレージ内)で移行できるStorage assisted migrationと、ホストを経由するHost assisted migrationがある。前者をサポートしているストレージの方が効率は良いといえる。

図7 マイグレーションの動作《クリックで拡大》

5.転送(transfer)

 転送(transfer)は、OpenStackのテナント間でボリュームを移動する機能である。用途はボリューム修復サービスや、データインポートサービスなどが考えられる。(図8ではテナントBがサービス提供ベンダー想定)

図8 転送(transfer)の動作《クリックで拡大》

6.レプリケーション

 レプリケーションは、米IBMが開発した機能だ。Cinderのボリューム種別により、レプリケーションの有効/無効を設定できる。現在は、IBMのストレージでのみサポートされる。

7.コンシステンシーグループ

 コンシステンシーグループは、ボリューム間の整合性を確保しながら、データの保護(スナップショット、バックアップ、レプリケーション)が可能になる機能だ。米EMCが本機能を開発した。バージョンKiloでEMC以外のストレージでも対応され始めている。

8.QoS(Quality of Service)

 QoSは、インスタンスの性能保証を実現する機能である。ストレージが本機能を有していることに加え、Cinderドライバが対応している必要がある。現在は、数種類のベンダーストレージが対応しているようだ。大規模なクラウドサービスの基盤をOpenStackで構築する際は必要になる。

コラム:Cephは万能ストレージか?

 Cephは、OpenStackの各コンポーネントのバックエンドストレージの全てを兼任させることができる。各コンポーネントからCephへのアクセス経路は下記の通りだ(Cephの機能概要や構成要素については、本家のWebサイトを参考にしてほしい)。

図9 OpenStackの各コンポーネントからCephへのアクセス経路《クリックで拡大》

 データのコピーをCeph内にオフロードできるメリットはある。ただ、Cinderのバックアップ先を同じCeph内に取得することは、本当の意味でバックアップにはならない。そもそも、大事なデータをOSSに保存しても大丈夫かというサポート面での不安は残る。


 OpenStackはOSSのため、機能追加にドキュメント整備が追いついておらず、リリースノートに記載のある機能でも設定が不明確なものもある。新機能として記載があっても、コマンドやOpenStackのGUI(Horizon)のどちらにも実装されていない場合がある。実際に機能が存在し、正しく動作するかは、APIの理解やソースコードレベルでの確認が必要である。また、ストレージにシンプロビジョニングやQoSの機能があっても、ボリューム種別で指定しCinderから使用できるかは実環境にて確認する必要がある。今後も、進化の早いCinderの機能追加や、各ベンダーの取り組みは引き続きウオッチする必要がある。

 今回は、OpenStackのストレージ関連のコンポーネントと、Cinderの機能、動作について紹介した。次回以降、主要ベンダーの取り組み状況、各社ストレージの機能比較とストレージ選定ポイントについて解説する予定である。ぜひ最後までお付き合いいただきたい。

木島 亮(きじま りょう)

伊藤忠テクノソリューションズ

ITサービス事業グループ 製品・保守事業推進本部 ITインフラ技術推進第1部 ストレージ技術推進課

画像

2002年、伊藤忠テクノソリューションズ(CTC)入社。
HAクラスタやLinuxの担当を経て、現在、ストレージ/バックアップを担当する。
2008年から、仮想環境上のデータ保護や可用性ついて、案件支援や技術検証、セミナーを実施し、社内外への啓蒙を行っている。
趣味はウォーキング。12カ月で22キロやせました。


ITmedia マーケティング新着記事

news136.png

ジェンダーレス消費の実態 男性向けメイクアップ需要が伸長
男性の間で美容に関する意識が高まりを見せています。カタリナ マーケティング ジャパン...

news098.jpg

イーロン・マスク氏がユーザーに問いかけた「Vine復活」は良いアイデアか?
イーロン・マスク氏は自身のXアカウントで、ショート動画サービス「Vine」を復活させるべ...

news048.jpg

ドコモとサイバーエージェントの共同出資会社がCookie非依存のターゲティング広告配信手法を開発
Prism Partnerは、NTTドコモが提供するファーストパーティデータの活用により、ドコモオ...