Como posso gerar imagens do sistema de arquivos que podem ser usadas em muitos sistemas de virtualização diferentes?

3

Eu escrevi um script que gera uma imagem do sistema de arquivos raiz (baseado no Debian lenny) adequado para o Linux no modo de usuário. (Essencialmente, este script cria uma imagem do sistema de arquivos, monta-a com um dispositivo de loop, usa o debootstrap para criar uma instalação lenny, configura um IP estático para rede TUN / TAP, adiciona chaves públicas para login por SSH e instala um aplicativo da Web.) / p>

Essas imagens do sistema de arquivos funcionam muito bem com a UML, mas seria bom poder gerar imagens semelhantes que as pessoas possam usar em softwares de virtualização alternativos, e eu não estou familiarizado com essas opções. Em particular, como a idéia é usar essa imagem como um servidor independente para testar o aplicativo da Web, é importante que a rede funcione.

Gostaria de saber se alguém pode sugerir o que estaria envolvido na personalização de tais imagens do sistema de arquivos raiz para que elas pudessem ser usadas com outros softwares de virtualização, como VMware, Xen ou como uma instância do Amazon EC2? Duas preocupações particulares são:

  • Se esses sistemas não usarem uma imagem bruta do sistema de arquivos (por exemplo, precisarem de cabeçalhos com metadados ou forem compactados de alguma maneira particular), existem ferramentas para converter entre os diferentes formatos?

  • Eu suponho que no sistema de arquivos, pelo menos /etc/network/interfaces terá que ser personalizado, mas mudanças mais envolvidas provavelmente serão necessárias?

Muito obrigado por qualquer sugestão ...

    
por Mark Longair 01.03.2010 / 17:19

4 respostas

4

VirtualBox tem "VboxManage convertdd" para importar imagens de disco brutas (geradas com dd) em seu próprio formato especial .vdi. Eu acredito que existem coisas semelhantes para VMWare, etc.

Os vários produtos de virtualização muitas vezes têm algumas extensões de kernel (como as extensões de convidado do VirtualBox) que permitem que o sistema operacional convidado coopere com o host de várias maneiras, o que geralmente é útil ter instalado.

O Open Virtualization Format (OVF) parece estar reunindo suporte - veja link para uma introdução.

    
por 01.03.2010 / 17:49
2

Diferente do OP, estou usando o Centos7 e o hypervisor principal é o HyperV. Dito isso, a maior parte disso se aplica a outras distros e hipervisores.

Eu tenho o systemd-networkd configurado para usar o DHCP em todas as interfaces conectadas, e não tive problemas com a configuração da rede. Embora eu goste do poder do systemd-networkd, para o DNS ele requer systemd-resolved - que sai significativamente do comportamento tradicional do resolvedor. Eu fico com isso ... por enquanto.

O que eu tive problemas com os módulos do kernel. Primeiro, muitos módulos para vários hipervisores não foram instalados. Segundo, dracut (que cria o initramfs no centos e em algumas outras distros) examina o hardware atual e inclui apenas módulos que funcionam com esse hardware. É possível forçá-lo a incluir outros módulos via --add-drivers , mas você deve saber os nomes exatos dos arquivos para os módulos. Para qualquer hypervisor, você provavelmente precisará de armazenamento virtual e módulos de rede virtual, e talvez um driver de memória de balão, etc.

Ao elaborar argumentos para o dracut, observe a distinção entre um dracut module e um kernel module .

A lista de opções do dracut pode ser encontrada no link ; Acabei com algo semelhante ao seguinte (note que não tenho certeza se os nomes dos módulos do kernel são precisos - e se eles são apenas para o HyperV):

dracut --kver 0 -f --xz -a "busybox mdraid" -o "bootchart dash plymouth btrfs dmraid fcoe-uefi iscsi nbd biosdevname" --no-kernel --add-drivers "hv_storvsc hv_vmbus hv_utils"

Outra resposta sugere o formato OVF. A importação do IIRC OVF para o HyperV requer o download de um plugin que precisa de uma versão .NET muito antiga ... em outras palavras, é doloroso se o HyperV for o hipervisor usado com mais frequência para os vm's.

Felizmente, os VHDs são importáveis por muitos hipervisores e facilmente criados pelo qemu-img a partir do raw, qcow2, etc.

    
por 21.09.2016 / 17:57
0

Por outro lado, pode estar anexando a partição diretamente.

Em qemu é apenas na linha de comando.

No VirtualBox você tem que seguir os passos descritos no capítulo 9 do manual do usuário do VirtualBox - subseção "Configuração avançada de armazenamento": link que parece mais ou menos assim:

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -register
VBoxManage storageattach MyVM --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk

claro que / dev / sda pode ser alterado para qualquer dispositivo de bloco, especialmente partição (talvez no LVM2).

No VMWare também existe a possibilidade de anexar partição ou disco diretamente.

Graças a isso, em tal configuração você pode até mudar de uma VM para outra, usando a mesma instalação.

    
por 04.01.2011 / 00:36
0

Você conhece o site do sistema de arquivos raiz ? Todos os sistemas de arquivos existentes foram desenvolvidos originalmente para uso com a UML, mas devem funcionar com qualquer solução de virtualização. Note, entretanto, que não há bootloader instalado, pois as imagens são feitas de um único disco montado em loop (sem uma tabela de partição). Você ainda pode inicializá-los com o kvm usando sua opção de linha de comando -kernel , para os outros você precisará inicializar outra imagem (talvez o CD de recuperação / imagem?) E instalar o gerenciador de inicialização você mesmo. Obviamente, você pode ter que converter este formato bruto em qualquer formato que você precisa (vdi / vmware / ..) usando as ferramentas relevantes. Os scripts estão incluídos, caso você queira criar os sistemas de arquivos por conta própria.

    
por 31.12.2011 / 20:41