如何在 VirtualBox 中启动 VM 映像的多个实例?

amp*_*ent 5 virtualbox virtual-machine

我想配置一个具有所有功能的机器映像,然后能够在 VirtualBox 中启动它的多个实例。但是,它允许我仅启动每个虚拟机的一个实例。我尝试克隆虚拟机(并选择重新初始化 MAC 地址)并启动克隆,但是克隆没有获得 IP 地址。所以原来的网络配置如下:

>ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:92:0a:ec  
          inet addr:192.168.103.49  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fe92:aec/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5317 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:516671 (516.6 KB)  TX bytes:10492 (10.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:337 (337.0 B)  TX bytes:337 (337.0 B)
Run Code Online (Sandbox Code Playgroud)

而克隆没有eth0,只有lo,我无法 ssh 进入它。

tbe*_*nz9 0

更新

我能够准确地重新创建您的问题。我发现的最简单的解决方案是简单地删除内容/etc/udev/rules.d/70-persistent-net.rules并重新启动。该文件会在您重新启动时自动生成,并将 eth0 重置为当前分配的 MAC。

原答案

当您克隆虚拟机并重新初始化 Mac 时,操作系统会认为新的 Mac 是新的网络设备。它通常将新的 MAC 地址分配给 eth1。如果 eth1 没有正确配置,您将没有任何网络并且无法 ssh 登录。

您可以清除 udev 网络规则以强制操作系统忘记以前的 MAC 并将新的 MAC 分配给 eth0,或者您可以将 eth1 配置为主网络接口。

这里有一个很好的解释为什么 udev 规则很重要并且适用于您的情况:“例如,在一台具有两个由 Intel 和 Realtek 制造的网卡的计算机上,Intel 制造的网卡可能会变成 eth0,而 Realtek 网卡可能会变成 eth1 .在某些情况下,重新启动后,卡会以相反的方式重新编号。为避免这种情况,请创建 Udev 规则,根据网卡的 MAC 地址或总线位置为其分配稳定的名称。

另一个可能的问题是,如果 IP 地址是在网络配置中静态设置的。如果您有一个应该分配 IP 地址的 DHCP 服务器,请确保网络配置设置为 DHCP。

引用源码和udev规则文档