2.12. プール間のイメージの移動
同じクラスターにある異なるプール間で RADOS Block Device (RBD) イメージを移動できます。レプリケートされたプール間、イレイジャーコードのプール間、またはレプリケートされたプールとイレイジャーコードのプールの間での移行が可能です。
このプロセスで、ソースイメージはすべてのスナップショット履歴を含めて、ターゲットイメージにコピーされます。また、オプションでスパースの保持に役立つソースイメージの親へのリンクもコピーされます。ソースイメージは読み取り専用で、ターゲットイメージは書き込み可能です。移行時に、ターゲットイメージがソースイメージにリンクされます。
このプロセスは、新規ターゲットイメージの使用中に、バックグラウンドで安全に実行できます。ただし、新規ターゲットのイメージが、イメージを使用するクライアントの参照先として更新されるように、準備手順前にターゲットイメージを使用してすべてのクライアントを停止してください。
現時点では、krbd
カーネルモジュールはライブ移行に対応していません。
前提条件
- ソースイメージを使用するすべてのクライアントを停止しておく。
- クライアントノードへの root レベルのアクセス。
手順
ソースおよびターゲットイメージをクロスリンクする新規ターゲットイメージを作成して、移行を準備します。
構文
rbd migration prepare SOURCE_IMAGE TARGET_IMAGE
以下を置き換えます。
- SOURCE_IMAGE: 移動するイメージの名前に置き換えます。POOL/IMAGE_NAME 形式を使用します。
- TARGET_IMAGE: 新しいイメージの名前。POOL/IMAGE_NAME 形式を使用します。
例
[root@rbd-client ~]# rbd migration prepare data/source stack/target
作成
予定の新しいターゲットイメージの状態を確認します。構文
rbd status TARGET_IMAGE
例
[root@rbd-client ~]# rbd status stack/target Watchers: none Migration: source: data/source (5e2cba2f62e) destination: stack/target (5e2ed95ed806) state: prepared
- 必要に応じて、新規ターゲットイメージ名を使用してクライアントを再起動します。
ソースイメージをターゲットイメージにコピーします。
構文
rbd migration execute TARGET_IMAGE
例
[root@rbd-client ~]# rbd migration execute stack/target
移行が完了したことを確認します。
例
[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
ソースとターゲットイメージ間のクロスリンクを削除して移行をコミットします。これにより、ソースイメージも削除されます。
構文
rbd migration commit TARGET_IMAGE
例
[root@rbd-client ~]# rbd migration commit stack/target
ソースイメージが 1 つ以上のクローンの親である場合は、クローンイメージが使用されていないことを確認した後に
--force
オプションを使用します。例
[root@rbd-client ~]# rbd migration commit stack/target --force
- 準備手順の後にクライアントを再起動しなかった場合は、新規ターゲットイメージ名を使用してクライアントを再起動します。