16.5. virsh を使用した KVM のライブマイグレーション
virsh コマンドで別のホスト物理マシンに移行することができます。migrate コマンドは以下の形式のパラメーターを受け入れます。
# virsh migrate --live GuestName DestinationURLGuestName パラメーターは移行するゲスト仮想マシンの名前を表します。
DestinationURL パラメーターは移行先ホスト物理マシンの接続 URL です。移行先システムも Red Hat Enterprise Linux の同じバージョンを実行し、同じハイパーバイザーを使用して libvirt を実行している必要があります。
注記
DestinationURL パラメーターは異なる意味になります。
- 通常の移行の場合:
DestinationURLは、移行元のゲスト仮想マシンから見た移行先ホスト物理マシンの URL になります。 - ピアツーピア移行の場合:
DestinationURLは、移行元のホスト物理マシンから見た移行先ホスト物理マシンの URL になります。
重要
この例では host1.example.com から host2.example.com に移行しています。環境に適したホスト物理マシンの名前を使用してください。この例では guest1-rhel6-64 という名前の仮想マシンを移行しています。
ゲスト仮想マシンが実行中であることを確認します。
移行元システムhost1.example.comでguest1-rhel6-64が実行中であることを確認します。[root@host1 ~]#
virsh listId Name State ---------------------------------- 10 guest1-rhel6-64 runningゲスト仮想マシンを移行します。
次のコマンドを実行して、ゲスト仮想マシンの移行先host2.example.comへのライブマイグレーションを実行します。移行先 URL の末尾に/systemを追加し、libvirt に完全アクセスが必要であることを伝えます。#
virsh migrate --liveguest1-rhel7-64 qemu+ssh://host2.example.com/systemコマンドを入力すると、移行先システムの root パスワードの入力が求められます。待機します。
負荷やゲスト仮想マシンのサイズにより移行にかかる時間は異なります。virshはエラーが発生した場合しか報告しません。ゲスト仮想マシンは、移行が完全に終了するまで移行元のホストマシンで継続的に実行されます。ゲスト仮想マシンが移行先ホストに到達していることを確認します。
移行先システムのhost2.example.comでguest1-rhel7-64が実行されていることを確認します。[root@host2 ~]#
virsh listId Name State ---------------------------------- 10 guest1-rhel7-64 running
注記
注記
# virsh migrate --offline --persistent
16.5.1. virsh を使用した移行に関するヒント
- 手順16.1「libvirtd.conf の設定」の手順に従って libvirtd.conf ファイルを開きます。
- Processing controls のセクションを特定します。
################################################################# # # Processing controls # # The maximum number of concurrent client connections to allow # over all sockets combined. #max_clients = 5000 # The maximum length of queue of connections waiting to be # accepted by the daemon. Note, that some protocols supporting # retransmission may obey this so that a later reattempt at # connection succeeds. #max_queued_clients = 1000 # The minimum limit sets the number of workers to start up # initially. If the number of active clients exceeds this, # then more threads are spawned, upto max_workers limit. # Typically you'd want max_workers to equal maximum number # of clients allowed #min_workers = 5 #max_workers = 20 # The number of priority workers. If all workers from above # pool will stuck, some calls marked as high priority # (notably domainDestroy) can be executed in this pool. #prio_workers = 5 # Total global limit on concurrent RPC calls. Should be # at least as large as max_workers. Beyond this, RPC requests # will be read into memory and queued. This directly impact # memory usage, currently each request requires 256 KB of # memory. So by default upto 5 MB of memory is used # # XXX this isn't actually enforced yet, only the per-client # limit is used so far #max_requests = 20 # Limit on concurrent requests from a single client # connection. To avoid one client monopolizing the server # this should be a small fraction of the global max_requests # and max_workers parameter #max_client_requests = 5 #################################################################
max_clientsとmax_workersパラメーターの設定値を変更します。この 2 つのパラメーターの値は同一にすることをお勧めします。max_clientsは移行ごと 2 つのクライアントを使用し (移行元と移行先で 1 つずつ)、max_workersは実行フェーズでは移行元の 1 ワーカー、移行先では 0 ワーカーを使用し、終了フェーズでは移行先で 1 ワーカーを使用します。重要
max_clientsとmax_workersのパラメーター設定値は、libvirtd サービスに接続するすべてのゲスト仮想マシンによる影響を受けます。つまり、同じゲスト仮想マシンを使用し、かつ同時に移行を実行しているユーザーもすべてmax_clientsとmax_workersパラメーターに設定された値による制限を受けます。このため、同時ライブマイグレーションを行う際は、まず最大値を注意深く検討する必要があります。重要
max_clientsパラメーターは libvirt に接続できるクライアント数を制御します。一度に多数のコンテナーが起動すると、この制限にすぐに達するか、この制限を超えてしまう可能性があります。max_clientsパラメーターの値は増やすことでこの状態を回避することはできますが、これにより、インスタンスに対するサービス拒否 (DoS) 攻撃に対してシステムをより脆弱な状態にする可能性があります。この問題を軽減するため、Red Hat Enterprise Linux 7.0 ではmax_anonymous_clients設定が新たに導入されています。これは、許可できる接続の内、認証されていない接続の制限を指定します。実際のワークロードに合わせてmax_clientsとmax_anonymous_clientsの組み合わせを実装することができます。- ファイルを保存してサービスを再起動します。
注記
数多くの SSH セッションが開始されたものの認証が行われていないために移行中に接続が落ちる場合があります。デフォルトでは、sshdで認証前の状態が許可されるのは 10 セッションのみです。この設定は sshd 設定ファイル内のMaxStartupsパラメーターで制御されます (/etc/ssh/sshd_config内)。場合によっては、このパラメーターを調整する必要があります。DoS 攻撃 (また一般的にはリソースの過剰使用) を防ぐ目的でこの制限が設けられているため、このパラメーターを調整するには注意が必要です。値を高く設定しすぎると、当初の目的を達成することができなくなります。このパラメーターを変更するには、/etc/ssh/sshd_configを編集してMaxStartups行の先頭にある#を削除し、10(デフォルト値) をより大きな値に変更します。その後は必ずファイルを保存してsshdサービスを再起動してください。詳細は、sshd_configの man ページを参照してください。
16.5.2. virsh migrate コマンドの追加オプション
--live 以外にも、virsh migrate コマンドは次のようなオプションを受け入れます。
--direct- 直接の移行に使用します。--p2p- used for peer-to-peer migration--tunneled- トンネル移行に使用します。--offline- 移行先のドメインを開始したり、移行元ホスト上でこれを停止することなくドメイン定義を移行します。オフラインの移行は非アクティブなドメインで使用でき、--persistentオプションを指定して実行する必要があります。--persistent- 移行先ホスト物理マシンでドメインを永続的な状態に維持します。--undefinesource- 移行元ホスト物理マシンのドメインの定義を解除します。--suspend- 移行先ホスト物理マシンでドメインを一時停止の状態に維持します。--change-protection- 移行の実行中に、ドメインに対して互換性のない設定変更が行われないよう強制します。このフラグは、ハイパーバイザーでサポートされている場合に暗黙的に有効になります。ただし、ハイパーバイザーに変更保護のサポート機能がない場合には、これを明示的に使用して移行を拒否することができます。--unsafe- 移行を強制的に実行し、安全のための手順はすべて無視します。--verbose- 実行中の移行の進捗状況を表示します。--compressed- ライブマイグレーションの実行時に繰り返し転送されるメモリーページの圧縮をアクティブにします。--abort-on-error- ソフトエラー (例: I/O エラー) が移行時に発生する場合に、移行をキャンセルします。--domain [name]- ドメイン名、ID または UUID を設定します。--desturi [URI]- クライアント (通常の移行) または移行元 (p2p 移行) から表示される移行先ホストの接続 URI です。--migrateuri [URI]- 通常は省略できる移行 URI です。--graphicsuri [URI]- シームレスなグラフィックスの移行に使用されるグラフィックス URI です。--listen-address [address]- 移行先のハイパーバイザーが着信接続でバインドする必要のあるリッスンアドレスを設定します。--timeout [seconds]- ライブマイグレーションカウンターが N 秒を超えるとゲスト仮想マシンを強制的に一時停止します。これはライブマイグレーションの場合にのみ使用できます。タイムアウトが開始されると、一時停止しているゲスト仮想マシンで移行が続行されます。--dname [newname]- 移行時にドメイン名を変更する場合に使用します。このオプションも通常は省略できます。--xml [filename]- 基礎となるストレージにアクセスする際に移行元と移行先間で異なる名前を構成するなど、ドメイン XML のホスト固有の部分に多数の変更を加える場合、該当するファイル名を使用して、移行先で使用する代替 XML ファイルを指定できます。このオプションは通常は省略されます。--migrate-disks [disk_identifiers]- このオプションは、移行時にコピーされるディスクを選択するために使用できます。これにより、一部のディスクが移行先にすでに存在する場合や有用でなくなる場合など、一部のディスクをコピーすることが望ましくない状況で、より効率的なライブマイグレーションを実行できます。[disk_identifiers] は移行されるディスクのコンマ区切りの一覧に置き換える必要があります。これは、ドメイン XML ファイルの<target dev= />行にあるそれぞれの引数で特定されます。
virsh migrate-setmaxdowntime [domain] [downtime]- 別のホストにライブマイグレーションされるドメインに許容可能な最大ダウンタイムを設定します。指定されるダウンタイムはミリ秒で表されます。指定されるドメインは、移行されるドメインと同じである必要があります。virsh migrate-compcache [domain]- ライブマイグレーション中に繰り返し転送されるメモリーページを圧縮するために使用されるキャッシュの容量 (バイト単位) を設定し、取得します。--size--sizeが使用されていない場合、コマンドは圧縮キャッシュの現在のサイズを表示します。--sizeが使用されていて、バイト単位で指定されている場合には、ハイパーバイザーは、現在のサイズが表示された後に指定サイズに一致する圧縮に変更するよう指示されます。--size引数は、移行プロセスやdomjobinfoから取得される圧縮キャッシュミスの増加数に対応して、ドメインのライブマイグレーション実行時に使用されることになっています。virsh migrate-setspeed [domain] [bandwidth]- 別のホストに移行される指定ドメインに移行帯域幅 (メビバイト/秒) を設定します。virsh migrate-getspeed [domain]- 指定ドメインに利用できる最大の移行帯域幅 (メビバイト/秒) を取得します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.