2017年5月18日木曜日

leo を sagittarius へ(オフラインマイグレーション)

じゃぁオフラインではどうだ?
ということで実際に実行してみた。
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system \
migrate --offline \
--domain leo \
--persistent \
--undefinesource \
--compressed \
--copy-storage-all \
--change-protection \
--auto-converge \
--desturi qemu+ssh://192.168.55.130/system \
--migrateuri tcp://192.168.55.130/ \
--verbose
エラー: 要求された操作は有効ではありません: オフラインマイグレーションが非共有ストレージを取り扱えません

はい、エラーになりました。
何だよ…非共有ストレージだと、オフラインマイグレーションは出来ないのかよ…。
書いてあった…。

Currently, copying non-shared storage or other file based storages (e.g. UEFI variable storage) is not supported during offline migration.

はい、終了…。
しかしコレでは、全く目的が達成できない。
なので、力技を使うことにする。

もし、leo がまだ起動状態だったら、停止しておいて欲しい。

で、gemini 上で leo を構成するファイルは以下の 5つだ。
  • /etc/libvirt/qemu/leo.xml
  • /var/lib/libvirt/images/leo.qcow2
  • /var/lib/libvirt/qemu/nvram/leo_VARS.fd
  • /var/log/libvirt/qemu/leo.log
  • /var/log/libvirt/qemu/leo.log.1
(最後の2つのログファイルは、状態によっては1つだったり2つ以上だったりする。)
(仮想ディスクを多く割り当てていれば、その分 qcow2 ファイル等が増えるぞ。)

この内の上3つ分が、最低限必要なファイルになる。

「力技」と言ったのは、この3つのファイルを gemini から取り出して、sagittarius の同じ場所に再配置する、という意味だ。
但し、1つ目のファイルは virsh コマンドで取得&virsh コマンドで取り込み、が正しい手順なので、それに従うことにする。

gemini で構成情報ファイルの作成
(gemini) $ virsh dumpxml leo > /tmp/leo.xml

ファイルのアーカイブ
(ディスクの使用量に注意しよう。)
(gemini) $ cd /
(gemini) $ sudo tar cSjf /tmp/leo.tbz \
tmp/leo.xml \
var/lib/libvirt/images/leo.qcow2 \
var/lib/libvirt/qemu/nvram/leo_VARS.fd
(gemini) $ ls -l /tmp/leo.tbz
(gemini) $ tar tvSjf /tmp/leo.tbz
(gemini) $ rm /tmp/leo.xml
(gemini) $ cd

ファイルを sagittarius で取得
(空き容量に注意)
(sagittarius) $ scp (ユーザ名)@(geminiのIPアドレス):/tmp/leo.tbz \
/tmp/leo.tbz
(sagittarius) $ ls -l /tmp/leo.tbz
(gemini) $ sudo rm /tmp/leo.tbz

sagittarius 上に展開
(sagittarius) $ ls -l /var/lib/libvirt/images/leo.qcow2 \
/var/lib/libvirt/qemu/nvram/leo_VARS.fd
(sagittarius) $ cd /
(sagittarius) $ sudo tar xSjf /tmp/leo.tbz
(sagittarius) $ ls -l /var/lib/libvirt/images/leo.qcow2 \
/var/lib/libvirt/qemu/nvram/leo_VARS.fd
(sagittarius) $ cd

仮想ディスクの再認識
(sagittarius) $ virsh vol-list default
(sagittarius) $ virsh pool-refresh default
(sagittarius) $ virsh vol-list default

sagittarius へ leo を登録
(sagittarius) $ ls -l /etc/libvirt/qemu
(sagittarius) $ virsh list --all
(sagittarius) $ virsh define /tmp/leo.xml
(sagittarius) $ virsh list --all
(sagittarius) $ ls -l /etc/libvirt/qemu

これで移行完了のはずだ。
実際に起動や動作確認してみて欲しい。

動作確認が出来たら余計なファイルを削除
(sagittarius) $ rm /tmp/leo.tbz
(sagittarius) $ rm /tmp/leo.xml

また、gemini / cancer からも leo の定義を消しておこう。
(gemini) $ virsh list --all
(gemini) $ virsh undefine leo --nvram
(gemini) $ virsh list --all
(gemini) $ ls /etc/libvirt/qemu
(cancer) $ virsh list --all
(cancer) $ virsh undefine leo --nvram
(cancer) $ virsh list --all

(gemini) $ virsh vol-list default
(gemini) $ virsh vol-delete leo.qcow2 default
(gemini) $ virsh vol-list default
(cancer) $ virsh vol-list default
(cancer) $ virsh pool-refresh default
(cancer) $ virsh vol-list default

これでごみ処理も終わりだ。
この方式なら確実に移行出来るが、メリット・デメリットがある。
メリット
  • カスタマイズの自由度
    仮想マシン定義ファイル(xmlファイル)を取り込む前に、そのファイルをカスタマイズすることで、構成が異なる仮想マシンとして取り込むことが可能になる。
デメリット
  • 移行対象ファイルの抜け漏れのリスク
    気をつけないと抜け漏れが発生する。
  • 停止時間が延びてしまう
    移行開始から移行終了までの時間が長く、途中で切ることが出来ない。
    (連続停止時間が長い)
    業務用途の場合は、この停止時間がビジネス的に致命傷になりかねない。
    その場合は、ディスクの使用効率が悪くなってでも、オンラインストレージマイグレーションを実施するようにすべき。
    オンラインマイグレーションなら、停止時間はほぼゼロだからだ。
次回は、aquarius 上に置いてある仮想マシン環境を、全て sagittairus に移行する。

0 件のコメント:

コメントを投稿