Este foi um comportamento estranho que encontramos na empresa onde trabalho, quando trocamos o servidor antigo de máquinas virtuais por um novo.
Para facilitar o serviço, ao invés de reinstalarmos todas as máquinas virtuais do zero, nós montamos o novo servidor e copiamos as máquinas virtuais do servidor antigo para o novo.
Quando você copia vm's de um local para outo, o VMWare faz a seguinte pergunta: "Hey, it looks like this machine has been physically moved or copied, do you want me to create a new VM-UUID?" ("Ei, parece que essa máquina está sendo fisicamente movida ou copiada, você deseja criar uma nova VM-UUID?").
Se responder que "sim", o VMWare recria internamente todos os identificadores únicos da máquina virtual. Mas o que nos interessa aqui é que todas as placas de rede virtuais tem seus endereços MAC trocados, e é aí que está o problema.
O problema que tive é que quando ligamos a vm com o novo UUID, ela não tinha mais as interfaces de rede. No Gentoo, distro em que testamos, a interface tentava ser montada, mas retornava a mensagem: "a interface de rede eth0 não existe" e "Por favor, verifique o hardware ou o módulo do kernel (driver)".
Explicação
- "Então, o que está havendo?"
Tente o seguinte:
1. se rodar o lspci você ainda consegue ver a interface de rede.
2. se rodar o 'dmesg' você ainda consegue ver o kernel encontrar a placa de rede e nomeá-la como eth0
- "Então, para onde a eth0 aponta?"
Tente rodar o comando ifconfig -a. Eu aposto que agora tem uma eth1 e seu endereço MAC coincide com o endereço MAC especificado no arquivo "maquina_virtual.vmx.
- "Ótimo! Então toda vez que eu copiar uma vm eu preciso atualizar os arquivos de sistema para usar as novas eth1, ou eth2, etc!?!?!"
Não, a solução não é essa. O problema é que a distro 'lembra' o endereço MAC do adaptador de rede e espera que seja o mesmo entre os boots. No nosso caso, a vm não conseguiu encontrar o endereço MAC que estava armazenada.
-"Ok, ótimo, é uma falha da udev. Sabemos que ela "quebrou" porque esperava um endereço MAC que não era mais usado. O que fazer agora?
A resposta
Para resolver o problema você precisa dizer à sua distro que a vm tem um novo endereço MAC. Como fazer isso varia de distro para distro. No nosso caso, encontramos a seguinte solução. No Gentoo faça o seguinte (mais simples): delete /etc/udev/rules.d/70-persistent-net.rules e reinicie. Sua eth0 deve voltar.
Isso quase sempre funciona. Mas, por algum motivo que as leis da física não conseguem explicar, às vezes parece que ele confunde a udev de novo; depois de reiniciar, tínhamos a eth1, eth2 etc.
Quando isso acontecia, partíamos para o próximo passo, certificando-nos que o arquivo de configuração da udev tinha 'eth0' listada, e não eth1, eth2 ou eth3. Edite o arquivo /etc/udev/rules.d/70-persistent-net.rules (ou o nome que ele tenha dado ao arquivo) para encontrar seu novo endereço MAC e reinicie. Sua eth0 deve voltar.
Outras distros:
1. verifique o /etc/iftab, editando-o se encontrá-lo;
2. idem o /etc/udev/rules.d/25-iftab.rules, deletando-o e reiniciando;
3. ibidem o /etc/sysconfig/network-scripts/ifcfg-eth0, editando-o se encontrá-lo.