2.12. イメージのプール間での移動

RADOS Block Device(RBD)イメージは、同じクラスター内の異なるプール間で移行することができます。

このプロセスで、ソースイメージはすべてのスナップショット履歴と共にターゲットイメージにコピーされ、オプションでソースイメージの親へのリンクでスパース性を保持することができます。ソースイメージは読み取り専用で、ターゲットイメージが書き込み可能です。移行中は、ターゲットイメージはソースイメージにリンクされます。

新規ターゲットイメージが使用されている間は、このプロセスはバックグラウンドで安全に実行できます。ただし、準備手順を実行する前に、ターゲットイメージを使用してすべてのクライアントを停止し、イメージを使用するクライアントが新しいターゲットイメージを参照するように更新されるようにします。

重要

現時点では、krbd カーネルモジュールはライブマイグレーションに対応していません。

前提条件

  • ソースイメージを使用するすべてのクライアントを停止します。
  • クライアントノードへのルートレベルのアクセス。

Procedure

  1. ソースとターゲットイメージをまたがってリンクする新規ターゲットイメージを作成して、移行の準備を行います。

    構文

    rbd migration prepare SOURCE_IMAGE TARGET_IMAGE

    以下を置き換えます。

    • 移動するイメージの名前がある SOURCE_IMAGEPOOL/IMAGE_NAME 形式を使用します。
    • TARGET_IMAGE を新しいイメージの名前に置き換えます。POOL/IMAGE_NAME 形式を使用します。

    [root@rbd-client ~]# rbd migration prepare data/source stack/target

  2. 新しいターゲットイメージの状態を確認します。このイメージの準備が整うはずです

    構文

    rbd status TARGET_IMAGE

    [root@rbd-client ~]# rbd status stack/target
    Watchers: none
    Migration:
                source: data/source (5e2cba2f62e)
                destination: stack/target (5e2ed95ed806)
                state: prepared

  3. 必要に応じて、新しいターゲットイメージ名を使用してクライアントを再起動します。
  4. ソースイメージをターゲットイメージにコピーします。

    構文

    rbd migration execute TARGET_IMAGE

    [root@rbd-client ~]# rbd migration execute stack/target

  5. 移行が完了していることを確認します。

    [root@rbd-client ~]# rbd status stack/target
    Watchers:
        watcher=1.2.3.4:0/3695551461 client.123 cookie=123
    Migration:
                source: data/source (5e2cba2f62e)
                destination: stack/target (5e2ed95ed806)
                state: executed

  6. ソースイメージとターゲットイメージ間のリンクを削除して移行をコミットし、ソースイメージも削除します。

    構文

    rbd migration commit TARGET_IMAGE

    [root@rbd-client ~]# rbd migration commit stack/target

    ソースイメージが 1 つまたは複数のクローンの親である場合は、クローンイメージが使用されていないことを確認します。

    [root@rbd-client ~]# rbd migration commit stack/target --force

  7. 準備ステップ後にクライアントを再起動しなかった場合は、新しいターゲットイメージ名を使用してクライアントを再起動します。