2.4. ボリュームの高度な設定
以下の手順で、ボリュームの高度な管理方法について説明します。
Block Storage サービス (cinder) およびファイバーチャネル (FC) バックエンドを使用するすべてのデプロイメントにおいて、すべてのコントローラーノードおよびコンピュートノードにホストバスアダプター (HBA) をインストールする必要があります。
2.4.1. ボリュームの移行
Block Storage サービス (cinder) を使用して、同一または異なるアベイラビリティーゾーン (AZ) にあるバックエンド間で、ボリュームを移行することができます。これは、あるバックエンドから別のバックエンドにボリュームを移行する方法としては、まったく一般的ではありません。デフォルトのポリシーでは、管理者のみがボリュームを移行することができます。デフォルトのポリシーは変更しないでください。
高度にカスタマイズされたデプロイメントの場合や、ストレージシステムを廃止する必要のある状況では、管理者はボリュームを移行できます。どちらのユースケースでも、複数のストレージシステムが同じ volume_backend_name
を共有しているか、未定義です。
制約
- ボリュームは複製できません。
- 移行先バックエンドは、ボリュームの現在のバックエンドとは異なる必要があります。
既存のボリューム種別は、新規バックエンドに対して有効である必要があります。つまり、以下の状況でなければなりません。
-
ボリュームタイプの追加仕様で
backend_volume_name
を定義することはできません。または、両方のブロックストレージバックエンドを同じbackend_volume_name
で設定する必要があります。 - どちらのバックエンドも、シンプロビジョニングのサポート、シックプロビジョニングのサポート、またはその他の機能設定など、ボリューム種別で設定した同じ機能をサポートする。
-
ボリュームタイプの追加仕様で
ボリュームをあるバックエンドから別のバックエンドに移動するには、非常に多くの時間とリソースが必要になる場合があります。詳細は、「バックエンド間でのボリュームの移動」を参照してください。
2.4.1.1. バックエンド間の移行
Dashboard UI を使用して、バックエンド間でボリュームを移行します。
手順
- Dashboard で 管理 > ボリューム を選択します。
- 移行するボリュームの アクション のコラムで、ボリュームのマイグレーション を選択します。
ボリュームのマイグレーション ダイアログで、移行先ホスト ドロップダウンリストからボリュームを移行する先のホストを選択します。
注記ホストの移行でドライバーの最適化をスキップするには、強制ホストコピー のチェックボックスを選択します。
- マイグレーション をクリックして移行を開始します。
2.4.1.2. コマンドラインを使用したバックエンド間の移行
- アンダークラウドの正常なインストール。詳細は、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
を共有していることに注意してください。注記LVM の使用は、例としてのみ挙げられています。LVM は、実稼働環境ではサポートされません。
以下のコマンドを入力して、ボリュームをあるバックエンドから別のバックエンドに移行します。
$ cinder migrate <volume id or name> <new host>
2.4.1.3. ボリュームの移行の確認
ボリュームを作成すると、migration_status
の値は None
になります。移行を開始すると、ステータスが migrating
に変わります。移行が完了すると、ステータスは success
また error
に変わります。
ブロックストレージサービスが移行要求を受け入れた後、cinder クライアントは、Request to migrate volume <volume id> has been accepted.
のようなメッセージで応答します。ただし、移行が完了するまでには時間がかかります。管理者は、移行のステータスを確認できます。
手順
次のコマンドを入力し、
migration_status
フィールドを確認します。$ cinder show <volume id>
注記通常のボリューム移行を開始すると、ボリューム名が重複します。そのボリューム名で
cinder show
コマンドを実行すると、シンダークライアントは次のようなエラーを返します。ERROR: Multiple volume matches found for '<volume name>'
このエラーを回避するには、ボリューム名の代わりにボリューム ID を使用します。
移行が成功すると、host
フィールドは cinder migrate
コマンドで設定された <new host>
値と一致します。
2.4.2. 暗号化されていないボリュームの暗号化
暗号化されていないボリュームを暗号化するには、暗号化されていないボリュームをバックアップし、それを暗号化された新しいボリュームに復元するか、暗号化されていないボリュームから Image サービス (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
コマンドを使用して、暗号化されていないボリュームのイメージを作成してから、そのイメージから新しい暗号化されたボリュームを作成します。
暗号化されていないボリュームの Image サービスイメージを作成します。
$ 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>
を新しい暗号化ボリュームの名前に置き換えます。
-