OpenStackのブロックストレージ機能である「Cinder」は、OpenStackの企業利用に欠かせないコンポーネントだ。Cinderを中心に、ストレージ関連コンポーネントについて解説する。
一般企業での「OpenStack」採用検討が本格化しているようだ。実際に検証実施まではいかなくとも、相談の件数は着実に増えてきている。OpenStackが着目されている理由としては、アジリティ(俊敏性)、コスト削減、新規技術の採用、ベンダーロックイン回避などが挙げられる。その中でもアジリティについては一般企業も重要視し始めている。一般企業のITシステムも、追加/拡張/縮小をより短時間で行うことが求められてきているからだ。また、海外では米VMware製品からOpenStackに乗り換えるユーザー事例(米PayPalなど)も出てきている。国内市場においても、サーバ仮想化は本格的な普及期に入っている中、次期リプレースを見据えて、OpenStackは今から注目すべき技術トピックといえるだろう。
本連載「OpenStack環境のストレージ選定ポイント」では、OpenStack環境のインフラとして、ストレージに着目して選定のポイントを紹介する。最終ゴールは、OpenStackを導入する際のストレージ製品の選定ポイントを明確化することである。本題に入る前に、今回はOpenStackのストレージ関連コンポーネントについての理解を深め、次回では各ストレージベンダーの取り組み、独自性を紹介したい。
今回の内容は下記の通りである。
OpenStackは多数のコンポーネントが連係して動作する。その中でも、ベンダーの開発貢献度や、インターネット記事の豊富さなどを見ると、サーバ管理(Nova)、ネットワーク管理(Neutron)に注目が集まっていることは疑う余地がない。ただ、最も重要なはずのデータを保持するためのストレージ観点でまとめられた情報はあまり存在しない。
「OpenStack」と「ストレージ」のキーワードでインターネット検索すると、SwiftやCephなどオープンソースソフトウェア(OSS)の記事ばかりが目立つように思える。OpenStack自体もOSSだが、サポート付きのディストリビューションという形での提供にも注目が集まっている。データを格納するストレージも、果たして本当にOSSでいいのだろうか? トラブルが発生した際に、ソースコードから原因を究明し、修正/解決できるのであればいいかもしれない。しかし、今後、一般の企業でOpenStackが利用されることを考えると、ベンダーが提供するサポートが充実している商用ストレージの使用が進むと考えられる。ストレージに関わるOpenStackのコンポーネントは多く、データの格納先に使用できるストレージの種類もOSSや商用製品など多岐にわたる。OpenStackの利用用途、利用者の業種やスキルによっても向き不向きがある。OSSが商用製品の全てを置き換えることにならなかったのと同様に、OpenStack環境でもOSSとベンダーストレージの選択が適材適所で行われていくことになるだろう。
ストレージを選定するに当たっての事前準備として、ストレージ関連のコンポーネントとそれらの機能について見ていこう。
OpenStackのストレージに関連するコンポーネントといえば、真っ先にSwift、Cinderを思い描く方は多いと思う。だが、それら以外にNovaやGlanceもデータの格納先(バックエンドストレージ)に外部ストレージを使用できる。そういう意味ではNova、Glanceも広い意味でストレージ関連コンポーネントといえるだろう。
OpenStackをデフォルトの設定で構築すると、各ストレージ関連コンポーネントのバックエンドストレージは、サーバの内蔵ディスクのディレクトリやLVMのボリュームが使用される。だが機能面や性能面から、その他のストレージを使用することも可能だ。以下にそれぞれのコンポーネントの動作を記述する。
Novaコンピュートノードのバックエンドストレージは、ローカルストレージ、NFSストレージ、Cephなどから選択可能である。これらの領域はエフェメラルストレージ領域と呼ばれ、仮想マシンインスタンスのOSが格納される。ただ、インスタンスを終了すると、データが消失する。
インスタンスを作成すると、OSイメージを保持しているGlanceからNovaコンピュートノードにデータがコピーされる。採用するストレージによっては、データのコピーがネットワーク経由で行われるのではなく、ストレージ側にオフロードできる。オフロードできるとOpenStackを構成する各サーバ間のネットワークを経由してデータを転送するのではなく、ストレージの機能を使用してストレージ内やストレージ間でデータを転送できるため、効率が良い。
GlanceはインスタンスのOSイメージとスナップショットの保持、管理を行う。バックエンドストレージは、ローカルストレージ、NFSストレージ、Ceph、Swiftなどが選択可能である。
GlanceのイメージからCinderのボリュームを作成し、そのボリュームからのインスタンスを起動することも可能だ。それにより、OS領域も永続的に保持することが可能になり、Novaコンピュートノード障害時もOS領域を保護することが可能になる。
SwiftはOpenStackの1つのコンポーネントというより、Glanceのイメージ保存先、Cinderボリュームのバックアップ先など、コンポーネントのバックエンドに配置できるストレージの1つと理解する方が分かりやすい。Swiftは公開されている情報が多いので、詳細については本稿では割愛する。
Cinderはインスタンスに永続的なブロックストレージを提供するコンポーネントだ。Cinderで作成されたボリュームはインスタンスのOSからブロックデバイスとして認識され、ファイルシステムの作成、マウントが可能である。ただし、CinderのバックエンドストレージがSANストレージである必要はなく、NASも使用可能であることには注意されたい。バックエンドストレージには、LVM、NFSストレージ、各ベンダーのNAS、SANストレージおよび分散ストレージが設定できる。
各ストレージのCinderドライバはOpenStackに含まれており、一般的には別途インストールは不要である。だが、有償サポートを購入することで機能追加されたドライバを提供しているベンダーもある。そのドライバを検証したい場合は、別途ベンダーと調整する必要がある。
Cinderは機能が多く、バージョンアップの度に頻繁に機能追加が行われている。下記の情報を基に、機能一覧を書き出してみた。
・cinderコマンドのヘルプ
「cinder --help」の出力から代表的なオプションをまとめたものである。なお、インスタンスへのボリュームのアタッチ、デタッチはnovaコマンドで行う。表内の「xxx」の表記は複数の関連オプションを便宜上まとめて表示している。
コマンドのオプション | 意味 |
---|---|
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サポートマトリックス
「Cinderサポートマトリックス」では、Cinderの全機能について網羅されているわけではないが、各ベンダーのストレージとCinderの機能が、どのOpenStackのバージョンからサポートされるかを一覧で確認できる。内容については、各ベンダーが自己申告で書き込んでいるようだ。同じ「サポート」でも、機能差がある可能性がある。2015年3月時点では無かったQoSの列が現在は追加されている。今後も機能名の列は追加されていくと思われる。
・OpenStackのリリースノート(Cinderの項目)
OpenStackの各バージョンのリリースノートを確認すると、Cinderの機能追加、改善について記載されている。以下にリリースノートへのリンクを記載する。
Cinderの基本的かつ重要な下記の機能について、動作と用途を紹介する。
極力、動作確認を行った上での筆者の理解を図式化して紹介しているが、全ての機能について動作確認は行えてはいない。公開されている複数の情報を基に、記述している箇所もある。そのため、使用される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 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 …<省略>…
2.スナップショット
Cinderのスナップショットは、同一バックエンドストレージ内でボリュームのスナップショットが取得される。使用するストレージによっては、ストレージ機能のスナップショットまたはクローンが実行される。通常はスナップショットからは直接リストアできず、スナップショットからボリュームを作成する必要がある。しかし、ベンダーストレージによっては、直接リストアができるものもある。
3.バックアップ
バージョンGrizzlyでボリュームをSwiftにバックアップする機能が追加された。スナップショットは同一バックエンドストレージ内で取得されるが、バックアップは別のバックエンドストレージに保存される。現在は常にフルバックアップの動作になる。保存先はSwiftの他、Ceph、「IBM Tivoli Storage Manager」(TSM)、NFSストレージが指定可能だ。
4.マイグレーション
マイグレーションは、バックエンドストレージ間でボリュームを移行する機能だ。ストレージのメンテナンス/リプレース時に使用できる。ストレージ間(ストレージ内)で移行できるStorage assisted migrationと、ホストを経由するHost assisted migrationがある。前者をサポートしているストレージの方が効率は良いといえる。
5.転送(transfer)
転送(transfer)は、OpenStackのテナント間でボリュームを移動する機能である。用途はボリューム修復サービスや、データインポートサービスなどが考えられる。(図8ではテナントBがサービス提供ベンダー想定)
6.レプリケーション
レプリケーションは、米IBMが開発した機能だ。Cinderのボリューム種別により、レプリケーションの有効/無効を設定できる。現在は、IBMのストレージでのみサポートされる。
7.コンシステンシーグループ
コンシステンシーグループは、ボリューム間の整合性を確保しながら、データの保護(スナップショット、バックアップ、レプリケーション)が可能になる機能だ。米EMCが本機能を開発した。バージョンKiloでEMC以外のストレージでも対応され始めている。
8.QoS(Quality of Service)
QoSは、インスタンスの性能保証を実現する機能である。ストレージが本機能を有していることに加え、Cinderドライバが対応している必要がある。現在は、数種類のベンダーストレージが対応しているようだ。大規模なクラウドサービスの基盤をOpenStackで構築する際は必要になる。
Cephは、OpenStackの各コンポーネントのバックエンドストレージの全てを兼任させることができる。各コンポーネントからCephへのアクセス経路は下記の通りだ(Cephの機能概要や構成要素については、本家のWebサイトを参考にしてほしい)。
データのコピーをCeph内にオフロードできるメリットはある。ただ、Cinderのバックアップ先を同じCeph内に取得することは、本当の意味でバックアップにはならない。そもそも、大事なデータをOSSに保存しても大丈夫かというサポート面での不安は残る。
OpenStackはOSSのため、機能追加にドキュメント整備が追いついておらず、リリースノートに記載のある機能でも設定が不明確なものもある。新機能として記載があっても、コマンドやOpenStackのGUI(Horizon)のどちらにも実装されていない場合がある。実際に機能が存在し、正しく動作するかは、APIの理解やソースコードレベルでの確認が必要である。また、ストレージにシンプロビジョニングやQoSの機能があっても、ボリューム種別で指定しCinderから使用できるかは実環境にて確認する必要がある。今後も、進化の早いCinderの機能追加や、各ベンダーの取り組みは引き続きウオッチする必要がある。
今回は、OpenStackのストレージ関連のコンポーネントと、Cinderの機能、動作について紹介した。次回以降、主要ベンダーの取り組み状況、各社ストレージの機能比較とストレージ選定ポイントについて解説する予定である。ぜひ最後までお付き合いいただきたい。
2002年、伊藤忠テクノソリューションズ(CTC)入社。
HAクラスタやLinuxの担当を経て、現在、ストレージ/バックアップを担当する。
2008年から、仮想環境上のデータ保護や可用性ついて、案件支援や技術検証、セミナーを実施し、社内外への啓蒙を行っている。
趣味はウォーキング。12カ月で22キロやせました。
「同じCMばっかり」を逆手に ペプシコが実践した超斬新なクリエイティブ発想の意図は?
「Advertising Week New York」では、2024年に米国で話題を呼んだスナック菓子「Lay's」...
テレビ派? 有料動画配信派? おすすめの作品は? アニメに関する調査(2024年)
クロス・マーケティングは、国民的メジャーコンテンツに成長したアニメの視聴状況につい...
広告収入稼ぎの低品質サイト「MFA」を排除するため、マーケターにできることとは?
MFA(Made For Advertising)サイトの本質的な問題点とは何か。マーケターはMFA排除のた...