2.13. プール間のイメージの移動

同じクラスターにある異なるプール間で RADOS Block Device (RBD) イメージを移動できます。

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

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

重要

現時点では、krbd カーネルモジュールはライブ移行に対応していません。

前提条件

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

手順

  1. ソースおよびターゲットイメージをクロスリンクする新規ターゲットイメージを作成して、移行を準備します。

    構文

    rbd migration prepare SOURCE_IMAGE TARGET_IMAGE

    以下を置き換えます。

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

    [root@rbd-client ~]# rbd migration prepare pool1/image1 pool2/image2

  2. 作成 予定の新しいターゲットイメージの状態を確認します。

    構文

    rbd status TARGET_IMAGE

    [root@rbd-client ~]# rbd status pool2/image2
    Watchers: none
    Migration:
                source: pool1/image1 (5e2cba2f62e)
                destination: pool2/image2 (5e2ed95ed806)
                state: prepared

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

    構文

    rbd migration execute TARGET_IMAGE

    [root@rbd-client ~]# rbd migration execute pool2/image2

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

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

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

    構文

    rbd migration commit TARGET_IMAGE

    [root@rbd-client ~]# rbd migration commit pool2/image2

    ソースイメージが 1 つ以上のクローンの親である場合は、クローンイメージが使用されていないことを確認した後に --force オプションを使用します。

    [root@rbd-client ~]# rbd migration commit pool2/image2 --force

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