2017年5月18日木曜日

leo を sagittarius へ(ストレージマイグレーション)

さて、では実際に leo を sagittarius へ移動させてみよう。

…と検証をしていたのだが、問題にぶち当たった。(マタカヨ…)

leo の仮想ディスクは sparse 形式を使用しており、ホスト(gemini)から見ると、実際に使用された量のみが消費される。
現在、leo には 72GB の仮想ディスクを割り当てているが、leo 側で 3GB弱しか使用していないため、gemini から見ると 3GB しかディスク領域が消費されていない状態だ。

(gemini) $ virsh vol-info leo.qcow2 default
名前: leo.qcow2
タイプ: ファイル
容量: 72.00 GiB
割り当て: 2.91 GiB

(gemini) $ sudo qemu-img info /var/lib/libvirt/images/leo.qcow2
image: /var/lib/libvirt/images/leo.qcow2
file format: qcow2
virtual size: 72G (77309411328 bytes)
disk size: 2.9G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false

(gemini) $ sudo du /var/lib/libvirt/images/leo.qcow2
3047356 /var/lib/libvirt/images/leo.qcow2

しかし、オンラインでストレージマイグレーションを実行しようとすると、72GB分まるまるコピーされてしまい、コピー先(sagittarius)で 72GB消費されてしまうようだ。
ディスクの使用効率的に非常にもったいない。
業務用で、ディスクをふんだんに使える環境ならまだしも、個人用途なので sparse を維持したままマイグレーションしたい。
色々試してみたが、どうもダメなようだ。
そのため、
  • 移行後に leo を停止して sparse 形式へ変換
  • leo を停止して、オフラインで移行
辺りのやり方に切り替えようと思う。
いずれも、leo を停止しないといけないため、後者のやり方を検討していく。
(前者は恐らく、移行後に leo を停止、対象ボリュームファイルに対して qemu-img convert を使用するのか、cp --spase=always か。)

とは言え、試してみたオンライン方式については、以下に記載する。
#実際には途中で辞めたので、最後まで成功しているかどうかは不明。


まずは、leo の土台である gemini / cancer を起動。gemini 上で leo を起動させよう。
(sagittarius) $ virsh list --all
(sagittarius) $ virsh start gemini
(sagittarius) $ virsh start cancer
(sagittarius) $ virsh list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system start leo
(sagittiarus) $ virsh -c qemu+ssh://192.168.55.136/system list --all

そのまま移動させようとすると、移動先の仮想ディスクの互換性が0.10になってしまうようだ。
移動元は互換性バージョン1.1なので、互換性レベルが下がってしまう(古いバージョンになってしまう)。
というわけで、先に移動先(sagittarius)で、空の仮想ディスクを作ってから移行する。

gemini で仮想ディスクの構成を確認する。
(gemini) $ virsh vol-dumpxml leo.qcow2 default

出力された内容を元に、sagittarius 上で xml ファイルを作成する。
(多分、幾つかのタグは初期設定では不要だと思われる。)
(sagittarius) $ vi leo.qcow2.xml
--ココから
<volume type='file'>
<name>leo.qcow2</name>
<key>/var/lib/libvirt/images/leo.qcow2</key>
<capacity unit='bytes'>77309411328</capacity>
<target>
<path>/var/lib/libvirt/images/leo.qcow2</path>
<format type='qcow2'/>
<permissions>
<mode>0600</mode>
</permissions>
<compat>1.1</compat>
<features>
<lazy_refcounts/>
</features>
</target>
</volume>
--ココまで

作成された xml ファイルを使って、仮想ディスクを作成する。
(sagittarius) $ virsh vol-create --pool default --file leo.qcow2.xml
(sagittarius) $ virsh vol-info leo.qcow2 default
(sagittarius) $ sudo qemu-img info /var/lib/libvirt/images/leo.qcow2

leo が起動したら、別途 teraterm を起動して、leo にログインし、ping を打つ等して放置だ。
(leo) $ ping 192.168.55.130

そしたら、gemini 上で稼働している leo を、sagittarius へ移動させてみる。
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system \
migrate --live \
--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

72G のディスクデータが丸っとコピーされるので、結構な時間がかかる。
#実際には、この作業を途中で中断しているため、最後まで見届けていない。


多分コレで、マイグレーションは完了するだろう。
leo が継続稼働しているのが確認できたら、sagittarius から停止起動等を確認してみて欲しい。

オンラインストレージマイグレーションは、可能だけど制約がある、ということになったため、次回、オフラインマイグレーションに挑戦してみることにする。
#しかし、オンラインストレージマイグレーションが出来ることを前提にしていたので、ちょっと厳しくなってきたな…。
#多分、オフラインも同じ現象になりそうだな…。

0 件のコメント:

コメントを投稿