2017年5月9日火曜日

コマンドラインでのマイグレーション

前回までで、virt-manager を使ったオンラインマイグレーションが実施できた。
で、全然気付かなかったけど、virsh にもマイグレーションのオプションがあった。

ヘルプを見てみよう。(今回はヘルプの中身も引用しておく。)
(sagittarius) $ virsh help migrate
  名前
    migrate - ドメインの他ホストへのマイグレーション

  形式
    migrate <domain> <desturi> [--live] [--offline] [--p2p] [--direct] [--tunnelled] [--persistent] [--undefinesource] [--suspend] [--copy-storage-all] [--copy-storage-inc] [--change-protection] [--unsafe] [--verbose] [--compressed] [--auto-converge] [--rdma-pin-all] [--abort-on-error] [--migrateuri <string>] [--graphicsuri <string>] [--listen-address <string>] [--dname <string>] [--timeout <number>] [--xml <string>] [--migrate-disks <string>]

  詳細
    ドメインを他のホストにマイグレーションします。ライブマイグレーションは --live を付加します。

  オプション
    [--domain] <string>  ドメインの名前、ID または UUID
    [--desturi] <string>  クライアント(通常のマイグレーション)またはソース(p2p マイグレーション)から見える宛先ホストの接続 URI
    --live           ライブマイグレーション
    --offline        オフラインマイグレーション
    --p2p            ピアツーピア・マイグレーション
    --direct         ダイレクト・マイグレーション
    --tunnelled      トンネル・マイグレーション
    --persistent     宛先における仮想マシンの永続化
    --undefinesource  ソースから VM の登録解除
    --suspend        宛先ホストにおいてドメインを再開しません
    --copy-storage-all  完全なディスクコピーとともに非共有のストレージを用いたマイグレーション
    --copy-storage-inc  増分コピーとともに非共有のストレージを用いたマイグレーション(ソースと宛先の間で同じベースイメージを共有します)
    --change-protection  ドメインへのあらゆる設定変更をマイグレーションが終わる まで防ぎます
    --unsafe         安全ではないときにも強制的にマイグレーションする
    --verbose        マイグレーションの進行状況の表示
    --compressed     ライブマイグレーション中の連続ページの圧縮
    --auto-converge  force convergence during live migration
    --rdma-pin-all   support memory pinning during RDMA live migration
    --abort-on-error  移行中にソフトなエラーが発生した場合は中止する
    --migrateuri <string>  マイグレーション URI(通常は省略可)
    --graphicsuri <string>  シームレス・グラフィック・マイグレーションのために使用するグラフィック URI
    --listen-address <string>  listen address that destination should bind to for incoming migration
    --dname <string>  マイグレーション中に名前の変更(サポートされる場合)
    --timeout <number>  ライブマイグレーションがタイムアウトするとゲストを強制的に一時停止する(秒単位)
    --xml <string>   ターゲットの更新した XML を含むファイル名
    --migrate-disks <string>  comma separated list of disks to be migrated

これを見ると、「一時的な移動」は --parsistent オプションと関係ありそうだ。(恐らく、--parsistent をつけない場合が、「一時的な移動」だろう。)

--undefinesource は、転送元から仮想マシン定義を削除する、ということかな?

オプションを見てみると、virt-manager では出来無さそうだった「ディスクが共有されていない環境でのマイグレーション」も出来そうだ。

何パターンも実装方法がありそうだが、とりあえずは今までやってた「共有環境でのオンラインマイグレーション」を考えてみる。

gemini で動いている leo を、cancer に移動するパターンは以下のようだ。
migrate --live \
--domain leo \
--desturi qemu+ssh://(cancerのIPアドレス)/system \
--migrateuri tcp://(cancerのIPアドレス)/
(cancer のホスト名 cancer が名前解決出来るのなら、恐らく --migrateuri は不要だ。その場合、--desturi も IPアドレスじゃなく、ホスト名指定になるはず。)
これは、from のホストが指定されていないため、gemini 上で実行する必要があると思う。
実際に試してみよう。
(cancer) $ virsh list --all
(gemini) $ virsh list --all
(gemini) $ virsh migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.137/system \
--migrateuri tcp://192.168.55.137/
(gemini) $ virsh list --all
(cancer) $ virsh list --all
どうやら上手く行ったようだ。

これを、逆方向(cancer から gemini に)に動かすためには、cancer 上で実行する必要がある。
(cancer) $ virsh migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.136/system \
--migrateuri tcp://192.168.55.136/
これで戻せるはずだ。
(実行ホストに注意)

また、別のホスト (sagittarius) から同じように gemini→cancer や cancer→ gemini にマイグレーションするには、virsh に -c オプションを追加すればいい。

(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system \
migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.137/system \
--migrateuri tcp://192.168.55.137/
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system \
migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.136/system \
--migrateuri tcp://192.168.55.136/

また、コチラ(外部サイト)を見ると、Xen / VMware / QEMU / VirtualBox は、通常のオプションで移動出来るようだ。
--p2p は QEMU、--tunnelled も QEMU、--direct は Xen のハイパーバイザで対応しているようだ。

とりあえず、コマンドでのマイグレーションも実現できたので、これで目的は達成。
ディスクが共有されていない環境でのマイグレーション(VMware製品だと、Storage vMothion に相当するかな?)は、ドコか別のタイミングで必要に応じて検証することにする。

これで、ココで書いた予定の1つ目はクリア。
2つ目の「dlm/corosync のフェンシング」について、詳細確認することにしよう。
多分かなり時間がかかると思う。

0 件のコメント:

コメントを投稿