CentOS6のKVMでストレージライブマイグレーションを行う


この記事の所要時間: 47

RHEL6からストレージライブマイグレーションがサポートされたようです。CentOS6.3どうしで行いました。
OpenStackやらAWSなどの巷ではブロックマイグレーションとも言うらしいですね。

ホスト名の定義

  • source.example.com: ライブマイグレーション元となるKVMホストOS
  • dest.example.com: ライブマイグレーション先となるKVMホストOS
  • virtual.example.com: ライブマイグレーションを行う仮想マシン

source#をマイグレーション元、dest#をマイグレーション先とします。

イメージサイズを調べる

ターゲットホストに寸分違わぬイメージファイル領域を確保します。
以下の例はext4ファイルシステムを採用している場合に限ります。

ext3等の古いファイルシステムを使用している場合は dd コマンドで地道にイメージファイルを作成します。
ブロックサイズを小さくし過ぎるといつまでたっても終わらないのでなるべく大きめにとります。

iptablesの終了

ストレージライブマイグレーションの実行

一時的に/etc/hostsファイルに以下の記述を追加します。

この記述を追加しない場合、以下のようなエラーが出る可能性があります。

ストレージライブマイグレーションを実行します。

オプションの説明をします。

–live
ライブマイグレーションします。
–copy-storage-all
ストレージをすべてまるまるコピーします。
–persistent
転送先に自動的にxml定義ファイルを定義します。特に理由のない限りはこれを指定します。指定しないと仮想マシンを落とした時に立ちあげられなくなります。
–verbose
現在のマイグレーション進捗状況を表示します。ディスクサイズが大きいのでこれがないとどれぐらい進んだのかわからなくて不安になります。

ローカルネットワーク内の転送で10GBのイメージファイルでおよそ5分といったところです。
マイグレーションが完了するとsourceのVMが停止し、自動的にdestのVMが開始されます。

ただし、インターネットを越えて転送すると10GBあたり1時間もかかります。
さらに、安いプロバイダ上でこのような巨大なトラフィックを流すと一瞬で警告のメールが来て最悪の場合には契約が解消されてしまうおそれがあるので、こういったクリティカルな用途には上位のプロバイダを契約されることを強く推奨します。

エラー: Unsafe migration: Migration may load to data corruption if disks use cache != noneと出る場合

  • [VirtIO Disk1]->[Performance options]->[Advanced options]
    • キャッシュモデル: none
    • IO mode: default

に設定の上、再起動してください。

ライブマイグレーション後のXML生成

virsh migrate 時に --persistent オプションをつけていれば以下の操作は必要ありません。
転送先に自動的にxml定義ファイルが作成されます。

ライブマイグレーションしただけだとXMLファイルがdestに配置されません。
何かの拍子にシャットダウンしてしまうと仮想マシンマネージャーのエントリから消滅します。

消滅させてしまった場合はsourceからdestにXMLファイルをコピーしてください。

仮想マシンが生きているうちでしたら以下のコマンドでXMLファイルを生成することができます。

参考

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP