web-dev-qa-db-ja.com

Hyper-V上のUbuntu 16.04でhv-kvp-daemonが失敗する

packer およびpreseedを使用して、Hyper-VでのUbuntu 16.04 VMの展開を自動化しようとしています。私のpreseedファイルには、必要なすべての依存関係をインストールします。

d-i preseed/late_command string in-target apt-get install -y --install-recommends linux-virtual-lts-xenial linux-tools-virtual-lts-xenial linux-cloud-tools-virtual-lts-xenial;

インストールは問題なく完了し、再起動後にサービスが実行されます。

root@ubunt-xenial:~# systemctl status hv-kvp-daemon.service
 ● hv-kvp-daemon.service - Hyper-V KVP Protocol Daemon
 Loaded: loaded (/lib/systemd/system/hv-kvp-daemon.service; enabled; vendor preset: enabled)
 Active: active (running) since Mon 2018-01-15 13:32:34 UTC 12s ago
 Main PID: 567 (hv_kvp_daemon)
 CGroup: /system.slice/hv-kvp-daemon.service
         └─567 /usr/lib/linux-tools/4.4.0-109-generic/hv_kvp_daemon -n

 Jan 15 13:32:34 ubuntu-xenial systemd[1]: Started Hyper-V KVP Protocol Daemon
 Jan 15 13:32:34 ubuntu-xenial KVP[567]: KVP starting: pid is: 567
 Jan 15 13:32:34 ubuntu-xenial KVP[567]: KVP LIC Version: 3.1

ただし、packerが完了するには、ハイパーバイザーがゲストのIPアドレスを確認できる必要があります。しかし、どういうわけか、Hyper-Vは「連絡なし」を報告します。

D:\packer> Get-VMIntegrationService 'ubuntu-xenial'
[...]
ubuntu-xenial  Key-Value Pair Exchange True   No Contact

VMに戻ると、サービスが最初は実行されているのに失敗したことがわかります。

 root@ubunt-xenial:~# journalctl
 [...]
 Jan 15 13:33:36 ubuntu-xenial kernel: hv_balloon: Received INFO_TYPE_MAX_PAGE_CNT
 Jan 15 13:33:36 ubuntu-xenial kernel: hv_balloon: Data Size is 8
 Jan 15 13:34:26 ubuntu-xenial KVP[567]: read failed; error:9 Bad file descriptor
 Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Main process exited, code=exited, status=1/FAILURE
 Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Unit entered failed state.
 Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Failed with result 'exit-code'.

「systemctl restart hv-kvp-daemon.serv ice」でサービスを手動で再起動すると、サービスは起動しますが、しばらくすると再び失敗します。デーモンを適切に起動する唯一のオプションは、マシンをシャットダウンしてから再び電源を入れることです(再起動はnot動作します。手動で起動する必要があります)。

自動ビルドの場合、実行するにはこのサービスが必要ですが、これを修正するためのアイデアはありますか?

tl; dr:hv-kvp-daemonが起動し、〜1min後に失敗し、手動で再起動した後にのみ起動します。

1
DrDre

マシンは「データ交換」を有効にして設定されていますか?

このオプションは、Hyper-Vマネージャーにあります。マシンを右クリックして、[設定...]-> [管理/統合サービス]を選択します。少なくとも「データ交換」の横にチェックマークがあることを確認します。

2
GuyPaddock