부팅 시 가상 머신이 로컬 네트워크에 연결하는 데 시간이 걸리는 문제가 발생했습니다.
다음 명령을 사용하여 가상 머신을 만듭니다.
virt-install \
--connect qemu:///system \
--name demo \
--noautoconsole \
--disk path=/demo.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback \
--disk path=/base.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback \
--import \
--vcpus 1 \
--virt-type kvm \
--ram 256 \
--hvm \
--os-type linux
systemd
Ubuntu 14.04.4 LTS를 실행하는 호스트에서 머신을 생성하면 모든 것이 잘 작동합니다. 스크립트를 실행하기 전에 가상 머신이 시작되고 LAN에 연결됩니다. 그러나 호스트 시스템이 Debian 8.5를 실행 중인 경우 systemd
네트워크 리소스를 실제로 사용할 수 있기 전에 가상 시스템을 연결하고 스크립트 실행을 시작하는 데 시간이 걸립니다 .
디버깅하는 동안 다음 스크립트를 만들었습니다.
#!/bin/bash
date >> /ping.log
ping -c 3 -W 3 "192.168.1.7" >> /ping.log
date >> /ping.log
curl google.com >> ping.log
date >> /ping.log
다음은 해당 systemd
구성입니다.
[Unit]
Description=Demo
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/demo-init
[Install]
WantedBy=multi-user.target
머신이 시작되면 ping.log
다음 내용이 포함됩니다.
Tue Jul 19 12:57:56 UTC 2016
PING 192.168.1.7 (192.168.1.7) 56(84) bytes of data.
From 192.168.1.35 icmp_seq=1 Destination Host Unreachable
From 192.168.1.35 icmp_seq=2 Destination Host Unreachable
From 192.168.1.35 icmp_seq=3 Destination Host Unreachable
--- 192.168.1.7 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2001ms
pipe 3
Tue Jul 19 12:57:59 UTC 2016
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
[...]
</BODY></HTML>^M
Tue Jul 19 12:58:16 UTC 2016
다음을 나타냅니다:
ping
실패하다,- 연결하는데 20초 정도 걸립니다.
이에 비해 Ubuntu 호스트에서 동일한 시스템을 실행하면 다음이 저장됩니다 ping.log
.
Tue Jul 19 13:18:12 UTC 2016
PING 192.168.1.7 (192.168.1.7) 56(84) bytes of data.
64 bytes from 192.168.1.7: icmp_seq=1 ttl=64 time=2.27 ms
64 bytes from 192.168.1.7: icmp_seq=2 ttl=64 time=0.711 ms
64 bytes from 192.168.1.7: icmp_seq=3 ttl=64 time=5.47 ms
--- 192.168.1.7 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.711/2.819/5.472/1.981 ms
Tue Jul 19 13:18:14 UTC 2016
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
[...]
</BODY></HTML>^M
Tue Jul 19 13:18:14 UTC 2016
여기:
ping
성공했다- 실제로 작업을 수행하는 데 걸리는 시간인 2초가 소요됩니다
ping
.
실제 호스트(Debian 및 Ubuntu)는 하드웨어가 다르므로(NIC 수가 다름) 구성을 비교하기가 어렵습니다. 그러나 가상 머신은 Debian이 사전 설치된 동일한 기본 디스크를 기반으로 정확히 동일한 방식으로 배포되며 다음과 같은 기능을 갖습니다 /etc/network/interfaces
.
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.35
netmask 255.255.240.0
network 192.168.0.0
broadcast 192.168.3.255
gateway 192.168.1.1
dns-nameservers 192.168.1.3 192.168.1.4 8.8.8.8 8.8.4.4
두 가지 질문이 있습니다.
그렇게 큰 지연이 발생하는 이유는 무엇입니까?
내가 오해했나요?목표
network-online.target
? 스크립트를 실행할 때 기본적인 연결을 보장한다고 생각합니다. 그렇지 않은데, 이것의 목적은 무엇입니까?