web-dev-qa-db-ja.com

KVMホストのシャットダウン時にゲストを自動的に一時停止またはシャットダウンできますか?

CentOS 5.5 KVM Hostがあり、CentOSのさまざまなバージョンでゲストを実行しており、後で他のOSも実行する可能性があります。

ホストのシャットダウン時に、(a)すべてのゲストにACPIシャットダウンを自動的に送信するか、または(b)すべてのゲストをディスクに一時停止できるようにしたいと考えています。

これらのいずれかを達成するための標準的な方法はありますか、それとも独自の状況ですか?ありがとう!

16
Andrew Clegg

はい。

virsh shutdownコマンド(またはvirt-managerのようにlibvirtを使用した「シャットダウン」の他の実装)は、ゲストOSに完全にシャットダウンするように指示します。 manページから:

   shutdown domain-id

   Gracefully shuts down a domain.  This coordinates with the domain
   OS to perform graceful shutdown, so there is no guarantee that it
   will succeed, and may take a variable length of time depending on
   what services must be shutdown in the domain.

   The exact behavior of a domain when it shuts down is set by the
   on_shutdown parameter in the domain’s XML definition.

KVMでは、これによりACPI system_powerdownイベントが送信されます。

FedoraとRHEL 6では、libvirt-guests initスクリプトは、システムのシャットダウン時にすべてのゲストを一時停止するように構成されたボックスから出荷されます。ただし、これは特に魔法ではないので、ほとんど変更せずにこれをCentOS 5にコピーできます。

5
mattdm

これは、最近のFedoraおよびRHEL 6の標準機能になりました。

4
user62972

私が知る限り、CentOSにはそのような標準スクリプトはありません。シャットダウンするのに長い時間がかかるゲストを処理する必要があるため、コード化することは可能ですが、少し危険です。タイムアウト後にそれらを殺すだけでデータが破壊される可能性がありますが、それらを待つとシャットダウンがハングしたままになる可能性があります。

代わりに、再起動する前に手動でゲストをシャットダウンすることをお勧めします。しばらくの間、シャットダウンとリブートを置き換えるスクリプトがありました。このスクリプトは、実行中のゲスト(仮想マシンのリストにある単純なlc)があるかどうかを警告し、実行中のゲストがある場合はコマンドをブロックしました。

0
pehrs