A maneira recomendada de importar imagens de disco de inicialização para o Compute Engine a partir de seus datacenters físicos, de máquinas virtuais (VMs) em sua estação de trabalho local ou de VMs executadas em outra plataforma de nuvem é usar a ferramenta de importação de disco virtual , que automatiza todas as etapas deste guia.
Se preferir não usar a ferramenta automatizada, você pode seguir o passo a passo manual deste guia.
Este processo de importação de imagens pode importar apenas um disco por vez, e este guia se concentra em como importar imagens de disco de inicialização.
Importe seus discos de inicialização existentes somente se você não conseguir criar ou migrar seus aplicativos para serem executados em imagens públicas do Compute Engine . As imagens públicas já estão configuradas para execução no ambiente do Compute Engine. Assim, você pode executar aplicativos nessas imagens sem se preocupar com as configurações do carregador de inicialização e do sistema operacional. No entanto, talvez seja necessário importar suas próprias imagens de disco de inicialização nos seguintes cenários:
- Seus aplicativos exigem um sistema operacional que não é fornecido como imagem pública.
- Você já tem um conjunto de imagens básicas que usa para criar VMs em outra plataforma de nuvem.
- O trabalho necessário para migrar o código do aplicativo para uma das imagens públicas é maior que o trabalho necessário para concluir o processo de importação da imagem do disco de inicialização.
Como alternativa, você pode obter assistência com a migração de suas VMs usando serviços de parceiros. Para obter mais informações, consulte Migração de VMs para o Compute Engine .
Visão geral
Para importar uma imagem de disco de inicialização para o Compute Engine, use o seguinte processo:
- Planeje seu caminho de importação. Você precisa identificar onde preparará a imagem do disco de inicialização antes de carregá-la e como se conectará a essa imagem depois que ela for inicializada no ambiente do Compute Engine.
- Prepare seu disco de inicialização para que ele possa inicializar no ambiente do Compute Engine e para que você possa acessá-lo após a inicialização.
- Crie e compacte o arquivo de imagem do disco de inicialização.
- Faça upload do arquivo de imagem para o Cloud Storage e importe-a para o Compute Engine como uma nova imagem personalizada .
- Use a imagem importada para criar uma instância de VM e verifique se ela inicializa corretamente.
- Se a imagem não inicializar com êxito, você poderá solucionar o problema anexando a imagem do disco de inicialização a outra instância e reconfigurando-a.
- Otimize a imagem e instale o ambiente convidado para que a imagem importada do sistema operacional possa se comunicar com o servidor de metadados e usar recursos adicionais do Compute Engine.
Requisitos
Requisitos para o disco de inicialização
Para importar discos de inicialização para o Compute Engine, eles precisam atender aos seguintes requisitos:
- Recomendamos que você instale todas as atualizações disponíveis na sua VM de origem.
- Se você construiu um kernel de sistema operacional personalizado, ele deverá atender aos requisitos de configuração de hardware e kernel . A maioria das distribuições padrão do Linux já atende a esses requisitos. Portanto, esse requisito é apenas para usuários avançados que criam seus próprios sistemas operacionais personalizados para execução no Compute Engine.
- O disco de inicialização não deve ser maior que 2.048 GB (2 TB).
- O disco de inicialização importado deve ter uma tabela de partição MBR funcional ou uma configuração híbrida de uma tabela de partição GPT com um carregador de inicialização MBR.
- A partição primária no disco de inicialização pode estar em qualquer formato de sua preferência, desde que inicialize corretamente a partir do gerenciador de inicialização MBR.
- O carregador de inicialização no disco de inicialização não deve ter argumentos de linha de comando
quiet
,rhgb
ousplashimage=
kernel. O Compute Engine não oferece suporte a telas iniciais na inicialização. Você pode remover esses valores da configuração do GRUB durante a etapa de configuração do bootloader . - O sistema operacional no disco de inicialização deve suportar ACPI .
Requisitos para o arquivo de imagem
O arquivo de imagem importado deve atender aos seguintes requisitos:
- Execute uma verificação de consistência na imagem do disco usando o comando
qemu-img check
no disco. - Para exportar o disco virtual, use a função de exportação do seu software de gerenciamento de VM. Não copie o arquivo VMDK do sistema de arquivos do seu gerenciador de VM.
- O arquivo de imagem deve ser uma imagem suportada .
- O nome do arquivo da imagem de disco deve ser
disk.raw
. - O arquivo de imagem RAW deve ter um tamanho incremental de 1 GB. Por exemplo, o arquivo deve ter 10 GB ou 11 GB, mas não 10,5 GB.
- O arquivo compactado deve ser um arquivo
.tar.gz
que usa compactação gzip e a opção--format=oldgnu
para o utilitáriotar
( manual ).
Requisitos para o seu projeto
Ao criar uma instância de VM a partir de uma imagem importada, a instância deverá ser capaz de acessar o repositório de pacotes externo do sistema operacional configurado no disco de inicialização.
Esse repositório pode ser acessado diretamente do fornecedor do sistema operacional ou por meio de uma conexão de rede com a infraestrutura local que hospeda esses repositórios.
Para configurar o acesso ao repositório externo, conclua uma das seguintes etapas no seu projeto:
- Configure um endereço IP externo estático para sua VM se conectar à sua rede local ou a outras redes externas.
- Configure um host bastião, VPN ou encaminhamento TCP IAP que pode ser usado para se conectar à sua rede local local ou a outras redes externas.
Limitações
Para importar discos usando redes que não permitem endereços IP externos, você precisa atender a requisitos de rede adicionais. Para obter mais informações, consulte Importando discos usando redes que não permitem endereços IP externos .
Custos de importação de imagens
Antes de começar, entenda os custos do processo de importação. Não há custo para a transferência de dados de rede de entrada fazer upload do arquivo de imagem do disco de inicialização para o Cloud Storage e não há custo para importar essa imagem como uma imagem personalizada do Compute Engine. No entanto, existem custos para algumas etapas específicas do processo de importação:
- O custo para armazenar temporariamente seus arquivos de imagem compactados em um bucket padrão do Cloud Storage. Você precisa usar um bucket temporário do Cloud Storage para armazenar seus arquivos antes de importá-los como imagens personalizadas do Compute Engine. Você pode remover o bucket após concluir o processo de importação.
- O custo de armazenamento de imagens personalizadas após a conclusão de sua importação para o Compute Engine.
- O custo potencial para transferências de dados de saída em seu data center, provedor de rede ou serviço de nuvem atual. Os arquivos de imagem podem ficar muito grandes mesmo depois de compactados. Portanto, copiar esses arquivos para o Compute Engine pode gerar cobranças significativas de transferência de dados de saída em algumas plataformas.
- O custo dos discos permanentes e das instâncias de VM do Compute Engine em que você pode configurar sua imagem depois de importá-la para o Compute Engine.
Planeje e prepare seu caminho de importação
O método de importação do disco depende da configuração atual do sistema que você deseja migrar para o Compute Engine. Você precisa de um sistema onde possa criar e compactar o arquivo de imagem do disco de inicialização, bem como um sistema onde possa fazer upload do arquivo de imagem para o Cloud Storage. Considere os seguintes itens ao planejar seu caminho de importação:
- O caminho de importação da imagem exige que você configure seu disco de inicialização em um ambiente de sistema operacional funcional. Esse processo pode fazer com que o disco de inicialização não inicialize em nenhum lugar fora de um ambiente do Compute Engine. É sua responsabilidade garantir que você não perca dados em seus discos nem interrompa seus aplicativos empresariais funcionais enquanto importa seu sistema para o Compute Engine.
- Identifique qual é a configuração de acesso ao sistema existente e planeje como você deseja acessá-lo depois de importá-lo para o Compute Engine.
- Se o seu sistema tiver configurações de login de usuário ou SSH, você poderá configurar apenas o carregador de inicialização e depois configurar a imagem para ser executada de maneira ideal no Compute Engine. Você pode acessar a instância por meio da configuração SSH existente ou por meio de login direto do usuário no console serial interativo .
- Se o seu sistema não tiver configurações de login de usuário ou SSH, você deverá configurar o disco de inicialização para poder acessá-lo após a inicialização no Compute Engine.
- A duração do processo de importação pode levar várias horas ou dias, dependendo do tamanho do seu disco de inicialização e da velocidade da sua conexão de rede.
- O sistema onde você cria e compacta a imagem do disco de inicialização deve ter espaço de armazenamento suficiente para criar os arquivos de imagem em um dispositivo de armazenamento diferente do próprio disco de inicialização. Normalmente, seus arquivos de imagem e
tar.gz
usam 2 a 3 vezes mais espaço que o próprio disco de inicialização. - Entenda a estrutura do sistema de arquivos do sistema existente que você deseja importar.
- Se o sistema operacional e os arquivos do aplicativo estiverem espalhados por vários discos, importe cada um desses discos individualmente e use cada imagem para criar um disco permanente exclusivo para sua instância de VM do Compute Engine.
- Se os seus sistemas tiverem volumes de inicialização em uma configuração RAID onde vários discos atuam como um único volume lógico, crie uma única imagem de toda a matriz em vez de criar uma imagem para cada disco na matriz. Os discos permanentes do Compute Engine eliminam a necessidade de configurações RAID.
- Se o seu sistema criptografar o conteúdo do disco de inicialização com um Trusted Platform Module ou com criptografia em nível de software, descriptografe o disco de inicialização antes de criar o arquivo de imagem do disco de inicialização. O Google não poderá ler suas imagens se elas estiverem criptografadas. Criptografamos suas imagens depois de carregá-las e permitimos que você forneça suas próprias chaves de criptografia para seus discos permanentes e buckets do Cloud Storage .
Depois de identificar ou criar um sistema onde você possa concluir o processo de importação, conecte-se a esse sistema e configure o bootloader .
Prepare a imagem do disco de inicialização
Em um sistema em execução, prepare a imagem do disco de inicialização para que ela funcione em um ambiente do Compute Engine.
- Configure o carregador de inicialização no disco de inicialização para que a imagem possa inicializar no Compute Engine.
- Configure o SSH ou o acesso de login do usuário no disco de inicialização para poder acessá-lo depois de importá-lo para o Compute Engine e iniciá-lo como uma instância de VM.
Esse processo pode impedir a inicialização do sistema fora do Compute Engine. Portanto, a prática recomendada é concluir esta etapa em um sistema isolado usando uma cópia do disco de inicialização que você deseja importar.
Configurar o carregador de inicialização
Configure o carregador de inicialização no sistema para que ele possa inicializar no Compute Engine.
Conecte-se ao terminal do sistema com o disco de inicialização que você planeja importar.
Edite o arquivo de configuração do GRUB. Normalmente este arquivo está em
/etc/default/grub
, mas em algumas distribuições anteriores, ele pode estar localizado em um diretório não padrão.Faça as seguintes alterações no arquivo de configuração do GRUB:
- Remova qualquer linha que tenha
splashimage=
. O Compute Engine não oferece suporte a telas iniciais na inicialização. - Remova os argumentos de linha de comando do kernel
rhgb
equiet
. - Adicione
console=ttyS0,38400n8d
aos argumentos da linha de comando do kernel, para que a instância possa interagir com o Serial Console .
- Remova qualquer linha que tenha
Gere novamente o arquivo
grub.cfg
. Use um dos comandos a seguir, dependendo da sua distribuição.- Debian e Ubuntu:
sudo update-grub
- RHEL, CentOS, SUSE, openSUSE:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Debian e Ubuntu:
Edite o arquivo
/etc/fstab
e remova as referências a todos os discos e partições, exceto o próprio disco de inicialização e as partições desse disco de inicialização. Entradas inválidas em/etc/fstab
podem interromper o processo de inicialização do sistema.
Depois de configurar o bootloader, crie e compacte o arquivo de imagem de disco .
Configure SSH ou acesso de login de usuário na imagem
Depois que sua imagem estiver em execução no Compute Engine como uma instância de VM, você precisará ter uma maneira de acessar essa instância. Você pode se conectar à instância usando uma configuração SSH existente ou fazer login usando um nome de usuário e uma senha conectando-se ao console serial .
Conclua a configuração do SSH ou de login do usuário antes de criar e compactar o arquivo de imagem de disco .
Crie e compacte o arquivo de imagem de disco
Crie e compacte o arquivo de imagem do disco de inicialização do sistema que você quer importar para o Compute Engine. O processo para criar e compactar o arquivo de imagem é diferente dependendo da plataforma onde seus sistemas operam.
Genérico
Em praticamente qualquer sistema, você pode usar esse processo para criar um arquivo de imagem RAW que pode ser importado para o Compute Engine. Você pode concluir esse processo no sistema em execução que está importando ou anexar seu disco de inicialização como um disco secundário em outro sistema e criar a imagem do disco de inicialização a partir do disco interrompido. Certifique-se de ter espaço de armazenamento disponível suficiente para armazenar temporariamente os arquivos de imagem de disco. Este exemplo obtém uma imagem de um sistema em execução.
Conecte-se ao terminal no sistema que contém o disco de inicialização que você planeja importar.
Use o comando
lsblk
para identificar o disco de inicialização de origem a partir do qual você deseja criar uma imagem e o local onde há espaço suficiente para gravar os arquivos de imagem. Neste exemplo,/dev/sda
é o disco de inicialização de origem e/dev/sdb
é um disco secundário grande montado no diretório/tmp
. Embora /dev/sda esteja em execução, você ainda pode criar uma imagem a partir dele. É melhor fazer isso em um sistema silencioso que não esteja processando dados ativamente ou executando aplicativos.lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 96G 0 part / ├─sda2 8:2 0 1K 0 part └─sda3 8:5 0 4G 0 part [SWAP] sdb 8:16 0 500G 0 disk /tmp sr0 11:0 1 1024M 0 rom
Crie o arquivo de imagem do seu disco de inicialização.
sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
Mude para o diretório onde você gravou o arquivo
disk.raw
.cd /tmp
Compacte o disco bruto no formato
tar.gz
Esta etapa compacta o arquivo de imagem para que você possa carregá-lo mais rapidamente no Cloud Storage. No OSX, instalegtar
e use-o nesta etapa em vez detar
.tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
AWSEC2
Para obter mais informações sobre como importar imagens de máquina da Amazon (AMI) e imagens de disco virtual da Amazon Web Services (AWS) para o Compute Engine, consulte Importar imagens da AWS .
Caixa Virtual
Se você preparou seu sistema em um ambiente VirtualBox, poderá usar a ferramenta VBoxManage
para converter uma imagem de disco .vdi
ou .qcow2
para o formato disk.raw
.
Desligue a máquina convidada VirtualBox que você deseja importar, substituindo GUEST_NAME pelo nome da sua máquina convidada. Você pode desligar a máquina convidada com a interface do VirtualBox ou usando o utilitário VBoxManage .
VBoxManage controlvm GUEST_NAME acpipowerbutton
Converta a imagem convidada para o formato RAW usando o utilitário VBoxManage , substituindo GUEST_NAME pelo caminho para sua imagem convidada. Esta imagem convidada pode ser fornecida como um arquivo
vdi
ouqcow2
:VBoxManage clonemedium GUEST_NAME ~/disk.raw --format RAW
Compacte o disco bruto no formato
tar.gz
Esta etapa compacta o arquivo de imagem para que você possa carregá-lo mais rapidamente no Cloud Storage. No OSX, instalegtar
e use-o nesta etapa em vez detar
.sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
O arquivo de imagem está compactado e pronto para upload no Cloud Storage.
Importe a imagem para sua lista de imagens personalizadas
Faça upload do arquivo para o Cloud Storage e importe a imagem para sua lista de imagens personalizadas. Opcionalmente, você pode criptografar a imagem durante a etapa de importação da imagem.
Importe a imagem com o console ou com as ferramentas Google Cloud CLI :
Console
Copie o arquivo compressed-image.tar.gz
para sua estação de trabalho local e use o console do Google Cloud para criar um bucket e fazer upload do arquivo .
- No console do Google Cloud, acesse a página do navegador Cloud Storage.
- Na parte superior da página, clique em Criar bucket .
- Especifique um nome de bucket exclusivo, a classe de armazenamento Padrão e um local onde deseja armazenar seus arquivos de imagem.
- Clique em Criar para criar o bucket. A página do navegador navega para o novo bucket.
- Na parte superior da página, clique em Fazer upload de arquivos .
- Na caixa de diálogo de arquivo, selecione o arquivo
compressed-image.tar.gz
que você baixou do seu sistema. O arquivo é carregado da sua estação de trabalho local. Esta etapa pode levar várias horas dependendo do tamanho do arquivo de imagem compactado e da velocidade da sua conexão de rede.
Depois de fazer upload da imagem para o Cloud Storage, importe o arquivo de imagem para sua lista de imagens personalizadas.
- No console do Google Cloud, acesse a página Imagens .
- Na parte superior da página, clique em Criar imagem .
- No campo Nome , especifique um nome exclusivo para a imagem.
- Opcionalmente, especifique uma família de imagens para sua nova imagem ou defina configurações de criptografia específicas para a imagem.
- Clique no menu Fonte e selecione Arquivo do Cloud Storage .
Insira o caminho para o arquivo
compressed-image.tar.gz
que você enviou para o Cloud Storage.BUCKET_NAME/compressed-image.tar.gz
Clique em Criar para importar a imagem. O processo pode levar vários minutos dependendo do tamanho da imagem do disco de inicialização.
A imagem agora está incluída na página Imagens . Você pode criar uma VM usando esta imagem importada . Se houver uma falha na inicialização, verifique e certifique-se de ter configurado o bootloader corretamente.
armazenamento gcloud e gcloud
Use a CLI gcloud para fazer upload do arquivo compactado de imagem do disco de inicialização. Você pode concluir esse processo no sistema onde criou a imagem do disco de inicialização ou pode copiar esse arquivo para outro sistema e concluir o processo de upload lá.
Instale e inicialize a CLI gcloud no sistema do qual você planeja fazer upload do
compressed-image.tar.gz
.Use a CLI gcloud para criar um novo intervalo do Cloud Storage.
gcloud storage buckets create gs://BUCKET_NAME
Faça upload do arquivo
compressed-image.tar.gz
para o novo bucket.gcloud storage cp compressed-image.tar.gz gs://BUCKET_NAME
Importe o arquivo de imagem como uma nova imagem personalizada.
gcloud compute images create IMAGE_NAME --source-uri gs://BUCKET_NAME/compressed-image.tar.gz
Substitua o seguinte:
- IMAGE_NAME : o nome da imagem que você importou.
- BUCKET_NAME : o nome do bucket em que a imagem importada está armazenada.
A imagem agora está incluída na lista de imagens personalizadas. Você pode criar uma VM usando esta imagem importada . Se houver uma falha na inicialização, verifique e certifique-se de ter configurado o bootloader corretamente.
gcloud compute images list --no-standard-images
NAME PROJECT FAMILY DEPRECATED STATUS [IMAGE_NAME] [PROJECT_ID] READY
Teste a imagem importada para garantir que funciona
Confirme se a imagem importada funciona conforme o esperado. Crie uma VM com um disco de inicialização que use a imagem importada.
Console
No console do Google Cloud, acesse a página Criar uma instância .
Na seção Disco de inicialização , clique em Alterar e faça o seguinte:
- Selecione a guia Imagens personalizadas .
- Para selecionar o projeto de imagem, clique em Selecionar um projeto e faça o seguinte:
- Selecione o projeto que contém a imagem.
- Clique em Abrir .
- Na lista Imagem , clique na imagem que você importou.
- Selecione o tipo e tamanho do seu disco de inicialização.
- Para confirmar as opções do disco de inicialização, clique em Selecionar .
Clique em Criar .
gcloud
gcloud compute instances create VM_NAME --zone ZONE --image IMAGE_NAME
Substitua o seguinte:
- VM_NAME : um nome exclusivo para sua VM.
- ZONE : a zona onde você criou o disco independente.
- IMAGE_NAME : o nome da imagem que você importou.
Depois de criar a VM, confirme se ela inicializou corretamente. Verifique a saída da porta serial:
Console
- No console do Google Cloud, acesse a página de instâncias de VM .
- Na lista de VMs, clique no nome da VM que você criou a partir da imagem importada. A página de detalhes da VM é aberta.
- Na seção Logs , clique na porta serial apropriada para expandir e visualizar a saída da porta serial para esta VM.
Se a VM parou em Booting from Hard Disk 0...
, você deverá solucionar os problemas no ambiente do Compute Engine ou poderá reconfigurar o disco de inicialização no sistema original e repetir o processo de importação.
gcloud
gcloud compute instances get-serial-port-output VM_NAME
Se a VM parou em Booting from Hard Disk 0...
, você deverá solucionar os problemas no ambiente do Compute Engine ou poderá reconfigurar o disco de inicialização no sistema original e repetir o processo de importação.
Você também pode testar a VM conectando-se a ela. Conecte-se à VM por meio de uma das seguintes opções:
- SSH: se a VM tiver uma configuração SSH funcional, você poderá conectar-se à VM usando SSH e sua chave privada. Você pode encontrar o endereço IP da instância de VM na página de instâncias de VM .
- Console serial: se precisar fazer login na VM diretamente sem SSH, você pode ativar o console serial e fazer login com um nome de usuário e senha.
O que vem a seguir
- Configure o disco para que sua imagem possa aproveitar os recursos do ambiente do Compute Engine.
- Depois que sua imagem estiver pronta para produção, crie uma versão final dessa imagem personalizada e inclua-a em uma família de imagens para que você possa gerenciar versões atualizadas da imagem personalizada.
- Algumas importações podem falhar devido a problemas no disco de inicialização. Para obter mais informações, consulte Solução de problemas de discos de inicialização .