ストレージガイド
OpenStack での永続ストレージの理解、使用、管理
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
Jira でドキュメントのフィードバックを提供する
ドキュメントに関するフィードバックを提供するには、Create Issue フォームを使用します。Red Hat OpenStack Platform Jira プロジェクトで Jira Issue が作成され、フィードバックの進行状況を追跡できます。
- Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
- Create Issue をクリックして、Create Issue ページを開きます。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 Red Hat OpenStack Platform (RHOSP) での永続ストレージの概要
Red Hat OpenStack Platform では、ストレージは主に 3 つのサービスで提供されます。
-
Block Storage (
openstack-cinder
) -
Object Storage (
openstack-swift
) -
Shared File Systems ストレージ (
openstack-manila
)
これらのサービスは、異なる種別の永続ストレージを提供します。それぞれのストレージは、異なるユースケースで独自の利点があります。本ガイドでは、一般的なエンタープライズストレージ要件に対する各ストレージの適合性について説明します。
RHOSP Dashboard またはコマンドラインクライアントのどちらかを使用して、クラウドストレージの管理を行うことができます。どちらの方法を使用しても、ほとんどの操作を実施することができます。ただし、一部のより高度な操作は、コマンドラインでのみ実施することができます。本ガイドでは、可能な場合には Dashboard を使用する手順を記載しています。
Red Hat OpenStack Platform の全ドキュメントスイートは Red Hat OpenStack Platform Documentation で参照してください。
本ガイドでは、crudini
を使用してカスタムのサービス設定を適用する方法について説明します。そのため、crudini
パッケージを最初にインストールする必要があります。
# dnf install crudini -y
RHOSP は、一時 ストレージと 永続 ストレージの 2 種類を認識します。一時ストレージは、特定の Compute インスタンスにのみ関連付けられるストレージです。インスタンスが終了されると、一時ストレージも終了します。この種別のストレージは、インスタンスのオペレーティングシステムの保存など、ランタイム時の基本的要件に対応する際に役立ちます。
永続 ストレージは、実行中のインスタンスからは独立して存続 (永続) するように設計されています。このストレージは、別のインスタンスまたは有効期間を超えた特定のインスタンスが再利用する必要のあるデータに使用されます。RHOSP は以下の種別の永続ストレージを使用します。
- ボリューム
OpenStack Block Storage サービス (openstack-cinder) により、ユーザーは ボリューム を使用してブロックストレージデバイスにアクセスすることができます。一時ストレージを汎用の永続ストレージで拡張するために、インスタンスにボリュームを接続することができます。ボリュームは、任意でインスタンスからデタッチすることも、再度接続することもできます。接続したインスタンス経由でないと、ボリュームにはアクセスできません。
一時ストレージを使用しないようにインスタンスを設定することもできます。一時ストレージを使用する代わりに、Block Storage サービスがイメージをボリュームに書き込むように設定できます。その後、インスタンスのブート可能なルートボリュームとしてボリュームを使用することができます。
ボリュームには、バックアップやスナップショットを使用することで冗長性と災害復旧機能も備わっています。さらに、ボリュームを暗号化できるため、セキュリティーが強化されます。
- コンテナー
OpenStack Object Storage サービス (openstack-swift) は、メディアファイル、大容量のデータセット、ディスクイメージなど、静的データやバイナリーオブジェクトを保存するために使用する完全に分散されたストレージソリューションを提供します。Object Storage サービスは、コンテナーを使用してこれらのオブジェクトを整理します。
ボリュームのコンテンツにはインスタンス経由でしかアクセスできませんが、コンテナーの中のオブジェクトには Object Storage REST API 経由でアクセスすることができます。そのため、クラウド内にあるほぼすべてのサービスが、Object Storage サービスをリポジトリーとして使用することができます。
- ファイル共有
- OpenStack Shared File Systems サービス (openstack-manila) は、リモートにある共有可能なファイルシステムまたは ファイル共有 を簡単にプロビジョニングする手段を提供します。ファイル共有により、クラウド内のプロジェクトはストレージをオープンに共有できます。また、ファイル共有は、複数のインスタンスが同時に消費することが可能です。
各ストレージの種別は、特定のストレージ要件に対応するために設計されています。コンテナーは、幅広いアクセスに対応できるように設計されているため、全ストレージ種別において最高レベルのスループット、アクセス、フォールトトレランスが備えられています。コンテナーは主にサービスへの使用を対象としています。
一方で、ボリュームは主にインスタンスの消費に使用されます。ボリュームは、コンテナーと同じレベルのアクセスやパフォーマンスには対応しにくくなっていますが、コンテナーに比べ、機能セットが幅広く、ネイティブのセキュリティー機能も多くなっています。この点では、ファイル共有はボリュームとよく似ていますが、複数のインスタンスにより消費可能である点が異なります。
以下のセクションでは、具体的なストレージ基準との関連において、各ストレージ種別のアーキテクチャーおよび機能セットについて考察します。
1.1. スケーラビリティーおよびバックエンドストレージ
一般的に、クラスターストレージソリューションは、バックエンドのスケーラビリティーが高くなっています。Red Hat Ceph を Block Storage (cinder) のバックエンドとして使用する場合は、Ceph Object Storage Daemon (OSD) ノードをさらに追加することで、ストレージの容量および冗長性をスケーリングできます。Block Storage, Object Storage (swift) および Shared File Systems Storage (manila) サービスは、バックエンドとして Red Hat Ceph Storage をサポートします。
Block Storage サービスは、個別のバックエンドとして複数のストレージソリューションを使用することができます。バックエンドレベルでは、バックエンドを追加してサービスを再起動することで、容量をスケーリングすることができます。Block Storage サービスには、多くのサポート対象バックエンドソリューションリストも含まれており、その一部には追加のスケーラビリティー機能が備えられています。
デフォルトでは、Object Storage サービスは設定済みのストレージノードを使用しており、空き容量がある分だけ使用することができます。Object Storage サービスは、XFS および ext4 ファイルシステムをサポートし、いずれのサービスもスケーリングして、下層にあるブロックストレージで容量を利用可能な分だけ消費することができます。また、ストレージデバイスをストレージノードに追加して、容量をスケーリングすることも可能です。
Shared File Systems サービスは、1 つ以上のサードパーティーのバックエンドのストレージシステムが管理する指定されたストレージプールからファイル共有をプロビジョニングします。この共有ストレージは、サービスで利用可能なストレージプールのサイズまたは数を増やすか、サードパーティーのバックエンドのストレージシステムをデプロイメントに追加してスケーリングできます。
1.2. ストレージへのアクセシビリティーと管理
ボリュームは、インスタンスによってのみ消費され、1 回に 1 つのインスタンスにしか接続できず、またそのインスタンス内にしかマウントできません。ボリュームのスナップショットを作成して、クローンを作成する際や以前の状態にボリュームをリストアする際に使用することができます (「ストレージの冗長性および災害復旧」を参照)。Block Storage サービスでは、新規ボリュームを作成する際にこれらの設定を簡単に呼び出すことができるようにボリュームの各種設定 (例: サイズおよびバックエンド) をまとめた ボリューム種別 を作成することも可能です。これらの種別はさらに QoS スペックに関連付けて、ユーザー向けに異なるストレージ階層を作成することができます。
ファイル共有は、ボリュームと同様にインスタンスにより消費されます。しかし、ファイル共有の場合はインスタンス内に直接マウントすることができるので、ダッシュボードまたは CLI 経由で接続する必要がありません。ファイル共有は、同時に複数のインスタンスによりマウントすることができます。Shared File Systems サービスは、ファイル共有のスナップショットやクローン作成もサポートしており、(ボリューム種別と同様に) 設定をまとめた 共有種別 を作成することも可能です。
コンテナー内のオブジェクトは、API 経由でアクセスすることができ、クラウド内のインスタンスやサービスからアクセスすることができます。したがって、サービスのオブジェクトリポジトリーとして理想的です。たとえば、Image サービス (openstack-glance) は Object Storage サービスで管理するコンテナーにイメージを保存することができます。
1.3. ストレージのセキュリティー
Block Storage サービス (cinder) は、ボリュームの暗号化を使用して基本的なデータセキュリティーを確保します。これにより、静的キーでボリューム種別を暗号化するように設定できます。このキーは設定したボリュームの種別から作成するボリュームすべてを暗号化する際に使用されます。詳細は、「Block Storage サービス (cinder) ボリュームの暗号化」 を参照してください。
オブジェクトとコンテナーのセキュリティーは、サービスおよびノードレベルで設定されます。Object Storage サービス (swift) は、コンテナーおよびオブジェクトに対するネイティブの暗号化を提供しません。Object Storage サービスによりクラウド内のアクセス性の優先順位が付けられるため、オブジェクトデータの保護はクラウドのネットワークセキュリティーにのみ依存します。
Shared File Systems サービス (manila) では、インスタンスの IP アドレス、ユーザーもしくはグループ、または TLS 証明書別にアクセス制限することでファイル共有のセキュリティーを確保することができます。さらに、一部の Shared File Systems サービスのデプロイメントは、別の共有用サーバーが備えられているため、ファイル共有ネットワークとファイル共有間の関係を管理することができます。共有用サーバーによっては追加のネットワークセキュリティーをサポートする、または必要とする場合があります。たとえば、CIFS ファイル共有サーバーでは LDAP、Active Directory または Kerberos 認証サービスのデプロイメントが必要です。
イメージの署名および検証ならびにメタデータ定義 (metadef) API の制限など、Image サービス (glance) のセキュリティーを保護する方法についての詳細は、Creating and Managing Imagesの Image service を参照してください。
1.4. ストレージの冗長性および災害復旧
Block Storage (cinder) サービスには、ボリュームのバックアップとリストア機能があり、ユーザーストレージの基本的な災害復旧を行います。バックアップ機能を使用して、ボリュームのコンテンツを保護します。サービスは、スナップショットもサポートします。クローン作成に加えて、スナップショットを使用してボリュームを以前の状態に復元することもできます。
マルチバックエンドの環境では、バックエンド間でボリュームを移行することも可能です。この機能は、メンテナンスでバックエンドをオフラインにする必要がある場合に役立ちます。バックアップは通常、データが保護できるように、ソースのボリュームとは別のストレージバックエンドに保存されます。スナップショットはソースのボリュームに依存するため、この方法を用いることはできません。
Block Storage サービスは、ボリュームをグループ化して同時にスナップショットを作成するために、整合性グループの作成もサポートしています。これにより、複数のボリューム間のデータの整合性レベルが向上します。詳細は、「Block Storage サービス (cinder) の整合性グループ」 を参照してください。
Object Storage (swift) サービスには、ビルトインのバックアップ機能はありません。すべてのバックアップを、ファイルシステムまたはノードレベルで実行する必要があります。Object Storage サービスにはより強力な冗長機能とフォールトトレランスが備えられており、Object Storage サービスの最も基本的なデプロイメントでさえ、複数回オブジェクトを複製します。dm-multipath
などのフェイルオーバー機能を使用して、冗長性を強化することができます。
Shared File Systems サービスには、ファイル共有向けのバックアップ機能は組み込まれていませんが、スナップショットを作成してクローンを作成したり、リストアしたりすることができます。
第2章 Block Storage サービス (cinder) の設定
Block Storage サービス (cinder) は、全ボリュームの管理タスク、セキュリティー、スケジューリング、全体を管理します。Compute インスタンス用の永続ストレージとしては、ボリュームが主に使用されます。
ボリュームのバックアップについての詳しい情報は、Block Storage Backup Guide を参照してください。
Block Storage サービス (cinder) およびファイバーチャネル (FC) バックエンドを使用するすべてのデプロイメントにおいて、すべてのコントローラーノードおよびコンピュートノードにホストバスアダプター (HBA) をインストールする必要があります。
2.1. Block Storage サービスのバックエンド
Red Hat OpenStack Platform (RHOSP) は director を使用してデプロイされます。これを行うことで、Block Storage サービス (cinder) およびそのバックエンドなど、各サービスが正しく設定されるようにします。director には、複数のバックエンド設定が統合されています。
Red Hat OpenStack Platform は、Block Storage (cinder) バックエンドとして Red Hat Ceph Storage と NFS をサポートします。デフォルトでは、Block Storage サービスは、ボリュームのリポジトリーとして LVM バックエンドを使用します。このバックエンドはテスト環境に適しますが、LVM は実稼働環境ではサポートされません。
RHOSP を使用して Red Hat Ceph Storage をデプロイする方法については、コンテナー化された Red Hat Ceph を使用したオーバークラウドのデプロイ を参照してください。
オーバークラウドで NFS ストレージを設定する方法は、Advanced Overcloud Customization Guide の Configuring NFS Storage を参照してください。.
Block Storage サービスをサポート対象のサードパーティー製ストレージアプライアンスを使用するように設定することも可能です。director には、異なるバックエンドソリューションをデプロイするのに必要なコンポーネントが含まれています。
サポート対象のバックエンドアプライアンスおよびドライバーの完全なリストは、Component, Plug-In, and Driver Support in Red Hat OpenStack Platform を参照してください。すべてのサードパーティーのバックエンドアプライアンスおよびドライバーには、追加のデプロイメントガイドがあります。適切なデプロイメントガイドを確認し、バックエンドアプライアンスまたはドライバーにプラグインが必要かどうかを判断します。サードパーティーのストレージアプライアンスプラグインのデプロイに関する詳細は、Advanced Overcloud Customization ガイドの Deploying a vendor plugin を参照してください。
2.2. Block Storage ボリュームサービスの高可用性
Block Storage ボリュームサービス (cinder-volume
) は、アクティブ/パッシブモードでコントローラーノードにデプロイされます。この場合、Pacemaker はこのサービスの高可用性 (HA) を維持します。
分散コンピュートノード (DCN) デプロイメントの場合、Block Storage ボリュームサービスはアクティブ/パッシブモードで中央サイトにデプロイされます。この場合、Pacemaker はこのサービスの HA を維持します。Block Storage ボリュームサービスは、ストレージを必要とするエッジサイトにのみデプロイしてください。Pacemaker はエッジサイトにデプロイできないため、Block Storage ボリュームサービスをアクティブ/アクティブモードでデプロイして、このサービスの HA を確保する必要があります。dcn-storage.yaml
heat テンプレートは、この設定を実行します。ただし、このサービスは手動で保守する必要があります。ストレージを必要とするエッジサイトでの Block Storage ボリュームサービスのメンテナンスについて、詳しくは エッジサイトでの Block Storage ボリュームサービスのメンテナンスコマンド を参照してください。
ストレージを必要とするエッジサイトで複数のストレージバックエンドを使用する場合は、すべてのバックエンドがアクティブ/アクティブモードをサポートする必要があります。これは、アクティブ/アクティブモードをサポートしていないバックエンドにデータを保存すると、データが失われる危険があるためです。
2.2.1. エッジサイトの Block Storage ボリュームサービスのメンテナンスコマンド
ストレージを必要とするエッジサイトに Block Storage ボリュームサービス (cinder-volume
) をアクティブ/アクティブモードでデプロイした後は、次のコマンドを使用してクラスターとそのサービスを管理できます。
これらのコマンドには、3.17 以降の Block Storage (cinder) REST API マイクロバージョンが必要です。
ユーザーのアクション | コマンド |
クラスター名、ホスト、ゾーン、ステータス、状態、無効にした理由、およびバックエンドの状態などの情報を含む、サービスのリストを表示する。 注記
Red Hat Ceph Storage バックエンドのデフォルトのクラスター名は |
|
個別サービスではなく、クラスター全体についての詳細および概要情報を表示する。 |
|
特定クラスターについての詳細情報を表示する。 |
|
無効にしたサービスを有効にする。 |
|
クラスター化したサービスを無効にする。 |
|
2.2.2. ボリュームの管理と管理解除
管理解除および管理のメカニズムにより、バージョン X を使用するあるサービスからバージョン X+1 を使用する別のサービスに、ボリュームを容易に移行することができます。このプロセス中、どちらのサービスも稼働を続けます。
API バージョン 3.17 以降では、Block Storage クラスター内の管理に使用できるボリュームおよびスナップショットのリストを確認することができます。これらのリストを表示するには、cinder manageable-list
または cinder snapshot-manageable-list
で --cluster
引数を使用します。
API バージョン 3.16 以降では、cinder manage
コマンドにもオプションの --cluster
引数を指定できるので、以前に管理解除したボリュームを Block Storage クラスターに追加することができます。
2.2.3. クラスター化したサービスでのボリュームの移行
API バージョン 3.16 以降を使用すると、cinder migrate
および cinder-manage
コマンドに --cluster
引数を指定して、アクティブ/アクティブデプロイメントのデプロイ先を定義することができます。
Block Storage クラスター化サービスのボリュームを移行する場合、オプションの --cluster
引数を渡し、位置に関する host
引数を省略します。これは、引数が互いに排他的であるためです。
2.2.4. Block Storage サービスのメンテナンスの開始
すべての Block Storage ボリュームサービスは、起動時に独自のメンテナンスを実行します。複数のボリュームサービスがクラスターにグループ化されている環境では、現在実行されていないサービスをクリーンアップすることができます。
コマンド work-cleanup
により、サーバーのクリーンアップがトリガーされます。このコマンドは以下の出力を返します。
- コマンドでクリーンアップすることのできるサービスのリスト
- 現在クラスター内で実行されていないため、コマンドでクリーンアップすることのできないサービスのリスト
work-cleanup
コマンドは、API バージョン 3.24 以降を実行しているサーバーでのみ機能します。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
手順
以下のコマンドを実行して、クラスターのすべてのサービスが実行中かどうかを確認します。
$ cinder cluster-list --detailed
あるいは、
cluster show
コマンドを実行します。いずれかのサービスが実行されていない場合は、以下のコマンドを実行してそのサービスを特定します。
$ cinder service-list
以下のコマンドを実行してサーバーのクリーンアップを開始します。
$ cinder work-cleanup [--cluster <cluster-name>] [--host <hostname>] [--binary <binary>] [--is-up <True|true|False|false>] [--disabled <True|true|False|false>] [--resource-id <resource-id>] [--resource-type <Volume|Snapshot>]
注記--cluster
、--host
、--binary
等のフィルターで、コマンドでクリーンアップする対象を定義します。特定のリソースを含め、クラスター名、ホスト名、サービスの種別、およびリソースの種別で絞り込むことができます。フィルターを適用しない場合、コマンドはクリーンアップ可能なすべてを対象に処理を試みます。クラスター名で絞り込む例を以下に示します。
$ cinder work-cleanup --cluster tripleo@tripleo_ceph
2.3. ボリューム種別によるボリューム設定のグループ化
Red Hat OpenStack Platform では、ボリューム種別を作成することができ、関連する設定をボリューム種別に適用することができます。ボリュームの作成時に設定を適用することができます。「Block Storage ボリュームの作成」を参照してください。ボリュームの作成後に設定を適用することもできます。「Block Storage のボリューム種別の変更」を参照してください。ボリューム種別に適用することができる関連設定の一部を、リストにして以下に示します。
- ボリュームの暗号化。詳細は、「CLI を使用した Block Storage サービスボリューム暗号化の設定」 を参照してください。
- ボリュームが使用するバックエンド。詳しい情報は、「ボリュームを作成するバックエンドの指定」および「CLI を使用したバックエンド間でのボリュームの移行」を参照してください。
- Quality-of-Service (QoS) スペック
設定は、追加スペックと呼ばれるキーと値のペアを使用してボリューム種別に関連付けられます。ボリュームの作成時にボリューム種別を指定する際には、Block Storage のスケジューラーがこれらのキーと値のペアを設定として適用します。また、複数のキーと値のペアを同じボリューム種別に関連付けることができます。
ボリューム種別は、異なるユーザーにストレージ階層を使用できるようにする機能をします。特定のパフォーマンス、耐障害性、およびその他の設定をキーと値のペアとしてボリューム種別に関連付けることにより、階層固有の設定を異なるボリューム種別にマッピングすることができます。マッピングされた階層固有の設定は、ボリュームの作成時に対応するボリューム種別を指定することによって適用が可能です。
2.3.1. バックエンドドライバー機能のリスト表示
利用可能な追加スペックやサポートされている追加スペックは、バックエンドのドライバーにより異なります。有効な追加スペックのリストについては、ボリュームドライバーのマニュアルを参照してください。
または、Block Storage ホストに直接クエリーを送信して、そのドライバーがサポートしている、明確に定義された標準の追加スペックを確認することができます。まず、コマンドラインから Block Storage サービスをホストするノードにログインします。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
手順
# cinder service-list
このコマンドは、各 Block Storage サービス (cinder-backup、cinder-scheduler、および cinder-volume) のホストが含まれるリストを返します。以下に例を示します。
+------------------+---------------------------+------+--------- | Binary | Host | Zone | Status ... +------------------+---------------------------+------+--------- | cinder-backup | localhost.localdomain | nova | enabled ... | cinder-scheduler | localhost.localdomain | nova | enabled ... | cinder-volume | *localhost.localdomain@lvm* | nova | enabled ... +------------------+---------------------------+------+---------
Block Storage サービスのドライバーの機能を表示するには (これによりサポートされる追加スペックを判断)、以下のコマンドを実行します。
# cinder get-capabilities _VOLSVCHOST_
VOLSVCHOST は cinder-volume のホストの完全な名前に置き換えます。以下に例を示します。
# cinder get-capabilities localhost.localdomain@lvm +---------------------+-----------------------------------------+ | Volume stats | Value | +---------------------+-----------------------------------------+ | description | None | | display_name | None | | driver_version | 3.0.0 | | namespace | OS::Storage::Capabilities::localhost.loc... | pool_name | None | | storage_protocol | iSCSI | | vendor_name | Open Source | | visibility | None | | volume_backend_name | lvm | +---------------------+-----------------------------------------+ +--------------------+------------------------------------------+ | Backend properties | Value | +--------------------+------------------------------------------+ | compression | {u'type': u'boolean', u'description'... | qos | {u'type': u'boolean', u'des ... | replication | {u'type': u'boolean', u'description'... | thin_provisioning | {u'type': u'boolean', u'description': u'S... +--------------------+------------------------------------------+
Backend properties のコラムには設定可能な追加スペックキーのリストが、Value のコラムには、Backend properties に対する有効な値が表示されます。
利用可能な追加スペックやサポートされている追加スペックは、バックエンドのドライバーにより異なります。有効な追加スペックのリストについては、ボリュームドライバーのマニュアルを参照してください。
または、Block Storage ホストに直接クエリーを送信して、そのドライバーがサポートしている、明確に定義された標準の追加スペックを確認することができます。まず、コマンドラインから Block Storage サービスをホストするノードにログインします。次に、以下のコマンドを実行します。
# cinder service-list
このコマンドは、各 Block Storage サービス (cinder-backup、cinder-scheduler、および cinder-volume) のホストが含まれるリストを返します。以下に例を示します。
+------------------+---------------------------+------+--------- | Binary | Host | Zone | Status ... +------------------+---------------------------+------+--------- | cinder-backup | localhost.localdomain | nova | enabled ... | cinder-scheduler | localhost.localdomain | nova | enabled ... | cinder-volume | *localhost.localdomain@lvm* | nova | enabled ... +------------------+---------------------------+------+---------
Block Storage サービスのドライバーの機能を表示するには (これによりサポートされる追加スペックを判断)、以下のコマンドを実行します。
# cinder get-capabilities _VOLSVCHOST_
VOLSVCHOST は cinder-volume のホストの完全な名前に置き換えます。以下に例を示します。
# cinder get-capabilities localhost.localdomain@lvm +---------------------+-----------------------------------------+ | Volume stats | Value | +---------------------+-----------------------------------------+ | description | None | | display_name | None | | driver_version | 3.0.0 | | namespace | OS::Storage::Capabilities::localhost.loc... | pool_name | None | | storage_protocol | iSCSI | | vendor_name | Open Source | | visibility | None | | volume_backend_name | lvm | +---------------------+-----------------------------------------+ +--------------------+------------------------------------------+ | Backend properties | Value | +--------------------+------------------------------------------+ | compression | {u'type': u'boolean', u'description'... | qos | {u'type': u'boolean', u'des ... | replication | {u'type': u'boolean', u'description'... | thin_provisioning | {u'type': u'boolean', u'description': u'S... +--------------------+------------------------------------------+
Backend properties のコラムには設定可能な追加スペックキーのリストが、Value のコラムには、Backend properties に対する有効な値が表示されます。
2.3.2. ボリューム種別の作成および設定
関連する設定をボリューム種別に適用できるように、ボリューム種別を作成します。
Block Storage サービス (cinder) が複数のバックエンドを使用するように設定されている場合、バックエンドごとにボリューム種別を作成する必要があります。
ボリューム種別は、異なるユーザーにストレージ階層を使用できるようにする機能をします。特定のパフォーマンス、耐障害性、およびその他の設定をキーと値のペアとしてボリューム種別に関連付けることにより、階層固有の設定を異なるボリューム種別にマッピングすることができます。マッピングされた階層固有の設定は、ボリュームの作成時に対応するボリューム種別を指定することによって適用が可能です。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Director Installation and Usageの Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳しい情報は、Director Installation and Usageの Overcloud deployment output を参照してください。
手順
- Dashboard に管理ユーザーとしてログインして 管理 > ボリューム > ボリューム種別 を選択します。
- ボリューム種別の作成 をクリックします。
- Name フィールドにボリューム種別の名前を入力します。
- Create Volume Type をクリックします。Volume Types の表に新しい種別が表示されます。
- ボリューム種別の View Extra Specs のアクションを選択します。
-
Create をクリックして Key と Value を指定します。キーと値のペアは有効である必要があります。有効でない場合には、ボリュームの作成時にそのボリューム種別を指定するとエラーが発生してしまいます。たとえば、このボリューム種別のバックエンドを指定するには、
volume_backend_name
Key を追加し、Value を必要なバックエンドの名前に設定します。 - Create をクリックします。関連付けられた設定 (キー/値のペア) が Extra Specs の表に表示されます。
デフォルトでは、OpenStack の全プロジェクトがすべてのボリューム種別にアクセス可能です。アクセスが制限されたボリューム種別を作成する必要がある場合は、CLI から作成する必要があります。その方法は、「プライベートボリューム種別の作成および設定」を参照してください。
QoS スペックをボリューム種別に関連付けることも可能です。詳細は、「Quality-of-Service 仕様とボリューム種別の関連付け」 を参照してください。
2.3.3. ボリューム種別の編集
Dashboard でボリューム種別を編集して、ボリューム種別の 追加スペック 設定を変更します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard に管理ユーザーとしてログインして 管理 > ボリューム > ボリューム種別 を選択します。
- ボリューム種別 の表で、ボリューム種別の 追加スペックの表示 のアクションを選択します。
このページの 追加スペック の表では、以下のような操作を行うことができます。
- ボリューム種別への新規設定の追加。そのためには、作成 をクリックして、ボリューム種別に関連付ける新規設定のキー/値ペアを指定します。
- ボリューム種別に関連付けられている既存の設定の編集。そのためには、設定の 編集 アクションを選択します。
- ボリューム種別に関連付けられている既存の設定の削除。そのためには、追加スペックのチェックボックスを選択して、表示中のダイアログ画面と次の画面で 追加スペックの削除 をクリックします。
ボリューム種別を削除するには、ボリューム種別 の表でそのボリューム種別のチェックボックスを選択して ボリューム種別の削除 をクリックします。
2.3.4. プライベートボリューム種別の作成および設定
デフォルトでは、全プロジェクトですべてのボリューム種別を使用することができます。アクセスが制限されたボリューム種別を作成するには、ボリューム種別を プライベート に指定します。そのためには、ボリューム種別の is-public
フラグを false に設定します。
プライベートのボリューム種別は、特定の属性を持つボリュームへのアクセスを制限するのに役立ちます。これは通常は、特定のプロジェクトのみが使用可能とする必要のある設定です。たとえば、テスト中の新規バックエンドや超ハイパフォーマンスの設定などが例としてあげられます。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Director Installation and Usageの Creating a basic overcloud with CLI tools を参照してください。
手順
$ cinder type-create --is-public false <TYPE-NAME>
デフォルトでは、プライベートのボリューム種別には作成者のみがアクセスできます。ただし、管理ユーザーは、以下のコマンドを使用してプライベートボリューム種別を特定/表示することができます。
$ cinder type-list
このコマンドは、パブリックとプライベートの両方のボリューム種別をリスト表示します。リストには、各ボリューム種別の名前と ID も表示されます。ボリューム種別にアクセスするには、そのボリューム種別の ID が必要となります。
プライベートのボリューム種別へのアクセスは、プロジェクトレベルで許可されます。プロジェクトがプライベートのボリューム種別にアクセスできるようにするには、以下のコマンドを実行します。
$ cinder type-access-add --volume-type <TYPE-ID> --project-id <TENANT-ID>
プライベートのボリューム種別にアクセス可能なプロジェクトを確認するには、以下のコマンドを実行します。
$ cinder type-access-list --volume-type <TYPE-ID>
プライベートのボリューム種別のアクセスリストからプロジェクトを削除するには、以下のコマンドを実行します。
$ cinder type-access-remove --volume-type <TYPE-ID> --project-id <TENANT-ID>
プライベートのボリューム種別へのアクセスは、デフォルトでは管理権限のあるユーザーのみが作成、表示、設定することが可能です。
2.4. Block Storage サービス (cinder) の内部プロジェクトの作成および設定
Block Storage 機能の一部 (例: Image-Volume キャッシュ) では、内部テナント の設定を必要とします。Block Storage サービスは、このテナント/プロジェクトを使用して、通常のユーザーに公開する必要のないブロックストレージアイテムを管理します。このようなアイテムの例として、ボリュームの頻繁なクローン作成のためにキャッシュされたイメージや、移行中のボリュームの一時コピーなどが挙げられます。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Director Installation and Usageの Creating a basic overcloud with CLI tools を参照してください。
手順
- 内部プロジェクトを設定するには、まず cinder-internal という名前の一般プロジェクトとユーザーを作成します。そのためには、コントローラーノードにログインして以下のコマンドを実行します。
# openstack project create --enable --description "Block Storage Internal Project" cinder-internal +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Block Storage Internal Tenant | | enabled | True | | id | cb91e1fe446a45628bb2b139d7dccaef | | name | cinder-internal | +-------------+----------------------------------+ # openstack user create --project cinder-internal cinder-internal +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 84e9672c64f041d6bfa7a930f558d946 | | name | cinder-internal | |project_id| cb91e1fe446a45628bb2b139d7dccaef | | username | cinder-internal | +----------+----------------------------------+
新たな設定オプションを追加する手順により、内部プロジェクトが作成されます。詳細は、「image-volume キャッシュの設定」 を参照してください。
2.5. image-volume キャッシュの設定
Block Storage サービスには、任意の Image-Volume キャッシュ が含まれており、イメージからボリュームを作成する際にこのキャッシュを使用できます。このキャッシュは、頻繁に使用するイメージからボリュームを作成する際の時間を短縮するように設計されています。イメージからボリュームを作成する方法は、「Block Storage ボリュームの作成」を参照してください。
Image-Volume のキャッシュを有効化すると、ボリュームの初回作成時にベースとなったイメージのコピーが保存されます。この保存されたイメージは、Block Storage バックエンドのローカルにキャッシュされ、次回このイメージを使用してボリュームを作成する際のパフォーマンス向上に役立ちます。Image-Volume キャッシュは、サイズ (GB)、イメージ数、または両方を指定して上限を設定することができます。
Image-Volume キャッシュは、複数のバックエンドでサポートされます。サードパーティーのバックエンドを使用する場合は、Image-Volume キャッシュサポートに関する情報については、サードパーティーのドキュメントを参照してください。
Image-Volume キャッシュでは、内部テナント を Block Storage サービスに設定する必要があります。その方法は、「Block Storage サービス (cinder) の内部プロジェクトの作成および設定」を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
手順
バックエンド (BACKEND) で Image-Volume キャッシュを有効にして設定するには、アンダークラウドの環境ファイルの ExtraConfig
セクションに値を追加します。以下に例を示します。
parameter_defaults: ExtraConfig: cinder::config::cinder_config: DEFAULT/cinder_internal_tenant_project_id: value: TENANTID DEFAULT/cinder_internal_tenant_user_id: value: USERID BACKEND/image_volume_cache_enabled: 1 value: True BACKEND/image_volume_cache_max_size_gb: value: MAXSIZE 2 BACKEND/image_volume_cache_max_count: value: MAXNUMBER 3
Block Storage サービスのデータベースは、タイムスタンプを使用して、キャッシュされた各イメージの最終使用日時をトラッキングします。MAXSIZE と MAXNUMBER のいずれか一方または両方が設定されている場合は、Block Storage サービスは必要に応じてキャッシュされたイメージを削除し、新たにイメージをキャッシュするためのスペースを解放します。Image-Volume キャッシュが上限に達すると、最も古いタイムスタンプが付いたキャッシュイメージが最初に削除されます。
/home/stack/templates/
に環境ファイルを作成したら、stack ユーザーとしてログインして、以下のコマンドを実行して設定をデプロイします。
$ openstack overcloud deploy --templates \ -e /home/stack/templates/<ENV_FILE>.yaml
ここで、ENV_FILE.yaml
は、前のステップで ExtraConfig
設定を追加したファイルの名前です。
オーバークラウドの作成時に追加の環境ファイルを渡した場合は、予定外の変更がオーバークラウドに加えられないように、ここで -e
オプションを使用して環境ファイルを再度渡します。
openstack overcloud deploy
コマンドについての詳細は、Director Installation and Usage の Deployment command を参照してください。
2.6. Block Storage サービス (cinder) の Quality-of-Service
複数のパフォーマンス設定を単一の Quality-of-Service の仕様 (QoS スペック) にマッピングすることができます。これにより、ユーザータイプ別のパフォーマンス階層を提供することができます。
パフォーマンス設定はキーと値のペアとして QoS スペックにマッピングされます。これは、ボリュームの設定がボリューム種別に関連付けられる方法と似ています。ただし、QoS スペックの場合は以下の面でボリューム種別の場合とは異なります。
QoS スペックは、ディスクの読み取り/書き込み操作を制限するなどのパフォーマンス設定を適用するのに使用されます。利用可能かつサポートされているパフォーマンス設定はストレージドライバーによって異なります。
バックエンドがサポートしている QoS スペックを確認するには、そのバックエンドデバイスのボリュームドライバーのマニュアルを参照してください。
- QoS スペックとは異なり、ボリューム種別はボリュームに直接適用されます。QoS スペックは、ボリューム種別に関連付けられます。また、ボリュームの作成時にボリューム種別を指定すると、そのボリューム種別に関連付けられた QoS スペックにマッピングされたパフォーマンス設定も適用されます。
ボリュームの基本 QoS 値を使用して、ボリュームごとにボリュームのパフォーマンス制限を定義することができます。Block Storage サービスでは、以下のオプションがサポートされます。
-
read_iops_sec
-
write_iops_sec
-
total_iops_sec
-
read_bytes_sec
-
write_bytes_sec
-
total_bytes_sec
-
read_iops_sec_max
-
write_iops_sec_max
-
total_iops_sec_max
-
read_bytes_sec_max
-
write_bytes_sec_max
-
total_bytes_sec_max
-
size_iops_sec
2.6.1. Quality-of-Service 仕様の作成および設定
管理者は、QoS スペックの表で QoS スペックの作成および設定を行うことができます。同じ QoS スペックには、複数のキー/値のペアを関連付けることができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard に管理ユーザーとしてログインして 管理 > ボリューム > ボリューム種別 を選択します。
- QoS スペック の表で QoS スペックの作成 をクリックします。
- QoS スペック の名前を入力します。
使用者 フィールドで、QoS ポリシーを適用する対象を指定します。
表2.1 使用者の種別 型 説明 back-end
QoS ポリシーが Block Storage バックエンドに適用されます。
front-end
QoS ポリシーが Compute に適用されます。
both
QoS ポリシーが Block Storage と Compute の両方に適用されます。
- Create をクリックします。新規 QoS スペックが QoS スペック の表に表示されるはずです。
- QoS スペック の表で、新規スペックの スペックの管理 アクションを選択します。
作成 をクリックして キー と 値 を指定します。キーと値のペアは有効である必要があります。有効でない場合には、ボリュームの作成時に、この QoS スペックに関連付けられたボリューム種別を指定するとエラーが発生してしまいます。
たとえば、読み取りの IOPS 上限を
500
に設定するには、以下のキー/値のペアを使用します。read_iops_sec=500
- Create をクリックします。関連付けられた設定 (キー/値のペア) が キーと値のペア の表に表示されます。
2.6.2. 容量ベースの Quality-of-Service 上限の設定
ボリュームの種別を使用して、容量ベースの Quality-of-Service (QoS) 上限をボリュームに実装することができます。これにより、プロビジョニングされるボリュームのサイズに基づいて、確定的な IOPS スループットを設定することができます。このように設定すると、ストレージリソースがユーザーにプロビジョニングされる方法が簡素化され、プロビジョニングされるボリュームのサイズに基づいて、事前に決定された (最終的には高度に予測可能な) スループット速度が提供されます。
特に、Block Storage サービスでは、実際にプロビジョニングされるサイズに基づいてボリュームに割り当てる IOPS を設定することができます。このスループットは、以下の QoS キーを使用して、1 GB あたりの IOPS で設定されます。
read_iops_sec_per_gb write_iops_sec_per_gb total_iops_sec_per_gb
これらのキーにより、プロビジョニングされるボリュームのサイズに応じてスケーリングするための読み取り、書き込み、IOPS 合計を設定することができます。たとえば、ボリューム種別に read_iops_sec_per_gb=500
を指定した場合には、プロビジョニングされる 3 GB のボリュームには、読み取り IOPS が 1500 に自動設定されます。
容量ベースの QoS 上限はボリューム種別ごとに設定され、通常の QoS スペックと同様に設定されます。また、これらの上限は配下の Block Storage サービスにより直接サポートされており、特定のドライバーに依存しません。
ボリューム種別に関する詳しい情報は、「ボリューム種別によるボリューム設定のグループ化」および「ボリューム種別の作成および設定」を参照してください。QoS スペックの設定方法については、「Block Storage サービス (cinder) の Quality-of-Service」を参照してください。
容量ベースの QoS 上限を使用して、接続済みのボリュームにボリューム種別を適用した場合 (またはボリューム種別を変更した場合) には、上限は適用されません。この上限は、そのボリュームをインスタンスから接続解除した後にのみ適用されます。
ボリューム種別の変更に関する情報は、「Block Storage のボリューム種別の変更」を参照してください。
2.6.3. Quality-of-Service 仕様とボリューム種別の関連付け
管理者は、ボリューム種別 の表で QoS スペックを既存のボリューム種別に関連付ける事ができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard に管理者としてログインして 管理 > ボリューム > ボリューム種別 を選択します。
- ボリューム種別 の表で、その種別の QoS スペックの関連付けの管理 のアクションを選択します。
- 関連付ける QoS スペック のリストから QoS スペックを選択します。既存のボリューム種別から QoS 仕様の関連付けを解除するには、None を選択します。
- 割り当て をクリックします。選択した QoS スペックが、編集したボリューム種別の Associated QOS Spec のコラムに表示されるようになります。
2.7. Block Storage サービス (cinder) ボリュームの暗号化
ボリュームの暗号化は、ボリュームのバックエンドのセキュリティーを侵害されたり、完全に盗難されたりした場合に、基本的なデータ保護を提供します。Compute および Block Storage サービスを両方統合して、インスタンスがアクセスを読み込み、暗号化されたボリュームを使用できるようにします。ボリュームの暗号化を活用するには、Barbican をデプロイする必要があります。
- ボリュームの暗号化は、ファイルベースのボリューム (例: NFS) ではサポートされていません。
- ボリューム暗号化は LUKS1 のみをサポートし、LUKS2 はサポートしません。
- 暗号化されていないボリュームを同じサイズの暗号化されたボリュームに種別変更する操作はサポートされません。暗号化したボリュームには、暗号化データを格納するための追加領域が必要なためです。暗号化されていないボリュームの暗号化に関する詳細は、暗号化されていないボリュームの暗号化 を参照してください。
ボリュームの暗号化は、ボリューム種別を使用して適用されます。暗号化されたボリューム種別に関する情報は、「CLI を使用した Block Storage サービスボリューム暗号化の設定」を参照してください。
2.7.1. Dashboard を使用した Block Storage サービスボリューム暗号化の設定
暗号化されたボリュームを作成するには、まず 暗号化されたボリューム種別 が必要です。ボリューム種別を暗号化するには、使用すべきプロバイダークラス、暗号、キーサイズを設定する必要があります。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Installing director on the undercloud、Director Installation and Usage を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Director Installation and Usageの Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳しい情報は、Director Installation and Usageの Overcloud deployment output を参照してください。
手順
- Dashboard に管理ユーザーとしてログインして 管理 > ボリューム > ボリューム種別 を選択します。
- 暗号化するボリューム種別の アクション コラムで 暗号化設定の作成 を選択して、ボリューム種別の暗号化設定の作成 ウィザードを開きます。
このウィザードで、ボリューム種別の暗号化の プロバイダー、制御場所、暗号、および キーサイズ を設定します。説明 のコラムで各設定について説明されています。
重要プロバイダー、暗号、および キーサイズ のオプションとしてサポートされるは、以下に示す値だけです。
-
プロバイダー に
luks
と入力します。 -
暗号 に
aes-xts-plain64
と入力します。 -
キーサイズ に
256
と入力します。
-
プロバイダー に
- ボリューム種別の暗号化設定の作成 をクリックします。
ボリューム種別の暗号化設定が完了したら、その設定を使用して、暗号化されたボリュームを自動的に作成することができます。ボリューム種別の作成に関する詳しい情報は、「ボリューム種別の作成および設定」を参照してください。具体的には、ボリュームの作成 ウィンドウの 種別 のドロップダウンから暗号化されたボリューム種別を選択します。
CLI を使用して暗号化されたボリューム種別を設定するには、「CLI を使用した Block Storage サービスボリューム暗号化の設定」を参照してください。
暗号化されたボリューム種別の暗号化設定を再設定することも可能です。
- ボリューム種別の アクション コラムから 暗号化設定の更新 を選択して、ボリューム種別の暗号化設定の更新 ウィザードを開きます。
- ボリュームが暗号化されているかどうかを判断するには、プロジェクト > コンピュート > ボリューム にある ボリューム テーブルの 暗号化 コラムを確認します。
- ボリュームが暗号化されている場合には、暗号化のコラムの はい をクリックすると暗号化設定が表示されます。
2.7.2. CLI を使用した Block Storage サービスボリューム暗号化の設定
暗号化されたボリュームを作成するには、まず 暗号化されたボリューム種別 が必要です。ボリューム種別を暗号化するには、使用すべきプロバイダークラス、暗号、キーサイズを設定する必要があります。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
ボリューム種別を作成します。
$ cinder type-create encrypt-type
暗号、キーサイズ、制御場所、およびプロバイダー設定を定義します。
$ cinder encryption-type-create --cipher aes-xts-plain64 --key-size 256 --control-location front-end encrypt-type luks
暗号化されたボリュームを作成します。
$ cinder --debug create 1 --volume-type encrypt-type --name DemoEncVol
詳しくは、Manage Secrets with OpenStack Key Managerを参照してください。
2.7.3. ボリュームイメージ暗号化キーの自動削除
Block Storage サービス (cinder) が暗号化されたボリュームを Image サービス (glance) にアップロードする際に、Key Management サービス (barbican) に暗号鍵を作成します。これにより、暗号鍵と保存されるイメージに 1 対 1 の関係が形成されます。
暗号鍵を削除することで、Key Management サービスがリソースを無制限に消費するのを防ぐことができます。Block Storage サービス、Key Management サービス、および Image サービスは、暗号化されたボリュームの鍵を自動的に管理します。これには、鍵の削除が含まれます。
Block Storage サービスは、自動的に 2 つの属性をボリュームイメージに追加します。
-
cinder_encryption_key_id
: Key Management サービスが特定のイメージ用に保存する暗号鍵の識別子 -
cinder_encryption_key_deletion_policy
: Image サービスはこのポリシーにしたがって、このイメージに関連付けられた鍵を削除するかどうかを Key Management サービスに指示します。
これらの属性の値は、自動的に割り当てられます。意図しないデータ損失を避けるため、これらの値を調整しないでください。
ボリュームイメージを作成すると、Block Storage サービスは cinder_encryption_key_deletion_policy
属性を on_image_deletion
に設定します。cinder_encryption_key_deletion_policy
が on_image_deletion
に設定されている場合、ボリュームイメージを削除すると、Image サービスは対応する暗号鍵を削除します。
Red Hat では、cinder_encryption_key_id
または cinder_encryption_key_deletion_policy
属性を手動で操作することを推奨しません。cinder_encryption_key_id
の値で識別される暗号鍵を他の目的で使用すると、データが失われる危険性があります。
2.8. Block Storage ボリュームのバックエンド用のアベイラビリティーゾーンのデプロイ
アベイラビリティーゾーンは、クラウドインスタンスおよびサービスをグループ化するためのプロバイダー固有の方法です。director は CinderXXXAvailabilityZone
パラメーターを使用して、Block Storage ボリュームのバックエンドごとに異なるアベイラビリティーゾーンを設定します (XXX
は特定のバックエンドに対応する値です)。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
以下のパラメーターを環境ファイルに追加して、2 つのアベイラビリティーゾーンを作成します。
parameter_defaults: CinderXXXAvailabilityZone: zone1 CinderYYYAvailabilityZone: zone2
以下に示す例のように、XXX および YYY を、サポートされるバックエンドの値に置き換えます。
CinderISCSIAvailabilityZone CinderNfsAvailabilityZone CinderRbdAvailabilityZone
注記/usr/share/openstack-tripleo-heat-templates/deployment/cinder/
ディレクトリーでバックエンドに関連付けられた heat テンプレートを探し、正しいバックエンドの値を確認してください。2 つのバックエンドをデプロイする例を以下に示します。ここでは、
rbd
がゾーン 1 でiSCSI
がゾーン 2 です。parameter_defaults: CinderRbdAvailabilityZone: zone1 CinderISCSIAvailabilityZone: zone2
- 更新された環境ファイルを追加して、オーバークラウドをデプロイします。
2.9. Block Storage サービス (cinder) の整合性グループ
Block Storage (cinder) サービスを使用して、整合性グループを設定して複数のボリュームを単一のエンティティーとしてグループ化することができます。つまり、複数のボリュームに対して個別に操作を実行するのではなく、同時に複数のボリュームに対して操作を実行することができます。整合性グループを使用して、複数ボリュームのスナップショットを同時に作成することができます。また、これらのボリュームを同時にリストアまたはクローン作成することも可能です。
1 つのボリュームを複数の整合性グループのメンバーにすることができます。ただし、ボリュームを整合性グループに追加した後に、そのボリュームを削除、種別変更、移行することはできません。
2.9.1. Block Storage サービスの整合性グループの設定
デフォルトでは、整合性グループの API は Block Storage のセキュリティーポリシーにより無効にされています。この機能を使用するには、ここで有効にする必要があります。Block StorageAPI サービスをホストするノードの /etc/cinder/policy.json
ファイルの関連する整合性グループエントリー openstack-cinder-api
にデフォルト設定がリストされています。
"consistencygroup:create" : "group:nobody", "consistencygroup:delete": "group:nobody", "consistencygroup:update": "group:nobody", "consistencygroup:get": "group:nobody", "consistencygroup:get_all": "group:nobody", "consistencygroup:create_cgsnapshot" : "group:nobody", "consistencygroup:delete_cgsnapshot": "group:nobody", "consistencygroup:get_cgsnapshot": "group:nobody", "consistencygroup:get_all_cgsnapshots": "group:nobody",
環境ファイルでこれらの設定を変更してから、openstack overcloud deploy
コマンドを使用してオーバークラウドにデプロイする必要があります。JSON ファイルを直接編集しないでください。次回オーバークラウドがデプロイされる際に変更が上書きされてしまうためです。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
-
環境ファイルを編集し、
parameter_defaults
セクションに新しいエントリーを追加します。これにより、openstack overcloud deploy
コマンドを使用して環境が再デプロイされるたびに、エントリーがコンテナーで更新され保持されるようになります。 CinderApiPolicies
を使用して環境ファイルに新規セクションを追加し、整合性グループの設定を定義します。JSON ファイルのデフォルト設定を持つ同等のparameter_defaults
セクションは、次のように表示されます。parameter_defaults: CinderApiPolicies: { \ cinder-consistencygroup_create: { key: 'consistencygroup:create', value: 'group:nobody' }, \ cinder-consistencygroup_delete: { key: 'consistencygroup:delete', value: 'group:nobody' }, \ cinder-consistencygroup_update: { key: 'consistencygroup:update', value: 'group:nobody' }, \ cinder-consistencygroup_get: { key: 'consistencygroup:get', value: 'group:nobody' }, \ cinder-consistencygroup_get_all: { key: 'consistencygroup:get_all', value: 'group:nobody' }, \ cinder-consistencygroup_create_cgsnapshot: { key: 'consistencygroup:create_cgsnapshot', value: 'group:nobody' }, \ cinder-consistencygroup_delete_cgsnapshot: { key: 'consistencygroup:delete_cgsnapshot', value: 'group:nobody' }, \ cinder-consistencygroup_get_cgsnapshot: { key: 'consistencygroup:get_cgsnapshot', value: 'group:nobody' }, \ cinder-consistencygroup_get_all_cgsnapshots: { key: 'consistencygroup:get_all_cgsnapshots', value: 'group:nobody' }, \ }
-
値
'group:nobody'
は、この機能を使用できるグループがないことを決定するため、効果的に無効になります。これを有効にするには、グループを別の値に変更します。 セキュリティーを強化するためには、整合性グループの API とボリューム種別管理の API の両方に、同じアクセス権限を設定します。デフォルトでは、ボリューム種別管理の API は (同じ
/etc/cinder/policy.json_ file
) で"rule:admin_or_owner"
に設定されています。"volume_extension:types_manage": "rule:admin_or_owner",
整合性グループの機能をすべてのユーザーが利用できるようにするには、API ポリシーのエントリーを設定して、ユーザーが専用の整合性グループを作成、使用、および管理できるようにします。そのためには、
rule:admin_or_owner
を使用します。CinderApiPolicies: { \ cinder-consistencygroup_create: { key: 'consistencygroup:create', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_delete: { key: 'consistencygroup:delete', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_update: { key: 'consistencygroup:update', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_get: { key: 'consistencygroup:get', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_get_all: { key: 'consistencygroup:get_all', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_create_cgsnapshot: { key: 'consistencygroup:create_cgsnapshot', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_delete_cgsnapshot: { key: 'consistencygroup:delete_cgsnapshot', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_get_cgsnapshot: { key: 'consistencygroup:get_cgsnapshot', value: 'rule:admin_or_owner' }, \ cinder-consistencygroup_get_all_cgsnapshots: { key: 'consistencygroup:get_all_cgsnapshots', value: 'rule:admin_or_owner’ }, \ }
/home/stack/templates/
に環境ファイルを作成したら、スタックユーザーとしてログインし、設定をデプロイします。$ openstack overcloud deploy --templates \ -e /home/stack/templates/<ENV_FILE>.yaml
<ENV_FILE.yaml>
を、追加したExtraConfig
設定のファイル名に置き換えます。重要オーバークラウドの作成時に追加の環境ファイルを渡した場合には、予定外の変更がオーバークラウドに加えられないように、ここで
-e
オプションを使用して環境ファイルを再度渡します。
openstack overcloud deploy
コマンドについての詳しい情報は、Director Installation and UsageのDeployment commandを参照してください。
2.9.2. Dashboard を使用した Block Storage 整合性グループの作成
整合性グループの API を有効にしたら、整合性グループの作成を開始することができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で管理者ユーザーとして プロジェクト > コンピュート > ボリューム > ボリュームの整合性グループ を選択します。
- 整合性グループの作成 をクリックします。
- ウィザードの 整合性グループの情報 タブで、整合性グループの名前と説明を入力します。次に アベイラビリティーゾーン を指定します。
- 整合性グループにボリューム種別を追加することもできます。整合性グループにボリュームを作成する際には、Block Storage サービスにより、これらのボリューム種別から互換性のある設定が適用されます。ボリューム種別を追加するには、利用可能な全ボリューム種別 リストから追加するボリューム種別の + ボタンをクリックします。
- 整合性グループの作成 をクリックします。次回、作成した整合性グループが ボリュームの整合性グループ テーブルに表示されます。
2.9.3. Dashboard を使用した Block Storage サービスの整合性グループの管理
Red Hat OpenStack Platform (RHOSP) Dashboard を使用して、Block Storage ボリュームの整合性グループを管理します。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage の Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Director Installation and Usageの Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳しい情報は、Director Installation and Usageの Overcloud deployment output を参照してください。
手順
- (オプション) アクション コラムから 整合性グループの編集 を選択して、整合性グループの名前または説明を変更することができます。
- 整合性グループから直接にボリュームを追加または削除するには、Dashboard で管理者ユーザーとして プロジェクト > コンピュート > ボリューム > ボリュームの整合性グループ を選択します。
設定する整合性グループを特定します。その整合性グループの アクション コラムで、ボリュームの管理 を選択します。これにより、整合性グループボリュームの追加/削除 ウィザードが起動します。
- 整合性グループにボリュームを追加するには、利用可能な全ボリューム リストから追加するボリュームの + ボタンをクリックします。
- 整合性グループからボリュームを削除するには、選択済みのボリューム リストから削除するボリュームの - ボタンをクリックします。
- 整合性グループの編集 をクリックします。
2.9.4. Block Storage サービス用の整合性グループのスナップショットの作成および管理
整合性グループにボリュームを追加したら、そこからスナップショットを作成することができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
openstack-cinder-api
をホストするノードのコマンドラインからadmin
ユーザーとしてログインし、次のように入力します。# export OS_VOLUME_API_VERSION=2
これにより、
openstack-cinder-api
のバージョン2
を使用するようにクライアントが設定されます。利用可能な整合性グループおよびその ID をすべて表示します。
# cinder consisgroup-list
整合性グループを使用してスナップショットを作成します。
# cinder cgsnapshot-create --name <CGSNAPNAME> --description "<DESCRIPTION>" <CGNAMEID>
以下を置き換えます。
-
<CGSNAPNAME>
とスナップショットの名前 (オプション)。 -
スナップショットの説明を含む
<DESCRIPTION>
(オプション)。 -
<CGNAMEID>
と整合性グループの名前または ID。
-
利用可能な整合性グループのスナップショットの全リストを表示します。
# cinder cgsnapshot-list
2.9.5. Block Storage サービスの整合性グループのクローン作成
整合性グループを使用して、事前に設定されたボリューム群を一括で同時に作成することもできます。この操作は、既存の整合性グループをクローンするか、整合性グループのスナップショットをリストアすることによって実行できます。いずれのプロセスも同じコマンドを使用します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
既存の整合性グループのクローンを作成するには、以下のコマンドを実行します。
# cinder consisgroup-create-from-src --source-cg <CGNAMEID> --name <CGNAME> --description "<DESCRIPTION>"
以下を置き換えます。
-
<CGNAMEID>
は、複製する整合性グループの名前または ID です。 -
<CGNAME>
は、整合性グループの名前です (オプション)。 -
<DESCRIPTION>
は、整合性グループの説明です (オプション)。
-
整合性グループのスナップショットから整合性グループを作成するには、以下のコマンドを実行します。
# cinder consisgroup-create-from-src --cgsnapshot <CGSNAPNAME> --name <CGNAME> --description "<DESCRIPTION>
<CGSNAPNAME>
は、整合性グループの作成に使用するスナップショットの名前または ID に置き換えてください。
2.10. ボリュームを作成するバックエンドの指定
複数の Block Storage (cinder) バックエンドが設定された場合には、必ず、バックエンドごとにボリューム種別も作成する必要があります。その種別を使用して、作成したボリュームに、どのバックエンドを使用するかを指定することができます。ボリューム種別の詳しい情報は、「ボリューム種別によるボリューム設定のグループ化」を参照してください。
ボリュームの作成時にバックエンドを指定するには、種別 のリストから適切なボリューム種別を選択します (「Block Storage ボリュームの作成」を参照)。
ボリュームの作成時にバックエンドを指定しない場合には、Block Storage サービスにより自動的に選択されます。デフォルトでは、このサービスは、最も空き容量の多いバックエンドを選択します。また、Block Storage サービスが利用可能な全バックエンドから無作為に選択するように設定することも可能です。詳細は、「複数バックエンドへのボリュームの割り当て」 を参照してください。
2.11. オーバークラウドノードでの LVM2 フィルターの有効化
特定の BlockStorage Service (cinder) バックエンドで LVM2 (Logical Volume Management) ボリュームを使用する場合、Red Hat OpenStack Platform (RHOSP) ゲスト内で作成したボリュームが、cinder-volume
または nova-compute
をホストするオーバークラウドノードに表示される場合があります。この場合、ホスト上の LVM2 ツールは、OpenStack ゲストが作成する LVM2 ボリュームをスキャンします。これにより、Compute ノードまたはコントローラーノードで次の問題が 1 つ以上発生する可能性があります。
- LVM がゲストからのボリュームグループを表示するように見える
- LVM が重複するボリュームグループ名を報告する
- LVM がストレージにアクセスしているため、ボリュームの切り離しが失敗する
- LVM の問題が原因でゲストがブートに失敗する
- ゲストマシン上の LVM は、実際に存在するディスクが見つからないため、部分的な状態にある
- LVM を持つデバイスで Block Storage サービス (cinder) のアクションが失敗する
- Block Storage サービス (cinder) のスナップショットが正しく削除されない
-
ライブマイグレーション中のエラー:
/etc/multipath.conf
が存在しない
この誤ったスキャンを防ぎ、ゲスト LVM2 ボリュームをホストノードから分離するために、オーバークラウドのデプロイまたは更新時に LVMFilterEnabled
heat パラメーターを使用してフィルターを有効にし、設定できます。このフィルターは、アクティブな LVM2 ボリュームをホストする物理デバイスのリストから計算されます。LVMFilterAllowlist
および LVMFilterDenylist
パラメーターを使用して、ブロックデバイスを明示的に許可および拒否することもできます。このフィルタリングは、グローバルに、特定のノードロールに、または特定のデバイスに適用できます。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Installing the undercloud を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
$ source ~/stackrc
新しい環境ファイルを作成するか、既存の環境ファイルを変更します。この例では、新しいファイル
lvm2-filtering.yaml
を作成します。$ touch ~/lvm2-filtering.yaml
環境ファイルに以下のパラメーターを追加します。
parameter_defaults: LVMFilterEnabled: true
LVM2 フィルターの実装はさらにカスタマイズできます。たとえば、Compute ノードでのみフィルタリングを有効にするには、次の設定を使用します。
parameter_defaults: ComputeParameters: LVMFilterEnabled: true
これらのパラメーターは、正規表現もサポートしています。コンピュートノードでのみフィルタリングを有効にし、
/dev/sd
で始まるすべてのデバイスを無視するには、次の設定を使用します。parameter_defaults: ComputeParameters: LVMFilterEnabled: true LVMFilterDenylist: - /dev/sd.*
openstack overcloud deploy
コマンドを実行し、LVM2 フィルタリング設定を含む環境ファイルと、オーバークラウドデプロイメントに関連するその他の環境ファイルを含めます。$ openstack overcloud deploy --templates \ <environment-files> \ -e lvm2-filtering.yaml
2.12. マルチパス設定
マルチパスを使用してサーバーノードおよびストレージアレイ間の複数の I/O パスを単一のデバイスに設定することで、冗長性が得られると共にパフォーマンスが向上します。
2.12.1. director を使用したマルチパスの設定
Red Hat OpenStack Platform (RHOSP) オーバークラウドデプロイメントでマルチパスを設定して、帯域幅とネットワークの耐障害性を向上させることができます。
既存のデプロイメントでマルチパスを設定すると、新しいワークロードはマルチパスに対応します。既存のワークロードがある場合は、これらのインスタンスでマルチパスを有効にするには、インスタンスを退避して復元する必要があります。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 source コマンドで
stackrc
認証情報ファイルを読み込みます。$ source ~/stackrc
上書き環境ファイルを使用するか、
multipath_overrides.yaml
などの新しい環境ファイルを作成します。以下のパラメーターを追加して設定します。parameter_defaults: ExtraConfig: cinder::config::cinder_config: backend_defaults/use_multipath_for_image_xfer: value: true
注記デフォルト設定では、ほとんどの環境で機能する基本的なマルチパス設定が生成されます。ただし、一部のストレージベンダーはハードウェア固有の最適化した設定を使用しているので、ベンダーに推奨事項を問い合わせてください。マルチパスについての詳細は、Device Mapper Multipath の設定 を参照してください。
オプション: オーバークラウドデプロイメント用のマルチパス設定ファイルがある場合、
MultipathdCustomConfigFile
パラメーターを使用してこのファイルの場所を指定します。マルチパス設定ファイルを
/var/lib/mistral
ディレクトリーにコピーする必要があります。$ sudo cp <config_file_name> /var/lib/mistral
<config_file_name>
をファイルの名前に置き換えます。MultipathdCustomConfigFile
パラメーターを、マルチパス設定ファイルの次の場所に設定します。parameter_defaults: MultipathdCustomConfigFile: /var/lib/mistral/<config_file_name>
注記他の TripleO マルチパスパラメーターは、ローカルのカスタム設定ファイル内の対応する値を上書きします。たとえば、
MultipathdEnableUserFriendlyNames
がFalse
の場合、ローカルのカスタムファイルで設定が有効になっている場合でも、オーバークラウドノードのファイルが一致するように更新されます。マルチパスパラメーターの詳細は、Multipath heat template parameters を参照してください。
ご自分の環境に該当するその他の環境ファイルと共に、環境ファイルを
openstack overcloud deploy
コマンドに追加します。$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/multipathd.yaml -e multipath_overrides.yaml \ …
2.12.1.1. マルチパス heat テンプレートパラメーター
マルチパスを有効にする以下のパラメーターについては、これを使用します。
パラメーター | 説明 | デフォルト値 |
---|---|---|
|
マルチパスデーモンを有効にするかどうかを定義します。このパラメーターは、 |
|
| 各パスに対してユーザーフレンドリーな名前の割り当てを有効にするかどうかを定義します。 |
|
| パスごとにマルチパスデバイスを自動的に作成するかどうかを定義します。 |
|
| デバイスで自動的にパーティションの作成を省略するかどうかを定義します。 |
|
|
オーバークラウドノードのカスタムマルチパス設定ファイルが含まれています。デフォルトでは、最小の
注意: 他の TripleO マルチパスパラメーターは、追加するローカルのカスタム設定ファイルの対応する値を上書きします。たとえば、 |
2.12.2. マルチパス設定の確認
以下の手順で、新規または既存のオーバークラウドデプロイメントのマルチパス設定を確認する方法を説明します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
- 仮想マシンを作成します。
- 暗号化されていないボリュームを仮想マシンに割り当てます。
インスタンスが含まれるコンピュートノードの名前を取得します。
$ nova show INSTANCE | grep OS-EXT-SRV-ATTR:host
INSTANCE をブートした仮想マシンの名前に置き換えます。
インスタンスの virsh 名を取得します。
$ nova show INSTANCE | grep instance_name
INSTANCE をブートした仮想マシンの名前に置き換えます。
Compute ノードの IP アドレスを取得します。
$ . stackrc $ nova list | grep compute_name
compute_name を
nova show INSTANCE
コマンドの出力に表示される名前に置き換えます。仮想マシンを実行するコンピュートノードに SSH 接続します。
$ ssh heat-admin@COMPUTE_NODE_IP
COMPUTE_NODE_IP をコンピュートノードの IP アドレスに置き換えます。
virsh を実行するコンテナーにログインします。
$ podman exec -it nova_libvirt /bin/bash
Compute ノードインスタンスで以下のコマンドを入力し、cinder ボリュームホストの場所でマルチパスが使用されていることを確認します。
virsh domblklist VIRSH_INSTANCE_NAME | grep /dev/dm
VIRSH_INSTANCE_NAME を
nova show INSTANCE | grep instance_name
コマンドの出力に置き換えます。インスタンスに
/dev/dm-
以外の値が表示されている場合、接続は非マルチパスであるため、nova shelve
およびnova unshelve
コマンドを使用して接続情報を更新する必要があります。$ nova shelve <instance> $ nova unshelve <instance>
注記複数の種別のバックエンドがある場合には、すべてのバックエンド上のインスタンスおよびボリュームを検証する必要があります。これは、各バックエンドが返す接続情報が異なる可能性があるためです。
第3章 Block Storage サービス (cinder) を使用した基本的な操作の実行
オーバークラウド内の Compute インスタンスのプライマリー永続ストレージとして Block Storage ボリュームを作成して設定します。ボリュームを作成し、ボリュームをインスタンスにアタッチし、ボリュームの編集およびサイズ変更を行い、ボリュームの所有権を変更します。
3.1. Block Storage ボリュームの作成
ボリュームを作成して、オーバークラウドの Compute サービス (nova) を使用して起動するインスタンスの永続ストレージを提供します。
デフォルトでは、1 つのプロジェクトで作成可能な最大のボリューム数は 10 です。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
ボリュームの作成 をクリックして、以下のフィールドを編集します。
フィールド 説明 ボリューム名
ボリュームの名前
説明
ボリュームの簡単な説明 (オプション)
型
オプションのボリューム種別 (「ボリューム種別によるボリューム設定のグループ化」を参照)
複数の Block Storage バックエンドがある場合には、このフィールドを使用して特定のバックエンドを選択します。「ボリュームを作成するバックエンドの指定」を参照してください。
容量 (GB)
ボリュームの容量 (ギガバイト単位)暗号化されていないイメージから暗号化されたボリュームを作成する場合は、暗号化データがボリュームデータを切り捨てないように、ボリュームのサイズがイメージサイズより大きいようにする必要があります。
アベイラビリティーゾーン
アベイラビリティーゾーン (論理サーバーグループ) は、ホストアグリゲートと併せて、OpenStack 内のリソースを分離する一般的な方法です。アベイラビリティーゾーンは、インストール中に定義されます。アベイラビリティーゾーンとホストアグリゲートについてのさらに詳しい説明は、Configuring the Compute Service for Instance Creationの Creating and managing host aggregates を参照してください。
ボリュームソース を指定します。
ソース 説明 ソースの指定なし (空のボリューム)
ボリュームは空で、ファイルシステムやパーティションテーブルは含まれません。
スナップショット
既存のスナップショットをボリュームソースとして使用します。このオプションを選択すると、スナップショットをソースとして使用する のリストが新たに表示され、スナップショットを選択できるようになります。暗号化されたボリュームのスナップショットから新規ボリュームを作成する場合は、新規ボリュームが古いボリュームより 1 GB 以上大きいようにする必要があります。ボリュームのスナップショットについての詳しい情報は、「ボリュームスナップショットの作成、使用、削除」を参照してください。
Image
既存のイメージをボリュームソースとして使用します。このオプションを選択すると、スナップショットをソースとして使用する のリストが新たに表示され、イメージを選択できるようになります。
ボリューム
既存のボリュームをボリュームソースとして使用します。このオプションを選択すると、スナップショットをソースとして使用する のリストが新たに表示され、ボリュームを選択できるようになります。
- ボリュームの作成 をクリックします。ボリュームが作成されると、ボリューム の表に名前が表示されます。
後ほどボリュームの種別を変更することも可能です。詳細は、「Block Storage のボリューム種別の変更」を参照してください。
3.2. ボリュームの名前と説明の編集
Dashboard (horizon) でボリューム名および説明を編集します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 対象のボリュームの ボリュームの編集 ボタンをクリックします。
- 必要に応じて、ボリュームの名前または説明を編集します。
- ボリュームの編集 をクリックして、変更を保存します。
暗号化ボリュームを作成するには、最初にボリュームの暗号化専用に設定されたボリューム種別を使用する必要があります。また、Compute サービスと Block Storage サービスの両方で、同じ静的キーを使用するように設定しておく必要があります。ボリュームの暗号化に必要な設定の方法についての説明は、「Block Storage サービス (cinder) ボリュームの暗号化」を参照してください。
3.3. Block Storage サービスボリュームのサイズ変更 (拡張)
ボリュームのサイズを変更して、ボリュームのストレージ容量を増やします。
使用中のボリュームのサイズを変更する機能はサポートされていますが、ドライバーに依存します。RBD がサポートされています。使用中のマルチ接続ボリュームを拡張することはできません。この機能のサポートについての詳細は、Red Hat のサポートにお問い合わせください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
ボリュームをリスト表示し、拡張するボリュームの ID を取得します。
$ cinder list
ボリュームのサイズを変更するには、以下のコマンドを実行して正しい API マイクロバージョンを指定し、ボリューム ID および新しいサイズ (現在のサイズより大きい値) をパラメーターとして渡します。
$ OS_VOLUME_API_VERSION=<API microversion> $ cinder extend <volume ID> <size>
<API microversion>、<volume ID>、および <size> を適切な値に置き換えます。以下の例を目安にしてください。
$ OS_VOLUME_API_VERSION=3.42 $ cinder extend 573e024d-5235-49ce-8332-be1576d323f8 10
3.4. Block Storage サービスボリュームの削除
Dashboard を使用して、不要になったボリュームを削除します。
スナップショットが存在する場合には、ボリュームは削除できません。スナップショットの削除手順については、「ボリュームスナップショットの作成、使用、削除」を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- ボリューム の表で、削除するボリュームを選択します。
- ボリュームの削除 をクリックします。
3.5. 複数バックエンドへのボリュームの割り当て
Block Storage サービスが複数のバックエンドを使用するように設定されている場合には、設定済みのボリューム種別を使用して、ボリュームの作成先を指定することができます。詳細は、「ボリュームを作成するバックエンドの指定」 を参照してください。
ボリュームの作成時にバックエンドを指定していない場合には、Block Storage サービスにより、自動的に選択されます。Block Storage は、最初に定義したバックエンドをデフォルトとして設定します。このバックエンドは、容量がなくなるまで使用されます。容量がなくなった時点で、Block Storage は 2 番目に定義されたバックエンドをデフォルトに設定し、その容量がなくなるとさらに次のバックエンドがデフォルトに設定されるようになっています。
このメカニズムが必要な条件を満たさない場合には、フィルタースケジューラーを使用して、Block Storage がバックエンドを選択する方法を制御することができます。このスケジューラーは、以下の例に示したような異なるフィルターを使用して適切なバックエンドをトリアージすることができます。
- AvailabilityZoneFilter
- 要求されたボリュームのアベイラビリティーゾーン要件を満たさないバックエンドを除外します。
- CapacityFilter
- ボリュームを収容するのに十分な容量のあるバックエンドのみを選択します。
- CapabilitiesFilter
- ボリュームで指定した設定に対応可能なバックエンドのみを選択します。
- InstanceLocality
- クラスターが、同じノードに対してローカルのボリュームを使用するように設定します。
前提条件
- アンダークラウドの正常なインストール。詳しくは、Director Installation and Usage を参照してください。
手順
以下のパラメーターが含まれる環境ファイルをデプロイメントコマンドに追加します。
parameter_defaults: ControllerExtraConfig: # 1 cinder::config::cinder_config: DEFAULT/scheduler_default_filters: value: 'AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,InstanceLocality'
- 1
ControllerExtraConfig:
フックとそのネストされているセクションを、既存の環境ファイルのparameter_defaults:
セクションに追加することもできます。
3.6. インスタンスへのボリュームの接続
インスタンスでは永続ストレージにボリュームを使用することができます。ボリュームは、1 度に 1 つのインスタンスにしか接続できません。インスタンスに関する詳細は、Creating and Managing Imagesの Image service を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 接続の編集 アクションを選択します。ボリュームがインスタンスに接続されていない場合には、インスタンスへの接続 のドロップダウンリストが表示されます。
- インスタンスへの接続 のリストから、ボリュームの接続先となるインスタンスを選択します。
- ボリュームの接続 をクリックします。
3.7. インスタンスからのボリュームの切断
インスタンスでは永続ストレージにボリュームを使用することができます。ボリュームは、1 度に 1 つのインスタンスにしか接続できません。インスタンスに関する詳細は、Creating and Managing Imagesの Image service を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 対象のボリュームの 接続の管理 アクションを選択します。ボリュームがインスタンスに接続されている場合には、そのインスタンスの名前が 接続状況 の表に表示されます。
- 表示中のダイアログ画面と次の画面で ボリュームの切断 をクリックします。
3.8. ボリュームへのアクセス権の設定
ボリュームのデフォルトの状態は read-write で、データの書き込みおよびそこからの読み取りを可能にします。ボリュームを読み取り専用としてマークし、そのデータが誤って上書きまたは削除されないようにすることができます。
ボリュームを読み取り専用に変更すると、再度読み取り/書き込みに戻すことができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
- ボリュームがすでにインスタンスに接続されている場合は、このボリュームをデタッチします。詳細は、「インスタンスからのボリュームの切断」 を参照してください。
このボリュームに必要なアクセス権限を設定します。
ボリュームのアクセス権限を読み取り専用に設定するには、以下の手順を実施します。
# cinder readonly-mode-update <VOLUME-ID> true
ボリュームのアクセス権限を読み書きに設定するには、以下の手順を実施します。
# cinder readonly-mode-update <VOLUME-ID> false
- アクセス権限を変更するためにインスタンスからこのボリュームをデタッチした場合は、ボリュームを再接続します。詳細は、「インスタンスへのボリュームの接続」 を参照してください。
3.9. CLI を使用したボリューム所有者の変更
ボリュームの所有者を変更するには、ボリュームの譲渡を行います。ボリュームの譲渡は、ボリュームの所有者が開始し、ボリュームの新しい所有者が譲渡を承認すると、そのボリュームの所有権の変更が完了します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
- コマンドラインから、ボリュームの現在の所有者としてログインします。
利用可能なボリュームをリスト表示します。
# cinder list
以下のコマンドを実行して、ボリュームの譲渡を開始します。
# cinder transfer-create VOLUME
VOLUME
は譲渡するボリュームの名前またはID
に置き換えます。以下に例を示します。+------------+--------------------------------------+ | Property | Value | +------------+--------------------------------------+ | auth_key | f03bf51ce7ead189 | | created_at | 2014-12-08T03:46:31.884066 | | id | 3f5dc551-c675-4205-a13a-d30f88527490 | | name | None | | volume_id | bcf7d015-4843-464c-880d-7376851ca728 | +------------+--------------------------------------+
cinder transfer-create
コマンドはボリュームの所有権を消去し、譲渡用のid
とauth_key
を作成します。この値は別のユーザーに渡すことができます。受け取ったユーザーは、その値を使用して譲渡を承認し、ボリュームの新しい所有者となります。新規ユーザーがボリュームの所有権を宣言できる状態となりました。所有権を宣言するには、ユーザーは最初にコマンドラインからログインして以下のコマンドを実行する必要があります。
# cinder transfer-accept TRANSFERID TRANSFERKEY
TRANSFERID
とTRANSFERKEY
はそれぞれ、cinder transfer-create
コマンドで返されたid
とauth_key
の値に置き換えます。以下に例を示します。# cinder transfer-accept 3f5dc551-c675-4205-a13a-d30f88527490 f03bf51ce7ead189
利用可能なボリュームの譲渡をすべて表示するには、以下のコマンドを実行します。
# cinder transfer-list
3.10. Dashboard を使用したボリューム所有者の変更
ボリュームの所有者を変更するには、ボリュームの譲渡を行います。ボリュームの譲渡は、ボリュームの所有者が開始し、ボリュームの新しい所有者が譲渡を承認すると、そのボリュームの所有権の変更が完了します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard にボリュームの所有者としてログインして プロジェクト > ボリューム を選択します。
- 譲渡するボリュームの アクション のコラムで、譲渡の作成 を選択します。
ボリュームの譲渡の作成 ダイアログボックスで、譲渡名を入力して ボリュームの譲渡の作成 をクリックします。
ボリュームの譲渡が作成され、ボリュームの譲渡 の画面で
譲渡 ID
と認証キー
を取得して譲渡先のプロジェクトに送信することができます。譲渡認証情報のダウンロード ボタンをクリックして
transfer name
、transfer ID
、authorization key
が記載されている.txt
ファイルをダウンロードします。注記認証キーは ボリュームの譲渡 の画面にしか表示されません。この認証キーをなくした場合には、譲渡をキャンセルし、別の譲渡を作成して新たな認証キーを生成する必要があります。
ボリュームの譲渡 の画面を閉じて、ボリュームのリストに戻ります。
譲渡先のプロジェクトが譲渡を受理するまで、ボリュームのステータスは
awaiting-transfer
と表示されます。
Dashboard を使用したボリューム譲渡の受理
- Dashboard にボリュームの譲渡先としてログインして プロジェクト > ボリューム を選択します。
- 譲渡の受理 をクリックします。
ボリュームの譲渡の受理 のダイアログボックスで、ボリュームの所有者から受け取った
譲渡 ID
と認証キー
を入力して、ボリュームの譲渡の受理 をクリックします。譲渡先のプロジェクトのボリュームリストに、そのボリュームが表示されるようになります。
第4章 Block Storage サービス (cinder) を使用した高度な操作の実行
Block Storage ボリュームは、オーバークラウド内のコンピュートインスタンス用の永続ストレージを形成します。ボリュームのスナップショットの使用、ボリュームの移行、ボリューム種別の変更、マルチパスの設定など、ボリュームの高度な機能を設定します。
4.1. ボリュームスナップショットの作成、使用、削除
ボリュームのスナップショットを作成することによって、ある特定の時点のボリュームの状態を保持することができます。そのスナップショットを使用して、新規ボリュームをクローン作成することが可能です。
ボリュームのバックアップはスナップショットとは異なります。バックアップはボリューム内のデータを保持するのに対して、スナップショットはある特定の時点におけるボリュームの状態を保持します。スナップショットが存在している場合にはボリュームを削除することはできません。ボリュームのバックアップはデータ損失を防ぎます。一方、スナップショットはクローン作成を円滑化します。
このため、スナップショットのバックエンドは、クローン作成中のレイテンシーを最小限に抑えるように、通常ボリュームのバックエンドと同じ場所に配置されます。一方、バックアップのリポジトリーは通常、一般的なエンタープライズデプロイメント内の別の場所に配置されます (例: 異なるノード、物理ストレージ、あるいは別の地理的ロケーションの場合もあり)。これは、ボリュームのバックエンドが一切ダメージを受けないように保護することを目的とします。
ボリュームのバックアップについての詳しい情報は、Block Storage Backup Guide を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 対象のボリュームの スナップショットの作成 アクションを選択します。
- 作成するスナップショッットの スナップショット名 を指定して ボリュームのスナップショットの作成 をクリックします。ボリュームのスナップショット タブに全スナップショットが表示されます。
ボリュームのスナップショット の表にスナップショットが表示されたら、そのスナップショットから新規ボリュームをクローン作成することができます。この操作を行うには、対象のスナップショットの ボリュームの作成 アクションを選択します。ボリュームの作成に関する詳しい説明は、「Block Storage ボリュームの作成」を参照してください。
暗号化されたボリュームのスナップショットから新規ボリュームを作成する場合は、新規ボリュームが古いボリュームより 1 GB 以上大きいようにします。
スナップショットを削除するには、ボリュームスナップショットの削除 アクションを選択します。
OpenStack デプロイメントで Red Hat Ceph バックエンドを使用している場合には、「Red Hat Ceph Storage バックエンドにおけるスナップショットの保護と保護解除」でスナップショットのセキュリティーとトラブルシューティングについての詳しい情報を参照してください。
スナップショットから作成される Block Storage サービス (cinder) の RADOS ブロックデバイス (RBD) ボリュームの場合は、CinderRbdFlattenVolumeFromSnapshot
heat パラメーターを使用してフラット化し、スナップショットの依存関係を削除することができます。CinderRbdFlattenVolumeFromSnapshot
を true
に設定すると、Block Storage サービスは RBD ボリュームをフラット化してスナップショットの依存関係を削除すると共に、それ以降のスナップショットもすべてフラット化します。デフォルト値は false で、cinder RBD ドライバーのデフォルト値も false です。
スナップショットをフラット化すると、親との潜在的なブロック共有が削除され、バックエンドでのスナップショットサイズが大きくなり、スナップショット作成の時間が長くなることに注意してください。
4.2. スナップショットからのボリュームの復元
ボリュームの最新スナップショットの状態に復元することができます。つまり、インプレースでボリュームデータをその最新スナップショットの状態に戻すことができます。
ボリュームの最新スナップショットの状態に復元する機能はサポート対象ですが、ドライバーに依存します。この機能を正しく実装するには、ドライバー側の支援が必要です。この機能に対するサポートの詳細は、ドライバーのベンダーにお問い合わせください。
制限事項
- マルチ接続のボリュームの場合、スナップショットの状態に戻す機能の使用には制限が適用される可能性があります。この機能を使用する前に、このような制限が適用されるかどうかを確認してください。
- スナップショットの作成後にサイズを変更 (拡張) したボリュームを元に戻すことはできません。
- 接続済みまたは使用中のボリュームに対して、スナップショットの状態に戻す機能を使用することはできません。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
- Block Storage (cinder) API マイクロバージョン 3.40 またはそれ以降
- ボリュームのスナップショットを少なくとも 1 つ作成していること。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 source コマンドで
overcloudrc
ファイルを読み込みます。[stack@undercloud ~] $ source overcloudrc
ボリュームを切断します。
$ nova volume-detach <instance_id> <vol_id>
<instance_id> および <vol_id> を、元に戻すインスタンスおよびボリュームの ID に置き換えてください。
元に戻すスナップショットの ID または名前を探します。元に戻すことができるのは最新のスナップショットだけです。
$ cinder snapshot-list
スナップショットの状態に戻します。
$ cinder --os-volume-api-version=3.40 revert-to-snapshot <snapshot_id or snapshot_name>
<snapshot_id or snapshot_name> をスナップショットの ID または名前に置き換えてください。
オプション:
cinder snapshot-list
コマンドを使用して、元に戻しているボリュームが reverting の状態にあることを確認することができます。$ cinder snapshot-list
ボリュームを再接続します。
$ nova volume-attach <instance_id> <vol_id>
<instance_id> および <vol_id> を、元に戻したインスタンスおよびボリュームの ID に置き換えてください。
検証
手順が正常に行われたことを確認するには、
cinder list
コマンドを使用して、元に戻したボリュームが available の状態にあることを検証します。$ cinder list
Block Storage (cinder) をブート可能なルートボリュームとして使用した場合、ボリュームは available の状態にないため、そのボリュームでスナップショットの状態に戻す機能を使用することはできません。この機能を使用するには、インスタンスが終了した場合にブートボリュームを保持するために、delete_on_termination=false
(デフォルト) の属性を設定してインスタンスをブートしている必要があります。スナップショットの状態に戻す場合は、ボリュームが利用可能になるように、まず初期インスタンスを削除する必要があります。その後、元に戻してボリュームから新規インスタンスを作成することができます。
4.3. Image サービス (glance) へのボリュームのアップロード
イメージとして既存のボリュームを Image サービスに直接アップロードすることができます。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 対象のボリュームの イメージにアップロード アクションを選択します。
- ボリュームの イメージ名 を指定して、リストから ディスク形式 を選択します。
- アップロード をクリックします。
アップロードしたイメージを表示するには、プロジェクト > コンピュート > イメージ を選択します。新しいイメージが イメージ の表に表示されます。イメージの使用方法と設定方法については、Creating and Managing Imagesの Image service を参照してください。
4.4. バックエンド間でのボリュームの移動
ボリュームをあるストレージバックエンドから別のストレージバックエンドに移動する理由には、以下のような理由があります。
- サポートされなくなったストレージシステムの使用を停止するため。
- ボリュームのストレージクラスまたは階層を変更するため。
- ボリュームのアベイラビリティーゾーンを変更するため。
Block Storage サービス (cinder) を使用すると、以下の方法でバックエンド間でボリュームを移動することができます。
- 種別の変更: デフォルトのポリシーにより、ボリュームの所有者と管理者はボリューム種別を変更することができます。種別変更の操作は、バックエンド間でボリュームを移動する最も一般的な方法です。
- 移行: デフォルトのポリシーでは、管理者のみがボリュームを移行することができます。ボリュームの移行は特定のユースケース用に制限されます。これは、移行に制約があるため、またデプロイメントの動作について明確に理解する必要があるためです。詳細は、「CLI を使用したバックエンド間でのボリュームの移行」 を参照してください。
制約
Red Hat は、同一または異なるアベイラビリティーゾーン (AZ) にあるバックエンド間のボリュームの移動をサポートしますが、以下の制約があります。
- 移行するボリュームは、利用可能な状態または使用中の状態のいずれかでなければなりません。
- 使用中のボリュームのサポートはドライバーに依存します。
- ボリュームにはスナップショットを含めることができません。
- ボリュームは、グループまたは整合性グループに所属させることはできません。
4.4.1. 利用可能なボリュームの移動
すべてのバックエンド間で利用可能なボリュームを移動できますが、パフォーマンスは使用するバックエンドにより異なります。多くのバックエンドは、アシスト付き移行をサポートします。バックエンドのアシスト付き移行のサポートについての詳細は、ベンダーにお問い合わせください。
アシスト付き移行は、ボリューム種別変更およびボリュームの移行の両方で機能します。アシスト付き移行により、バックエンドはソースバックエンドから移行先バックエンドへのデータの移動を最適化しますが、両方のバックエンドが同じベンダーから取得されている必要があります。
Red Hat は、マルチプールバックエンドを使用する場合、または RBD などのシングルプールバックエンドに cinder の移行操作を使用する場合のみ、バックエンドアシスト付き移行をサポートしています。
バックエンド間のアシスト付き移行ができない場合には、Block Storage サービスは通常のボリューム移行を実行します。
通常のボリューム移行では、Block Storage (cinder) サービスが移行元ボリュームからコントローラーノードに、およびコントローラーノードから移行先ボリュームにデータを移動する前に、両方のバックエンド上のボリュームを接続する必要があります。Block Storage サービスは、ソースおよび宛先のバックエンドのストレージの種類に関わらず、プロセスをシームレスに実行します。
通常のボリューム移行を実行する前に、十分な帯域幅を確保してください。通常のボリューム移行にかかる時間は、ボリュームのサイズと直接比例するため、操作はアシスト付き移行よりも遅くなります。
4.4.2. 使用中のボリュームの移動
使用中のボリュームを移動する場合、最適化のオプションまたはアシスト付きのオプションはありません。使用中のボリュームを移行する場合には、Compute サービス (nova) がハイパーバイザーを使用して、移行元バックエンドのボリュームから移行先バックエンドのボリュームにデータを転送する必要があります。これには、ボリュームが使用されているインスタンスを実行するハイパーバイザーとの連携が必要です。
Block Storage サービス (cinder) と Compute サービスは、連携してこの操作を実施します。データが Compute ノードを介してあるボリュームから別のボリュームにコピーされるため、Compute サービスがほとんどの作業を管理します。
使用中のボリュームを移動する前に、十分な帯域幅を確保してください。この操作にかかる時間は、ボリュームのサイズと直接比例するため、操作はアシスト付き移行よりも遅くなります。
制約
- 使用中のマルチ接続ボリュームは、複数の nova インスタンスに接続している間は移動できません。
- ターゲットバックエンドのストレージプロトコルを iSCSI、ファイバーチャネル (FC)、および RBD に制限する、非ブロックデバイスはサポートされません。
4.5. Block Storage のボリューム種別の変更
ボリューム種別の変更は、あるバックエンドから別のバックエンドにボリュームを移動する標準的な方法です。操作を実行するには、管理者はそれぞれのバックエンドに適切なボリューム種別を定義する必要があります。デフォルトのポリシーにより、ボリュームの所有者と管理者はボリューム種別を変更することができます。
ボリューム種別を変更する際には、ボリューム種別とその設定を既存のボリュームに適用します。ボリューム種別の詳しい情報は、「ボリューム種別によるボリューム設定のグループ化」を参照してください。
新規ボリューム種別の追加スペックを既存のボリュームに適用できる場合、ボリューム種別を変更することができます。ボリューム種別を変更して、事前定義の設定やストレージ属性を既存ボリュームに適用することができます。以下に例を示します。
- 異なるバックエンドへボリュームを移行する場合
- ボリュームのストレージクラスまたは階層を変更するため。
- レプリケーションなどの機能を有効または無効にする場合
ボリューム種別を変更したからといって、そのボリュームをあるバックエンドから別のバックエンドに移動しなければならない訳ではありません。ただし、種別変更を完了するのにボリュームを移動しなければならない場合があります。
-
新しいボリュームタイプには、異なる
volume_backend_name
定義されています。 -
現在のボリュームタイプの
volume_backend_name
は未定義であり、ボリュームは新しいボリュームタイプのvolume_backend_name
で指定されたものとは異なるバックエンドに格納されます。
ボリュームをあるバックエンドから別のバックエンドに移動するには、非常に多くの時間とリソースが必要になる場合があります。したがって、種別の変更でデータを移動する必要がある場合には、Block Storage サービスはデフォルトではデータを移動しません。種別変更の要求の一部として移行ポリシーを指定して移動を明示的に許可しない限り、操作は失敗します。詳細は、「コマンドラインを使用したボリューム種別の変更」を参照してください。
制約
- すべてのボリューム種別を変更することはできません。バックエンド間のボリュームの移動に関する詳細は、「バックエンド間でのボリュームの移動」を参照してください。
- 暗号化されていないボリュームは、暗号化されたボリューム種別に変更することはできませんが、暗号化されたボリュームは暗号化されていないボリューム種別に変更できます。
- 暗号化されていないボリュームを同じサイズの暗号化されたボリュームに種別変更する操作はサポートされません。暗号化したボリュームには、暗号化データを格納するための追加領域が必要なためです。暗号化されていないボリュームの暗号化に関する詳細は、暗号化されていないボリュームの暗号化 を参照してください。
- 管理者権限のないユーザーは、自分が所有するボリュームの種別しか変更できません。
4.5.1. Dashboard UI を使用したボリューム種別の変更
Dashboard UI を使用してボリューム種別を変更します。
暗号化されていないボリュームを同じサイズの暗号化されたボリュームに種別変更する操作はサポートされません。暗号化したボリュームには、暗号化データを格納するための追加領域が必要なためです。暗号化されていないボリュームの暗号化に関する詳細は、暗号化されていないボリュームの暗号化 を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で プロジェクト > コンピュート > ボリューム を選択します。
- 移行するボリュームの アクション のコラムで、ボリューム種別の変更 を選択します。
- ボリューム種別の変更 ダイアログで、対象のボリューム種別を選択し、種別 のリストから新しいバックエンドを定義します。
- 別のバックエンドにボリュームを移行する場合は、移行ポリシー のリストから 要求時 を選択します。詳細は、「バックエンド間でのボリュームの移動」を参照してください。
- ボリューム種別の変更 をクリックして移行を開始します。
4.5.2. コマンドラインを使用したボリューム種別の変更
Dashboard UI の手順と同様に、コマンドラインからボリューム種別を変更することができます。
暗号化されていないボリュームを同じサイズの暗号化されたボリュームに種別変更する操作はサポートされません。暗号化したボリュームには、暗号化データを格納するための追加領域が必要なためです。暗号化されていないボリュームの暗号化に関する詳細は、暗号化されていないボリュームの暗号化 を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
以下のコマンドを入力してボリューム種別を変更します。
$ cinder retype <volume name or id> <new volume type name>
種別変更の操作で、あるバックエンドから別のバックエンドにボリュームを移動する必要がある場合は、Block Storage サービスには特定のフラグが必要です。
$ cinder retype --migration-policy on-demand <volume name or id> <new volume type name>
4.6. 複数インスタンスへのボリュームの接続
ボリュームのマルチ接続により、複数のインスタンスが Block Storage ボリュームに同時に読み取り/書き込みアクセスを行うことができます。Ceph RBD ドライバーがサポートされます。
複数インスタンスからの書き込み操作を管理するには、マルチ接続またはクラスター対応のファイルシステムを使用する必要があります。それ以外の設定では、データの破損が生じます。
マルチ接続ボリュームの制限
- Block Storage (cinder) のバックエンドは、マルチ接続ボリュームをサポートしている必要があります。サポートされるバックエンドについての情報は、Red Hat のサポートにお問い合わせください。
Block Storage (cinder) のドライバーは、マルチ接続ボリュームをサポートしている必要があります。ベンダープラグインでマルチ接続がサポートされることを確認するには、Red Hat のサポートにお問い合わせください。ベンダープラグインの認定についての詳しい情報は、以下のアーティクルおよび Web サイトを参照してください。
- 読み取り専用のマルチ接続ボリュームはサポートされていません。
- マルチ接続ボリュームのライブマイグレーションは利用できません。
- マルチ接続ボリュームの暗号化はサポートされていません。
- マルチ接続ボリュームは、ベアメタルプロビジョニングサービス (ironic) virt ドライバーではサポートされていません。マルチ接続ボリュームは、libvirt virt ドライバーによってのみサポートされます。
- アタッチされたボリュームをマルチ接続タイプから非マルチ接続タイプに再入力したり、非マルチ接続タイプをマルチ接続タイプに再入力したりすることはできません。
- アタッチされたボリュームの移行中に、複数の読み取り/書き込みアタッチメントを持つマルチ接続ボリュームをソースボリュームまたは宛先ボリュームとして使用することはできません。
- 見送られていたオフロードされたインスタンスにマルチ接続ボリュームをアタッチすることはできません。
4.6.1. マルチ接続ボリューム種別の作成
複数のインスタンスにボリュームを接続するには、ボリュームの追加スペックで multiattach
フラグを <is> True
に設定します。マルチ接続のボリューム種別を作成すると、ボリュームはフラグを継承し、マルチ接続のボリュームになります。
デフォルトでは、新規ボリューム種別の作成は管理者だけができる操作です。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
以下のコマンドを実行し、マルチ接続のボリューム種別を作成します。
$ cinder type-create multiattach $ cinder type-key multiattach set multiattach="<is> True"
注記この手順では、マルチ接続をサポートする任意のバックエンドにボリュームを作成します。したがって、マルチ接続をサポートするバックエンドが 2 つある場合、スケジューラーは、ボリューム作成時に利用可能な領域に基づいて使用するバックエンドを決定します。
バックエンドを指定するには、以下のコマンドを実行します。
$ cinder type-key multiattach set volume_backend_name=<backend_name>
4.6.2. マルチ接続ボリューム種別の変更
ボリュームをマルチ接続可能な種別に変更することや、マルチ接続可能なボリュームを複数インスタンスに接続できない種別に変更することが可能です。ただし、ボリューム種別を変更することができるのは、ボリュームが使用中ではなくそのステータスが available
の場合に限られます。
マルチ接続のボリュームを接続する場合、一部のハイパーバイザーでは、キャッシュを無効にする場合など、特別な考慮が必要になります。現在、接続済みのボリュームを接続したまま安全に更新する方法はありません。複数のインスタンスに接続されているボリュームの種別変更を試みると、変更に失敗します。
4.6.3. マルチ接続ボリュームの作成
マルチ接続のボリューム種別を作成したら、マルチ接続のボリュームを作成します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
手順
以下のコマンドを実行し、マルチ接続のボリュームを作成します。
$ cinder create <volume_size> --name <volume_name> --volume-type multiattach
以下のコマンドを実行して、ボリュームがマルチ接続に対応していることを確認します。ボリュームがマルチ接続に対応している場合、
multiattach
フィールドはTrue
と表示されます。$ cinder show <vol_id> | grep multiattach | multiattach | True |
次のステップ
4.7. Dashboard を使用したバックエンド間でのボリュームの移行
Block Storage サービス (cinder) を使用して、同一または異なるアベイラビリティーゾーン (AZ) にあるバックエンド間で、ボリュームを移行することができます。これは、あるバックエンドから別のバックエンドにボリュームを移行する方法としては、まったく一般的ではありません。デフォルトのポリシーでは、管理者のみがボリュームを移行することができます。デフォルトのポリシーは変更しないでください。
高度にカスタマイズされたデプロイメントの場合や、ストレージシステムを廃止する必要のある状況では、管理者はボリュームを移行できます。どちらのユースケースでも、複数のストレージシステムが同じ volume_backend_name
を共有しているか、未定義です。
制約
- ボリュームは複製できません。
- 移行先バックエンドは、ボリュームの現在のバックエンドとは異なる必要があります。
既存のボリューム種別は、新規バックエンドに対して有効である必要があります。つまり、以下の状況でなければなりません。
-
ボリュームタイプの追加仕様で
backend_volume_name
を定義することはできません。または、両方のブロックストレージバックエンドを同じbackend_volume_name
で設定する必要があります。 - どちらのバックエンドも、シンプロビジョニングのサポート、シックプロビジョニングのサポート、またはその他の機能設定など、ボリューム種別で設定した同じ機能をサポートする。
-
ボリュームタイプの追加仕様で
ボリュームをあるバックエンドから別のバックエンドに移動するには、非常に多くの時間とリソースが必要になる場合があります。詳細は、「バックエンド間でのボリュームの移動」を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、Creating a basic overcloud with CLI tools を参照してください。
- Red Hat OpenStack Platform (RHOSP) Dashboard (horizon) へのアクセス。詳細は、Overcloud deployment output を参照してください。
手順
- Dashboard で 管理 > ボリューム を選択します。
- 移行するボリュームの アクション のコラムで、ボリュームのマイグレーション を選択します。
ボリュームのマイグレーション ダイアログで、移行先ホスト ドロップダウンリストからボリュームを移行する先のホストを選択します。
注記ホストの移行でドライバーの最適化をスキップするには、強制ホストコピー のチェックボックスを選択します。
- マイグレーション をクリックして移行を開始します。
4.8. CLI を使用したバックエンド間でのボリュームの移行
Block Storage サービス (cinder) を使用して、同一または異なるアベイラビリティーゾーン (AZ) にあるバックエンド間で、ボリュームを移行することができます。これは、あるバックエンドから別のバックエンドにボリュームを移行する方法としては、まったく一般的ではありません。デフォルトのポリシーでは、管理者のみがボリュームを移行することができます。デフォルトのポリシーは変更しないでください。
高度にカスタマイズされたデプロイメントの場合や、ストレージシステムを廃止する必要のある状況では、管理者はボリュームを移行できます。どちらのユースケースでも、複数のストレージシステムが同じ volume_backend_name
を共有しているか、未定義です。
制約
- ボリュームは複製できません。
- 移行先バックエンドは、ボリュームの現在のバックエンドとは異なる必要があります。
既存のボリューム種別は、新規バックエンドに対して有効である必要があります。つまり、以下の状況でなければなりません。
-
ボリュームタイプの追加仕様で
backend_volume_name
を定義することはできません。または、両方のブロックストレージバックエンドを同じbackend_volume_name
で設定する必要があります。 - どちらのバックエンドも、シンプロビジョニングのサポート、シックプロビジョニングのサポート、またはその他の機能設定など、ボリューム種別で設定した同じ機能をサポートする。
-
ボリュームタイプの追加仕様で
ボリュームをあるバックエンドから別のバックエンドに移動するには、非常に多くの時間とリソースが必要になる場合があります。詳細は、「バックエンド間でのボリュームの移動」を参照してください。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
手順
以下のコマンドを入力して、宛先のバックエンドの名前を取得します。
$ cinder get-pools --detail Property | Value ... | name | localdomain@lvmdriver-1#lvmdriver-1 | pool_name | lvmdriver-1 ... | volume_backend_name | lvmdriver-1 ... Property | Value ... | | name | localdomain@lvmdriver-2#lvmdriver-1 | pool_name | lvmdriver-1 ... | volume_backend_name | lvmdriver-1 ...
バックエンド名は、
host @ volume_backend_name#pool
の形式を取ります。出力例では、BlockStorage サービスで公開されている 2 つの LVM バックエンドがあります。
localdomain@lvmdriver-1#lvmdriver-1
とlocaldomain@lvmdriver-2#lvmdriver-1
です。両方のバックエンドが同じvolume_backend_name
、lvmdriver-1
を共有していることに注意してください。以下のコマンドを入力して、ボリュームをあるバックエンドから別のバックエンドに移行します。
$ cinder migrate <volume id or name> <new host>
4.9. 暗号化されていないボリュームの暗号化
暗号化されていないボリュームを暗号化するには、暗号化されていないボリュームをバックアップし、それを暗号化された新しいボリュームに復元するか、暗号化されていないボリュームから glance のイメージを作成し、そのイメージから暗号化された新しいボリュームを作成する必要があります。
前提条件
- 暗号化する暗号化されていないボリューム
手順
cinder-backup
サービスが利用可能な場合は、現在の暗号化されていないボリュームをバックアップします。cinder backup-create <unencrypted_volume>
-
<unencrypted_volume>
を、暗号化されていないボリュームの名前または ID に置き換えます。
-
暗号化された新しいボリュームを作成します。
cinder create <encrypted_volume_size> --volume-type <encrypted_volume_type>
-
<encrypted_volume_size>
を新しいボリュームのサイズ (GB) に置き換えます。暗号化メタデータに対応するために、この値は暗号化されていないボリュームのサイズよりも 1 GB 大きくする必要があります。 -
<encrypted_volume_type>
を必要な暗号化タイプに置き換えます。
-
暗号化されていないボリュームのバックアップを暗号化された新しいボリュームに復元します。
cinder backup-restore <backup> --volume <encrypted_volume>
-
<backup>
を、暗号化されていないボリュームバックアップの名前または ID に置き換えます。 -
<encrypted_volume>
を新しい暗号化ボリュームの ID に置き換えます。
-
cinder-backup
サービスが利用できない場合は、upload-to-image
コマンドを使用して、暗号化されていないボリュームのイメージを作成してから、そのイメージから新しい暗号化されたボリュームを作成します。
暗号化されていないボリュームの glance イメージを作成します。
cinder upload-to-image <unencrypted_volume> <new_image>
-
<unencrypted_volume>
を、暗号化されていないボリュームの名前または ID に置き換えます。 -
<new_image>
を新しいイメージの名前に置き換えます。
-
イメージから、そのイメージより 1 GB 大きい新たなボリュームを作成します。
cinder volume create --size <size> --volume-type luks --image <new_image> <encrypted_volume_name>
-
<size>
を新しいボリュームのサイズに置き換えます。この値は、暗号化されていない古いボリュームのサイズよりも 1 GB 大きくする必要があります。 -
<new_image>
を、暗号化されていないボリュームから作成したイメージの名前に置き換えます。 -
<encrypted_volume_name>
を新しい暗号化ボリュームの名前に置き換えます。
-
4.10. Red Hat Ceph Storage バックエンドにおけるスナップショットの保護と保護解除
Red Hat OpenStack Platform (RHOSP) デプロイメントのバックエンドとして Red Hat Ceph Storage (RHCS) を使用する場合は、スナップショットをバックエンドで 保護する ように設定できます。削除が失敗するため、RHOSP ダッシュボードまたは cinder snapshot-delete
コマンドを使用して保護されたスナップショットを削除しないでください。
これが発生した場合は、最初に RHCS バックエンドでスナップショットを保護されていない 状態に設定します。その後、通常どおり RHOSP を使用してスナップショットを削除できます。
関連情報
- スナップショットの保護の詳細については、Protecting a block device snapshot および Unprotecting a block device snapshot を参照してください。
第5章 Object Storage サービス (swift) の設定
Red Hat OpenStack Platform Object Storage (swift) は、コンテナー内にそのオブジェクトまたはデータを格納します。コンテナーはファイルシステムのディレクトリーと似ていますが、ネスト化することはできません。コンテナーは、あらゆるタイプの非構造化データを格納する簡単な方法をユーザーに提供します。たとえば、オブジェクトには写真、テキストファイル、イメージなどが含まれます。格納されるオブジェクトは圧縮されません。
5.1. オブジェクトストレージリング
Object Storage service (swift) は、リングと呼ばれるデータ構造を使用して、パーティション領域をクラスター内に分散します。このパーティション領域は、Object Storage サービスのデータ永続性エンジン (data durability engine) の中核となります。リングを使用すると、Object Storage サービスが迅速かつ簡単にクラスター内の各パーティションを同期できるようになります。
リングには、オブジェクトストレージのパーティションについての情報、およびパーティションがさまざまなノードおよびディスクにどのように分散されるかについての情報が含まれます。Object Storage のコンポーネントがデータと対話する場合、リング内をローカルで素早く検索して、各オブジェクトが保管されているはずのパーティションを特定します。
Object Storage サービスには、次のタイプのデータを格納するための 3 つのリングがあります。
- アカウント情報
- アカウントの下でオブジェクトを整理しやすくするためのコンテナー
- オブジェクトレプリカ
5.1.1. クラスターの健全性の確認
長期のデータ可用性、耐久性、および永続性を確保するために、Object Storage サービスではバックグラウンドで多くのプロセスが実行されます。以下に例を示します。
- auditors は定期的にデータベースおよびオブジェクトファイルを再読み取りし、チェックサムを使用してそれらを比較して、サイレントビットロットがないことを確認します。チェックサムと一致しなくなったデータベースまたはオブジェクトファイルは隔離され、そのノードでは読み取ることができなくなります。この場合、replicators は他のレプリカのいずれかをコピーして、再びローカルコピーが利用できる状態にします。
- ディスクやノードを置き換えた場合、またはオブジェクトが隔離された場合、オブジェクトおよびファイルが消失することがあります。この場合、replicators は欠けているオブジェクトまたはデータベースファイルを他のノードのいずれかにコピーします。
Object Storage サービスには swift-recon
と呼ばれるツールが含まれています。このツールは、すべてのノードからデータを収集してクラスターの全体的な健全性を確認します。
手順
- コントローラーノードのいずれかにログインします。
以下のコマンドを実行します。
[root@overcloud-controller-2 ~]# sudo podman exec -it -u swift swift_object_server /usr/bin/swift-recon -arqlT --md5 ======================================================================--> Starting reconnaissance on 3 hosts (object) ======================================================================[2018-12-14 14:55:47] Checking async pendings [async_pending] - No hosts returned valid data. ======================================================================[2018-12-14 14:55:47] Checking on replication [replication_failure] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 [replication_success] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 [replication_time] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 [replication_attempted] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 Oldest completion was 2018-12-14 14:55:39 (7 seconds ago) by 172.16.3.186:6000. Most recent completion was 2018-12-14 14:55:42 (4 seconds ago) by 172.16.3.174:6000. ======================================================================[2018-12-14 14:55:47] Checking load averages [5m_load_avg] low: 1, high: 2, avg: 2.1, total: 6, Failed: 0.0%, no_result: 0, reported: 3 [15m_load_avg] low: 2, high: 2, avg: 2.6, total: 7, Failed: 0.0%, no_result: 0, reported: 3 [1m_load_avg] low: 0, high: 0, avg: 0.8, total: 2, Failed: 0.0%, no_result: 0, reported: 3 ======================================================================[2018-12-14 14:55:47] Checking ring md5sums 3/3 hosts matched, 0 error[s] while checking hosts. ======================================================================[2018-12-14 14:55:47] Checking swift.conf md5sum 3/3 hosts matched, 0 error[s] while checking hosts. ======================================================================[2018-12-14 14:55:47] Checking quarantine [quarantined_objects] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 [quarantined_accounts] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 [quarantined_containers] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3 ======================================================================[2018-12-14 14:55:47] Checking time-sync 3/3 hosts matched, 0 error[s] while checking hosts. ======================================================================
(オプション)
--all
オプションを使用して、追加の出力を返します。このコマンドは、リング上のすべてのサーバーに対して、以下のデータのクエリーを実行します。
- Async pendings: クラスターの負荷が非常に高くプロセスがデータベースファイルを十分な速度で更新できない場合、一部の更新は非同期で行われます。これらの数は徐々に減少します。
- Replication metrics: レプリケーションのタイムスタンプを確認します。完全なレプリケーションパスは頻繁に行われ、エラーはほとんど発生しません。古いエントリー (例: 6 カ月前のタイムスタンプを持つエントリー) ば、そのノードでのレプリケーションが過去 6 カ月間完了していないことを意味します。
- Ring md5sums: これにより、すべてのノードですべてのリングファイルの一貫性が確保されます。
-
swift.conf
md5sums: これにより、すべてのノードですべての設定ファイルの一貫性が確保されます。 - Quarantined files: すべてのノードについて、隔離されたファイルがない (あるいは、ほとんどない) はずです。
- Time-sync: すべてのノードが同期されている必要があります。
5.1.2. リングパーティションのべき乗の増加
リソース (アカウント、コンテナー、またはオブジェクト等) がマッピングされるパーティションは、リングパーティションのべき乗により決定されます。パーティションは、リソースがバックエンドのファイルシステムに保管されるパスに含まれます。したがって、パーティションのべき乗を変更すると、リソースをバックエンドファイルシステムの新しいパスに再配置する必要があります。
稼働率の高いクラスターでは、再配置のプロセスに時間がかかります。ダウンタイムを回避するには、クラスターが稼働している間にリソースを再配置します。データへの一時的なアクセス不能やプロセス (レプリケーションや監査) のパフォーマンス低下を起こさずに、この操作を行う必要があります。リングパーティションのべき乗を増やす場合には、Red Hat サポートにお問い合わせください。
5.1.3. カスタムリング
技術が進歩し、ストレージ容量への要求が高まる今日、カスタムリングを作成することが、既存の Object Storage クラスターを更新する手段となっています。
新規ノードをクラスターに追加する場合、それらの特性が元のノードとは異なる可能性があります。カスタムの調整を行わないと、大容量の新規ノードが使用されない可能性があります。あるいは、リングで重みが変わると、データの分散が不均等になり、安全性が低下します。
自動化が将来の技術トレンドと整合しなくなることも考えられます。たとえば、現在使用されている旧式の Object Storage クラスターの中には、SSD が利用可能になる前に作られたものもあります。
リングビルダーは、クラスターの規模拡大および技術の進化に合わせてオブジェクトストレージを管理するのに役立ちます。カスタムリングの作成については、Red Hat サポートにお問い合わせください。
5.2. Object Storage サービスのカスタマイズ
Red Hat OpenStack Platform (RHOSP) 環境の要件によっては、デプロイメントのパフォーマンスを最適化するために、Object Storage サービス (swift) のデフォルト設定の一部をカスタマイズする必要がある場合があります。
5.2.1. fast-post の設定
デフォルトでは、オブジェクトメタデータの一部にでも変更があると、Object Storage サービスは必ずオブジェクト全体をコピーします。fast-post 機能を使用することでこれを回避できます。fast-post 機能は、複数の大きなオブジェクトのコンテンツ種別を変更する際の時間を短縮します。
fast-post 機能を有効にするには、Object Storage プロキシーサービスの object_post_as_copy
オプションを無効にします。
手順
swift_params.yaml
を編集します。cat > swift_params.yaml << EOF parameter_defaults: ExtraConfig: swift::proxy::copy::object_post_as_copy: False EOF
オーバークラウドをデプロイまたは更新する際に、パラメーターファイルを指定します。
openstack overcloud deploy [... previous args ...] -e swift_params.yaml
5.2.2. 保存データ暗号化の有効化
デフォルトでは、Object Storage サービス (swift) にアップロードされるオブジェクトは暗号化されません。したがって、ファイルシステムからオブジェクトに直接アクセスすることが可能です。このため、ディスクを破棄する前に適切に消去しなかった場合には、セキュリティーリスクとなってしまいます。
OpenStack Key Manager (barbican) を使用して、保存されている swift オブジェクトを暗号化することができます。詳しい情報は、Encrypt at-rest swift objects を参照してください。
5.2.3. スタンドアロンの Object Storage クラスターのデプロイ
コンポーザブルロールの概念を採用して、最小限の追加のサービス (例: Keystone、HAProxy) を実装したスタンドアロンの Object Storage サービス (swift) クラスターをデプロイすることができます。Advanced Overcloud Customization の Creating a roles_data
File セクションに、ロールについての情報が記載されています。
手順
-
/usr/share/openstack-tripleo-heat-templates
からroles_data.yaml
をコピーします。 - 新規ファイルを編集します。
- 不要な Controller ロールを削除します (例: Aodh*、Ceilometer*、Ceph*、Cinder*、Glance*、Heat*、Ironic*、Manila*、Mistral*、Nova*、Octavia*、Swift*)。
-
roles_data.yaml
内で ObjectStorage を見つけます。 -
このロールを、同じファイル内の新しいロールにコピーして、
ObjectProxy
という名前を付けます。 このロールの
SwiftStorage
はSwiftProxy
に置き換えます。以下の
roles_data.yaml
ファイルの例には、サンプルのロールを記載しています。- name: Controller description: | Controller role that has all the controller services loaded and handles Database, Messaging and Network functions. CountDefault: 1 tags: - primary - controller networks: - External - InternalApi - Storage - StorageMgmt - Tenant HostnameFormatDefault: '%stackname%-controller-%index%' ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Clustercheck - OS::TripleO::Services::Docker - OS::TripleO::Services::Ec2Api - OS::TripleO::Services::Etcd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::Keepalived - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::Memcached - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Pacemaker - OS::TripleO::Services::RabbitMQ - OS::TripleO::Services::Securetty - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Vpp - name: ObjectStorage CountDefault: 1 description: | Swift Object Storage node role networks: - InternalApi - Storage - StorageMgmt disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftStorage - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - name: ObjectProxy CountDefault: 1 description: | Swift Object proxy node role networks: - InternalApi - Storage - StorageMgmt disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftProxy - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages
通常の
openstack deploy
コマンドで、新規ロールを指定して、オーバークラウドをデプロイします。openstack overcloud deploy --templates -r roles_data.yaml -e [...]
5.2.4. 外部 SAN ディスクの使用
デフォルトでは、Red Hat OpenStack Platform (RHOSP) director が Object Storage サービス (swift) をデプロイする際に、独立したローカルディスクを使用するように Object Storage が設定、最適化されます。この設定により、負荷がすべてのディスクに分散されるようになります。その結果、ノードに障害が発生した場合やその他のシステム異常時にパフォーマンスへの影響を最小限に抑えることができます。
パフォーマンスに影響を及ぼす類似のイベント発生時に、1 つの SAN を使用する環境では、すべての LUN でパフォーマンスが低下する可能性があります。Object Storage サービスは、SAN ディスクを使用する環境で生じるパフォーマンスの問題を軽減することができません。
したがって、Red Hat では、パフォーマンスおよびディスク容量に対する要求を満たすために、Object Storage 用に SAN ディスクの代わりに追加のローカルディスクを使用することを強く推奨します。詳細は、特定の Red Hat OpenStack Platform サービスのデプロイメントに関する推奨事項の Object Storage サービス (swift) の設定に関する推奨事項 を参照してください。
Object Storage 用に外部 SAN を使用する場合は、ケースごとに評価する必要があります。詳細は、Red Hat のサポートにお問い合わせください。
Object Storage 用に外部 SAN を使用する場合、以下の条件に注意してください。
- デフォルトでは、Object Storage サービスは Telemetry データおよび Image サービス (glance) のイメージを保管します。glance のイメージはより多くのディスク容量を必要としますが、パフォーマンスの観点からは、glance のイメージを保管することの影響は、Telemetry データを保管することの影響よりは軽微です。Telemetry データの保管と処理には、より高いパフォーマンスが必要です。Object Storage 用に外部 SAN を使用した結果パフォーマンスに関する問題が生じた場合、Red Hat はこの問題に対するサポートを提供しません。
- Red Hat は、コアの Object Storage サービスオファリングの外部で生じる問題に対するサポートを提供しません。高可用性およびパフォーマンスに関するサポートは、ストレージベンダーにお問い合わせください。
- Red Hat は、Object Storage サービスと SAN ソリューションの組み合わせをテストしません。サードパーティー製品の互換性、ガイダンス、およびサポートに関する詳細は、ストレージベンダーにお問い合わせください。
- Red Hat では、実際のデプロイメントでパフォーマンスの要求を評価してテストすることを推奨します。お使いの SAN デプロイメントがテストおよびサポートされ、パフォーマンス要求を満たしていることを確認するには、ストレージベンダーにお問い合わせください。
手順
Object Storage 用に 2 つのデバイス (
/dev/mapper/vdb
および/dev/mapper/vdc
) を使用する方法の例を、以下のテンプレートに示します。parameter_defaults: SwiftMountCheck: true SwiftUseLocalDir: false SwiftRawDisks: {"vdb": {"base_dir":"/dev/mapper/"}, "vdc": {"base_dir":"/dev/mapper/"}}
5.3. 新規 Object Storage ノードの追加
クラスターに新規 Object Storage (swift) ノードを追加するには、ノード数を増やし、リングを更新し、変更を同期させる必要があります。以下に示す手順の例では、3 つのノードを 4 つに増やしています。
手順
アンダークラウドノードに
stack
ユーザーとしてログインし、source コマンドでstackrc
認証情報ファイルを読み込みます。$ source ~/stackrc
ObjectStorageCount
パラメーターを使用して、Object Storage のカズを 1 増やします。このパラメーターは、通常ノード数を指定する環境ファイルのnode-info.yaml
ファイルに含まれています。parameter_defaults: ObjectStorageCount: 4
新規ノードの IP アドレスを
node-info.yaml
ファイルのObjectStorageIPs
パラメーターに追加します。ObjectStorageIPs: <ip_address>
環境ファイル (例:
hostname-map.yaml
) を作成し、新規ストレージノードのホスト名 (例:overcloud-objectstorage-4
) をHostnameMap
パラメーターに追加します。parameter_defaults: HostnameMap: overcloud-objectstorage-4: overcloud-objectstorage-4
新しいノードのハードウェアと電源管理の詳細を、ノード定義テンプレートに追加します。ノード定義テンプレートは、オーバークラウドの初期設定時にオーバークラウドノードを登録するために手動で作成されたファイルです。たとえば、テンプレートは
/home/stack/nodes.json
のようになります。以下の例では JSON 形式が使われていますが、ご自分のテンプレートが YAML ファイルであれば、YAML 形式および属性にしたがって情報を追加します。ノード定義テンプレートについての詳しい情報は、Director Installation and Usageの Registering nodes for the overcloud を参照してください。"ports":[ "bb:bb:bb:bb:bb:bb" ], "name":"node01", "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"pxe_ipmitool", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.168.24.205"
新しいノードの機能の詳細を、ノード定義テンプレートに追加します。
"capabilities": "profile:swift-storage,boot_option:local,boot_mode:uefi,node:objectstorage-4",
ノードをオーバークラウドにインポートして、ノードでイントロスペクションを実施します。
$ openstack overcloud node import ~/nodes.yaml $ openstack overcloud node introspect objectstorage-4 --provide
新しいノードにルートディスクのシリアル番号を追加します。
$ openstack baremetal introspection data save objectstorage-4 | jq ".inventory.disks" $ openstack baremetal node set --property root_device='{"serial": "<disk_serial_num>"}' <node_UUID>
新規ノードに応じて
<disk_serial_num>
および<node_UUID>
を置き換えます。ご自分の環境に該当するその他の環境ファイルと共に、作成した新しいノード設定が含まれる環境ファイルをデプロイメントコマンドに追加します。
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e node-info.yaml \ -e hostname-map.yaml \
5.3.1. オブジェクトストレージリングの更新およびリバランス
新しいストレージノードをデプロイして既存のコントローラーおよびオブジェクトストレージを置き換えるために、Object Storage service (swift) はリングファイルのコピーをアンダークラウドに保管します。このコピーを使用してオーバークラウドのリングファイルを変更して、それらをノード全体に配布します。
手順
アンダークラウドに
stack
ユーザーとしてログインし、stackrc
認証情報ファイルを読み込みます。$ source ~/stackrc
以下のディレクトリーを作成します。
$ mkdir temp && cd temp/
オーバークラウドのリングビルダーファイルを新しいディレクトリーにダウンロードします。
$ openstack object save overcloud-swift-rings swift-rings.tar.gz
リングを抽出します。
$ tar xzvf swift-rings.tar.gz
元のバージョンのリングをバックアップするためのディレクトリーを作成します。
$ mkdir backup && cp swift-rings.tar.gz backup/
Object Storage リングファイルは、
etc/swift
フォルダーにあります。デバイス情報にしたがって、以下の変数の値を収集します。
<device_name>
:$ openstack baremetal introspection data save <node_name> | jq ".inventory.disks"
<node_ip>
:openstack server show <node_name>
-
<port>
デフォルトポートは600x
です。デフォルトを変更している場合は、該当するポートを使用します。 -
<builder_file>
手順 3 のビルダーファイル名。 -
<weight>
および<zone>
変数はユーザーが定義します。
swift-ring-builder
を使用して、新しいノードを既存のリングに追加して更新します。デバイス情報に応じて、変数を置き換えます。$ swift-ring-builder etc/swift/<builder_file> add <zone>-<node_ip>:<port>/<device_name> <weight>
変更したリングファイルを、アンダークラウドの Object Storage サービスにアップロードします。
$ tar cvzf swift-rings.tar.gz etc/ $ openstack object create overcloud-swift-rings swift-rings.tar.gz
5.3.2. ノード変更の同期およびデータの移行
変更したリングファイルを正しいフォルダーにコピーしたら、新しいリングファイルを Object Storage (swift) コンテナーに配布する必要があります。
- 重要
- すべてのデータを同時に移行しないでください。10% ずつデータを移行してください。たとえば、移行元デバイスの重みを 90.0 に、移行先デバイスを 10.0 に設定します。次に、移行元デバイスの重みを 80.0 に、移行先デバイスを 20.0 に設定します。プロセスが完了するまで、段階的にデータの移行を続けます。移行時にすべてのデータを同時に移動すると、古いデータは移行元デバイスにありますが、すべてのレプリカについてリングは新しい移行先デバイスをポイントします。レプリケーターがすべてのデータを移行先デバイスに移動するまで、データにアクセスすることができません。
- 重要
移行時に、オブジェクトストレージリングはデータの場所を再割当てし、続いてレプリケーターがデータを新しい場所に移動します。クラスターのアクティビティーが増えると、負荷が増加するため、レプリケーションの処理が遅くなります。クラスターが大きいほど、レプリケーションのパスが完了するのにかかる時間が長くなります。これは想定された動作ですが、クライアントが現在移動しているデータにアクセスする場合に、ログファイルに 404 エラーが記録される可能性があります。プロキシーが新しい場所からデータの取得を試みる際に、データがまだ新しい場所にない場合、
swift-proxy
レポートはログファイルに 404 エラーを記録します。移行が段階的な場合には、プロキシーは移動していないレプリカにアクセスし、エラーは発生しません。なお、プロキシーが代替レプリカからデータの取得を試みると、ログファイルの 404 エラーは解決されます。レプリケーションプロセスが実行中であることを確認するには、レプリケーションログを参照してください。Object Storage サービスは、レプリケーションログを 5 分ごとに発行します。
手順
以下の例のようなスクリプトを使用して、アンダークラウドノードから指定したコントローラーノードにリングファイルを配布し、それらのノードで Object Storage サービスコンテナーを再起動します。
cd etc/swift/ for j in 8 11 23; do ssh heat-admin@192.168.24."$j" "rm *.ring.gz" for i in account.ring.gz container.ring.gz object.ring.gz; do scp $i heat-admin@192.168.24."$j":~/ ssh heat-admin@192.168.24."$j" "sudo cp -f "$i" /var/lib/config-data/puppet-generated/swift/etc/swift/" ssh heat-admin@192.168.24."$j" "sudo chown root:root /var/lib/config-data/puppet-generated/swift/etc/swift/"$i"" ssh heat-admin@192.168.24."$j" "sudo restorecon /var/lib/config-data/puppet-generated/swift/etc/swift/"$i"" done ssh heat-admin@192.168.24."$j" "rm *.builder" for i in account.builder container.builder object.builder; do scp $i heat-admin@192.168.24."$j":~/ ssh heat-admin@192.168.24."$j" "cat "$i" | sudo tee /var/lib/config-data/puppet-generated/swift/etc/swift/"$i" >/dev/null" done ssh heat-admin@192.168.24."$j" 'for k in `sudo podman ps --format "{{.Names}}" | grep swift`; do sudo podman restart $k; done' done cd ../../
データが新しいディスクに移動されていることを確認するには、新規ストレージノードで以下のコマンドを実行してください。
$ sudo grep -i replication /var/log/container/swift/swift.log
5.4. Object Storage ノードの削除
Object Storage (swift) ノードを削除する方法は 2 つあります。クラスターの複雑さや、そこに含まれるデータの量に応じて、以下のいずれかのオプションを選択します。
- 単純な削除: この方法は 1 つのアクションでノードを削除し、データの量が少なく効率的に動作しているクラスターに適しています。1 つのアクションでの Object Storage ノードの削除 を参照してください。
- 段階的削除: 削除するノード上のディスクの重みを減らすようにリングを変更します。この方法は、ストレージネットワークの使用への影響を最小限に抑える場合、またはクラスターに大量のデータが含まれる場合に適しています。リング変更による Object Storage ノードの段階的な削除 を参照してください。
5.4.1. 1 つのアクションでの Object Storage ノードの削除
データの量が少なく効率的に動作しているクラスターのノードを削除するには、この方法を使用します。以下に示す手順の例では、4 つのノードを 3 つに減らしています。
手順
アンダークラウドに
stack
ユーザーとしてログインし、stackrc
認証情報ファイルを読み込みます。$ source ~/stackrc
ObjectStorageCount
パラメーターを使用して、Object Storage のカズを 1 減らします。このパラメーターは、通常ノード数を指定する環境ファイルのnode-info.yaml
に含まれています。parameter_defaults: ObjectStorageCount: 3
node-info.yaml
ファイルのObjectStorageIPs
パラメーターから削除したノードの IP アドレスを削除します。ObjectStorageIPs: <ip_address>
環境ファイル (例:
remove-object-node.yaml
) を作成します。このファイルは、指定したオブジェクトストレージノードを特定し、削除します。以下のコンテンツ例ではovercloud-objectstorage-1
の削除を指定しています。parameter_defaults: ObjectStorageRemovalPolicies: [{'resource_list': ['1']}]
デプロイメントコマンドに
node-info.yaml
ファイルとremove-object-node.yaml
ファイルの両方を含めます。$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e node-info.yaml \ -e remove-object-node.yaml \ …
director は、オーバークラウドからオブジェクトストレージノードを削除して、オーバークラウド上の残りのノードを更新し、ノードの削除に対応します。
アクティブなノードをリスト表示し、正しいノードが削除されたことを確認します。
$ openstack server list
アンダークラウドノードで
remove-object-node.yaml
ファイルを削除して、今後の再デプロイに含まれないようにします。$ rm <file_path>/remove-object-node.yaml
5.4.2. リング変更による Object Storage ノードの段階的な削除
ノードを削除する際にストレージネットワークへの影響を最小限に抑える必要がある場合、またはクラスターに大量のデータが含まれる場合は、この方法を使用します。ストレージのリングを変更して、削除するノード上のディスクの重みを減らすには、まず前提条件に記載されている手順を行います。以下の例では、ノードを 4 つから 3 つに減らします。
前提条件
- Object Storage リングを更新およびリバランスしている。オブジェクトストレージリングの更新およびリバランス を参照してください。
- Object Storage リングの変更が同期されている。変更の同期およびデータの移行 を参照してください。
手順
アンダークラウドに
stack
ユーザーとしてログインし、stackrc
認証情報ファイルを読み込みます。$ source ~/stackrc
ObjectStorageCount
パラメーターを使用して、Object Storage のカズを 1 減らします。このパラメーターは、通常ノード数を指定する環境ファイルのnode-info.yaml
に含まれています。parameter_defaults: ObjectStorageCount: 3
node-info.yaml
ファイルのObjectStorageIPs
パラメーターから削除したノードの IP アドレスを削除します。ObjectStorageIPs: <ip_address>
環境ファイル (例:
remove-object-node.yaml
) を作成します。このファイルは、指定したオブジェクトストレージノードを特定し、削除します。以下のコンテンツ例ではovercloud-objectstorage-1
の削除を指定しています。parameter_defaults: ObjectStorageRemovalPolicies: [{'resource_list': ['1']}]
デプロイメントコマンドに
node-info.yaml
ファイルとremove-object-node.yaml
ファイルの両方を含めます。$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e node-info.yaml \ -e remove-object-node.yaml \ …
director は、オーバークラウドからオブジェクトストレージノードを削除して、オーバークラウド上の残りのノードを更新し、ノードの削除に対応します。
アクティブなノードをリスト表示し、正しいノードが削除されたことを確認します。
$ openstack server list
アンダークラウドノードで
remove-object-node.yaml
ファイルを削除して、今後の再デプロイに含まれないようにします。$ rm <file_path>/remove-object-node.yaml
5.5. オブジェクトストレージノードの置き換え
本項の手順で、クラスターの整合性に影響を与えずにオブジェクトストレージノードを置き換える方法を説明します。以下の例では、3 台のノードで設定されるオブジェクトストレージクラスターで、overcloud-objectstorage-1
ノードを置き換えます。この手順の目的は、ノードを 1 台追加し、その後 overcloud-objectstorage-1
ノードを削除することです。overcloud-objectstorage-1
ノードが新しいノードに置き換えられます。
手順
ObjectStorageCount
パラメーターを使用してオブジェクトストレージ数を増やします。このパラメーターは、通常ノード数を指定する環境ファイルのnode-info.yaml
に含まれています。parameter_defaults: ObjectStorageCount: 4
ObjectStorageCount
パラメーターで、環境内のオブジェクトストレージノードの数を定義します。今回の例では、オブジェクトストレージノードの数を3
から4
にスケーリングします。更新した
ObjectStorageCount
パラメーターを使用して、デプロイメントコマンドを実行します。$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml <environment_files>
デプロイメントコマンドの実行が完了すると、オーバークラウドには追加のオブジェクトストレージノードが含まれるようになります。
新しいノードにデータを複製します。ノードを削除する前に (ここでは
overcloud-objectstorage-1
)、複製のパスが新規ノードで完了するのを待ちます。/var/log/swift/swift.log
ファイルで複製パスの進捗を確認することができます。パスが完了すると、Object Storage サービスは以下の例のようなエントリーをログに残します。Mar 29 08:49:05 localhost *object-server: Object replication complete.* Mar 29 08:49:11 localhost *container-server: Replication run OVER* Mar 29 08:49:13 localhost *account-server: Replication run OVER*
リングから不要になったノードを削除するには、
ObjectStorageCount
パラメーターの数を減らして不要になったノードを削除します。この例では、ObjectStorageCount
パラメーターを3
に減らします。parameter_defaults: ObjectStorageCount: 3
新規環境ファイル (
remove-object-node.yaml
) を作成します。このファイルでオブジェクトストレージノードを特定し、そのノードを削除します。以下の内容ではovercloud-objectstorage-1
の削除を指定します。parameter_defaults: ObjectStorageRemovalPolicies: [{'resource_list': ['1']}]
デプロイメントコマンドに
node-info.yaml
ファイルとremove-object-node.yaml
ファイルの両方を含めます。(undercloud) $ openstack overcloud deploy --templates -e node-info.yaml <environment_files> -e remove-object-node.yaml
director は、オーバークラウドからオブジェクトストレージノードを削除して、オーバークラウド上の残りのノードを更新し、ノードの削除に対応します。
オーバークラウドの初回作成時に使用した環境ファイルおよびオプションをすべて含めます。これには、コンピュート以外のノードに対する同様のスケジューリングパラメーターが含まれます。
5.6. Object Storage サービスにおける基本的なコンテナー管理
Object Storage サービス (swift) の整理を容易にするには、擬似フォルダーを使用できます。これらのフォルダーは、オブジェクトを格納することができる論理デバイスで、入れ子が可能です。たとえば、イメージを保管する Images フォルダーや、ビデオを保管する Media フォルダーなどを作成することができます。
各プロジェクトに 1 つまたは複数のコンテナーを作成することができます。また、各コンテナーには、1 つまたは複数のオブジェクトまたは擬似フォルダーを作成することができます。
5.6.1. Object Storage サービスでのコンテナーの作成
Dashboard を使用してコンテナーを作成します。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- コンテナーの作成 をクリックします。
コンテナー名 を指定して、コンテナーアクセス フィールドで以下のいずれかのオプションを選択します。
タイプ 説明 プライベート
アクセスを現在のプロジェクトのユーザーに制限します。
パブリック
パブリックの URL を使用して API アクセスを全員に許可します。ただし、Dashboard では、プロジェクトユーザーには、他のプロジェクトのパブリックコンテナーおよびデータは表示されません。
- コンテナーの作成 をクリックします。
(オプション) 新しいコンテナーはデフォルトのストレージポリシーを使用します。複数のストレージポリシーが定義されている場合には (たとえば、デフォルトポリシーと Erasure Coding を有効にする別のポリシーなど)、デフォルト以外のストレージポリシーを使用するようにコンテナーを設定することができます。
# swift post -H "X-Storage-Policy:<policy>" <container_name>
<policy>
はコンテナーで使用するポリシーの名前またはエイリアスに、<container_name>
をコンテナーの名前に置き換えます。
5.6.2. Object Storage サービスでのコンテナー用の擬似フォルダーの作成
Dashboard を使用してコンテナーの擬似フォルダーを作成します。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- 擬似フォルダーを追加するコンテナーの名前をクリックします。
- 疑似フォルダーの作成 をクリックします。
- 疑似フォルダー名 フィールドに名前を指定し、作成 をクリックします。
5.6.3. Object Storage サービスでのコンテナーの削除
Dashboard を使用してコンテナーを削除します。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- コンテナー のセクションのリストを参照して全オブジェクトが削除されていることを確認します。詳細は、オブジェクトの削除 を参照してください。
- 対象のコンテナーの矢印メニューで コンテナーの削除 を選択します。
- コンテナーの削除 をクリックして、コンテナーを削除する操作を確定します。
5.6.4. Object Storage サービスへのオブジェクトのアップロード
実際のファイルをアップロードしない場合でも、後でファイルをアップロードするのに使用できるプレースホルダーとしてオブジェクトは作成されます。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- アップロードしたオブジェクトを配置するコンテナーの名前をクリックします。コンテナーに擬似フォルダーがすでに存在する場合は、その名前をクリックします。
- ファイルをブラウズして オブジェクトのアップロード をクリックします。
オブジェクト名 フィールドに名前を指定します。
- / の文字 (例: Images/myImage.jpg) を使用して、名前に擬似フォルダーを指定できます。指定したフォルダーがまだ存在していない場合には、オブジェクトのアップロード時に作成されます。
- 名前がその場所で一意ではない場合 (オブジェクトがすでに存在している場合)、そのオブジェクトのコンテンツは上書きされます。
- オブジェクトのアップロード をクリックします。
5.6.5. Object Storage サービス内のオブジェクトのコピー
Dashboard を使用してオブジェクトをコピーします。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- オブジェクトのコンテナーまたはフォルダーの名前をクリックします (オブジェクトを表示します)。
- オブジェクトのアップロード をクリックします。
- コピーするファイルを参照し、矢印メニューで コピー を選択します。
以下の項目を設定します。
フィールド 説明 宛先コンテナー
新規プロジェクトの宛先コンテナー
パス
宛先コンテナーの擬似フォルダー。フォルダーが存在しない場合は、作成されます。
宛先オブジェクト名
新規オブジェクト名。その場所で一意ではない名前を使用した場合 (オブジェクトがすでに存在している場合)、そのオブジェクトの以前のコンテンツは上書きされます。
- オブジェクトのコピー をクリックします。
5.6.6. Object Storage サービスからのオブジェクトの削除
Dashboard を使用してオブジェクトを削除します。
手順
- Dashboard で プロジェクト > オブジェクトストア > コンテナー を選択します。
- リストを参照して対象のオブジェクトを特定し、矢印メニューで オブジェクトの削除 を選択します。
- オブジェクトの削除 をクリックして、オブジェクトを削除する操作を確定します。