Importar discos de inicialização manualmente


A maneira recomendada de importar imagens de disco de inicialização para o Compute Engine de seus data centers físicos, de máquinas virtuais (VMs, na sigla em inglês) na 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, siga as instruções manuais passo a passo deste guia.

O processo de importação de imagens importa apenas um disco por vez. Nesse guia, o foco é mostrar como importar imagens de discos de inicialização.

Importe seus discos de inicialização atuais somente se não for possível criar ou migrar seus aplicativos para serem executados em imagens públicas do Compute Engine. As imagens públicas já estão configuradas para serem executadas no ambiente do Compute Engine. Assim, é possível executar aplicativos nessas imagens sem ter que se preocupar com o carregador de inicialização e com as configurações do sistema operacional. No entanto, talvez seja necessário importar as imagens do seu disco de inicialização nos seguintes cenários:

  • Seus aplicativos exigem um sistema operacional não fornecido como imagem pública.
  • Você já tem um conjunto de imagens básicas 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 do que aquele para concluir o processo de importação da imagem do disco de inicialização.

Para receber ajuda na migração de suas VMs, use serviços de parceiros. Para mais informações, consulte Como migrar VMs para o Compute Engine.

Visão geral

Para importar uma imagem de disco de inicialização para o Compute Engine, recorra ao seguinte processo:

  1. Planeje seu caminho de importação. Identifique o local para preparar sua imagem de disco de inicialização antes de fazer upload dela, além de definir como se conectar a essa imagem após a inicialização no ambiente do Compute Engine.
  2. Prepare seu disco de inicialização para que ele seja executado no ambiente do Compute Engine e para que possa ser acessado após a inicialização.
  3. Crie e compacte o arquivo de imagem do disco de inicialização.
  4. Faça upload do arquivo de imagem para o Cloud Storage e importe a imagem para o Compute Engine como uma nova imagem personalizada.
  5. Use a imagem importada para criar uma instância de VM e garantir que ela seja inicializada corretamente.
  6. Se a imagem não for inicializada corretamente, solucione o problema anexando a imagem do disco de inicialização a outra instância e reconfigure-a.
  7. Otimize a imagem e instale o ambiente convidado para que a imagem do sistema operacional importada se comunique com o servidor de metadados e use outros recursos do Compute Engine.

Requisitos

Requisitos do 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 VM de origem.
  • Se você criou um kernel do sistema operacional personalizado, ele precisa atender aos requisitos de configuração de hardware e kernel. A maioria das distribuições Linux atende a eles, então esse requisito só se aplica a usuários avançados que desenvolvem os próprios sistemas operacionais personalizados para execução no Compute Engine.
  • O tamanho do disco de inicialização não pode ultrapassar 2.048 GB (2 TB).
  • O disco de inicialização importado precisa ter uma tabela de partições MBR funcional ou uma configuração híbrida de uma tabela de partições GPT com um carregador de inicialização MBR.
  • A partição principal do disco de inicialização pode ter qualquer formato, desde que seja inicializada corretamente a partir do carregador de inicialização MBR.
  • O carregador no disco de inicialização não pode ter os argumentos de linha de comando de kernel quiet, rhgb ou splashimage=. O Compute Engine não é compatível com telas de apresentação na inicialização. Remova esses valores da configuração do GRUB durante a etapa de configuração do carregador de inicialização.
  • O sistema operacional no disco de inicialização precisa ser compatível com ACPI.

Requisitos do arquivo de imagem

O arquivo de imagem a ser importado precisa 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 software de gerenciamento de VM. Não copie o arquivo VMDK do sistema de arquivos do VM Manager.
  • O arquivo de imagem precisa ser de uma imagem compatível.
  • O nome do arquivo de imagem do disco precisa ser disk.raw.
  • O arquivo de imagem RAW precisa ter 1 GB além do seu tamanho original. Por exemplo, ele precisa ter 10 GB ou 11 GB, jamais 10,5 GB.
  • O arquivo compactado precisa ser do tipo .tar.gz e usar a compactação gzip, bem como a opção --format=oldgnu para o utilitário tar (manual).

Requisitos do projeto

Quando você cria uma instância de VM a partir de uma imagem importada, a instância precisa acessar o repositório de pacotes externos 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 o hospeda.

Para configurar o acesso ao repositório externo, conclua uma das seguintes etapas no projeto:

Limitações

Para importar discos usando redes que não permitem endereços IP externos, você precisa atender a outros requisitos de rede. Para mais informações, consulte Como importar discos usando redes que não permitem endereços IP externos.

Custos de importação de imagens

Antes de começar, entenda os custos envolvidos no processo de importação. Não há custo de entrada na rede para o upload do arquivo de imagem do disco de inicialização no Cloud Storage nem custo de importação dessa imagem como imagem personalizada do Compute Engine. No entanto, há custos para determinadas etapas do processo de importação:

  • O custo de armazenamento temporário dos seus arquivos de imagem compactados em um bucket padrão do Cloud Storage. Use um bucket temporário do Cloud Storage para controlar seus arquivos antes de importá-los como imagens personalizadas do Compute Engine. Remova o bucket após a conclusão do processo de importação.
  • O custo de armazenamento de imagens personalizadas após a importação delas para o Compute Engine.
  • O custo potencial para transferências de dados de saída no seu data center, no provedor de rede ou no serviço de nuvem atual. Os arquivos de imagem podem ficar muito grandes mesmo após a compactação. Portanto, copiá-los para o Compute Engine pode gerar taxas significativas de transferência de dados de saída em algumas plataformas.
  • O custo de discos permanentes e instâncias de VM em que é possível configurar a imagem depois de importá-la para o Compute Engine.

Planejar e preparar seu caminho de importação

O método para importação do seu disco depende da configuração atual do sistema que você quer passar para o Compute Engine. Adote um sistema que possibilite a criação e compactação do arquivo de imagem do disco de inicialização e que faça upload do arquivo de imagem para o Cloud Storage. Considere os seguintes itens ao planejar seu caminho de importação:

  • No caminho de importação de imagem, é necessário configurar seu disco de inicialização em um ambiente de sistema operacional em execução. Esse processo impede a inicialização do disco em ambientes externos ao do Compute Engine. Você é o responsável por garantir que não haja perda de dados nos seus discos nem interrupções nos seus aplicativos comerciais funcionais enquanto está importando seu sistema para o Compute Engine.
  • Identifique a configuração de acesso ao sistema atual e planeje como quer acessá-lo após a importação para o Compute Engine.
    • Se o sistema tem configurações do SSH ou de login do usuário atual, configure somente o carregador de inicialização e a imagem para uma execução otimizada no Compute Engine. Acesse a instância por meio da sua configuração do SSH ou do login de usuário diretamente no console serial interativo.
    • Se o sistema não tem configurações de login de usuário atual ou SSH, é necessário configurar o disco de inicialização para acessá-lo após a inicialização no Compute Engine.
  • O processo de importação pode durar muitas horas ou muitos dias, dependendo do tamanho do seu disco de inicialização e da velocidade da sua conexão de rede.
  • O sistema em que você cria e compacta sua imagem de disco de inicialização precisa ter espaço de armazenamento suficiente para gerar os arquivos de imagem em outro dispositivo de armazenamento que não seja o próprio disco de inicialização. Normalmente, suas imagens e seus arquivos tar.gz usam um espaço duas a três vezes maior do que o do próprio disco de inicialização.
  • Entenda a estrutura do sistema de arquivos que você quer importar.
    • Se o sistema operacional e os arquivos de aplicativo estão distribuídos entre vários discos, importe cada um deles individualmente e use cada imagem para criar discos permanentes únicos para sua instância de VM do Compute Engine.
    • Se os sistemas tiverem volumes de inicialização em uma configuração RAID em que vários discos funcionam como um único volume lógico, crie uma única imagem para 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 sistema criptografar o conteúdo do disco de inicialização com um módulo de plataforma confiável ou com a criptografia em nível de software, descriptografe o disco antes de criar o arquivo de imagem dele. O Google não lê imagens que estejam criptografadas. Criptografamos suas imagens logo após o upload. Com isso, é possível fornecer chaves de criptografia próprias para discos permanentes e buckets do Cloud Storage.

Depois de identificar ou criar um sistema em que é possível completar o processo de importação, conecte-se a ele e configure o carregador de inicialização.

Preparar 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 no ambiente do Compute Engine.

  • Configure o carregador no disco de inicialização para que a imagem seja executada no Compute Engine.
  • Configure o SSH ou o acesso de login de usuários no disco de inicialização para acessá-lo após a importação para o Compute Engine e iniciá-lo como instância de VM.

Esse processo pode impossibilitar a inicialização do sistema fora do Compute Engine. Portanto, uma prática recomendada é concluir essa etapa em um sistema isolado usando uma cópia do disco de inicialização que você quer importar.

Configurar o carregador de inicialização

Configure o carregador de inicialização no sistema para que ele seja executado no Compute Engine.

  1. Conecte-se ao terminal do sistema usando o disco de inicialização que planeja importar.

  2. Edite o arquivo de configuração do GRUB. Esse arquivo normalmente está em /etc/default/grub. Porém, em algumas distribuições mais antigas, ele pode estar em um diretório não padrão.

  3. Faça as alterações a seguir no arquivo de configuração do GRUB:

    • Remova todas as linhas que tenham splashimage=. O Compute Engine não é compatível com telas de apresentação na inicialização.
    • Remova os argumentos de linha de comando do kernel rhgb e quiet.
    • Adicione console=ttyS0,38400n8d aos argumentos de linha de comando do kernel para que a instância possa interagir com o console serial.
  4. Gere novamente o arquivo grub.cfg. De acordo com sua distribuição, use um dos comandos a seguir.

    • Debian e Ubuntu: sudo update-grub
    • RHEL, CentOS, SUSE e openSUSE: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Edite o arquivo /etc/fstab e remova referências a todos os discos e partições diferentes do disco de inicialização e de partições nesse disco. Entradas inválidas em /etc/fstab podem interromper o processo de inicialização do sistema.

Depois de configurar o carregador de inicialização, crie e compacte o arquivo de imagem de disco.

Configurar o SSH ou o acesso de login de usuário na imagem

Quando sua imagem está em execução no Compute Engine como instância de VM, é necessário um meio para acessar essa instância. Conecte-se à instância usando uma configuração do SSH ou faça login usando um nome de usuário e uma senha na conexão com o console serial.

Conclua a configuração do SSH ou de login de usuário antes de criar e compactar o arquivo de imagem de disco.

Criar e compactar o arquivo de imagem de disco

Crie e compacte o arquivo de imagem de disco de inicialização do sistema que quer importar para o Compute Engine. O processo de criação e compactação do arquivo de imagem pode variar dependendo da plataforma em que seu sistema opera.

Genérico

Em quase todos os sistemas, use esse processo para criar arquivos de imagem RAW que possam ser importados para o Compute Engine. Conclua esse processo no sistema em execução que estiver importando ou anexe seu disco de inicialização como secundário em outro sistema. Além disso, gere a imagem de disco de inicialização a partir do disco interrompido. Verifique se você tem espaço de armazenamento suficiente para manter temporariamente os arquivos de imagem de disco. Esse exemplo utiliza uma imagem de um sistema em execução.

  1. Conecte-se ao terminal do sistema que contém o disco de inicialização que você planeja importar.

  2. Use o comando lsblk para identificar o disco de inicialização de origem a partir do qual você quer criar uma imagem e o local em que há espaço suficiente para gravar os arquivos de imagem. Para esse exemplo, /dev/sda é o disco de inicialização de origem e /dev/sdb é um disco secundário maior ativado no diretório /tmp. Mesmo com /dev/sda em execução, é possível criar uma imagem a partir dele. Convém fazer isso em um sistema em repouso que não esteja processando ativamente dados nem 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
    
  3. Crie o arquivo de imagem do seu disco de inicialização.

    sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
    
  4. Alterne para o diretório no qual você gravou o arquivo disk.raw.

    cd /tmp
    
  5. Compacte o disco RAW no formato tar.gz. Nesta etapa, o arquivo de imagem é compactado para acelerar o upload dele no Cloud Storage. No OSX, instale gtar e o use para esta etapa em vez de tar.

    tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

AWS EC2

Para mais informações sobre como importar imagens de máquina virtual da Amazon (AMI, na sigla em inglês) e imagens de disco virtual da Amazon Web Services (AWS) para o Compute Engine, consulte Como importar imagens da AWS.

VirtualBox

Se você preparou seu sistema em um ambiente VirtualBox, é possível usar a ferramenta VBoxManage para converter uma imagem de disco .vdi ou .qcow2 para o formato disk.raw.

  1. Encerre a máquina guest do VirtualBox que você quer importar, substituindo GUEST_NAME pelo nome da sua máquina guest. É possível desativá-la com a interface do VirtualBox ou com o utilitário VBoxManage.

    VBoxManage controlvm GUEST_NAME acpipowerbutton
  2. Converta a imagem guest no formato RAW usando o utilitário VBoxManage, substituindo GUEST_NAME pelo caminho para a imagem guest. Esta imagem guest pode ser fornecida como um arquivo vdi ou qcow2:

    VBoxManage clonemedium GUEST_NAME ~/disk.raw --format RAW
  3. Compacte o disco RAW no formato tar.gz. Nesta etapa, o arquivo de imagem é compactado para acelerar o upload dele no Cloud Storage. No OSX, instale gtar e use-o para esta etapa em vez de tar.

    sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

O arquivo de imagem será compactado e ficará pronto para upload no Cloud Storage.

Importar 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. Se desejar, criptografe a imagem durante a etapa de importação.

Importe a imagem usando o console ou as ferramentas da 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.

  1. No console do Google Cloud, acesse a página Navegador do Cloud Storage.

    Acessar o navegador

  2. No topo da página, clique em Criar intervalo.
  3. Especifique um nome de bucket único, a classe de armazenamento Padrão e um local para armazenar seus arquivos de imagem.
  4. Clique em Criar para criar o bucket. Na página "Navegador", acesse o novo bucket.
  5. No topo da página, clique em Fazer upload de arquivos.
  6. Na caixa de diálogo do arquivo, selecione o arquivo compressed-image.tar.gz do qual você fez download para o sistema. O upload do arquivo é feito a partir da sua estação de trabalho local. Essa etapa pode levar muitas horas dependendo do tamanho do seu 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.

  1. No console do Google Cloud, acesse a página Imagens.

    Acessar "Imagens"

  2. No topo da página, clique em Criar imagem.
  3. No campo Nome, especifique um nome exclusivo para a imagem.
  4. Opcionalmente, especifique uma família para a nova imagem ou defina configurações específicas de criptografia para ela.
  5. Clique no menu Origem e selecione Arquivo do Cloud Storage.
  6. Informe o caminho para o arquivo compressed-image.tar.gz que você fez upload para o Cloud Storage.

    BUCKET_NAME/compressed-image.tar.gz
  7. Clique em Criar para importar a imagem. O processo pode levar muitos minutos dependendo do tamanho da imagem do disco de inicialização.

A imagem foi incluída na página Imagens. É possível criar uma VM usando essa imagem importada. Em caso de falha na inicialização, verifique se o carregador de inicialização foi configurado corretamente.

gcloud e gcloud storage

Use a gcloud CLI para fazer o upload do arquivo de imagem compactado do disco de inicialização. Conclua esse processo no sistema em que criou a imagem de disco de inicialização ou copie esse arquivo para outro sistema e conclua o processo de upload.

  1. Instale e inicialize a CLI gcloud no sistema do qual você planeja fazer upload de compressed-image.tar.gz.

  2. Use a gcloud CLI para criar um bucket do Cloud Storage.

    gcloud storage buckets create gs://BUCKET_NAME
  3. Faça upload do arquivo compressed-image.tar.gz no intervalo novo.

    gcloud storage cp compressed-image.tar.gz gs://BUCKET_NAME
  4. 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:

    • IMAGE_NAME: o nome da imagem importada;
    • BUCKET_NAME: o nome do bucket em que a imagem importada está armazenada.

Agora a imagem é incluída na lista de imagens personalizadas. É possível criar uma VM usando essa imagem importada. Em caso de falha na inicialização, verifique se o carregador de inicialização foi configurado corretamente.

gcloud compute images list --no-standard-images
NAME                                            PROJECT                  FAMILY                    DEPRECATED  STATUS
[IMAGE_NAME]                                    [PROJECT_ID]                                                   READY

Testar a imagem importada para garantir o funcionamento dela

Confirme se a imagem importada funciona conforme esperado. Crie uma VM com um disco de inicialização que use a imagem importada.

Console

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Na seção Disco de inicialização, clique em Alterar e faça o seguinte:

    1. Selecione a guia Imagens personalizadas.
    2. Para selecionar o projeto de imagem, clique em Selecionar um projeto e faça o seguinte:
      1. Selecione o projeto que contém a imagem.
      2. Clique em Abrir.
    3. Na lista Imagem, clique na imagem que você importou.
    4. Selecione o tipo e o tamanho do seu disco de inicialização.
    5. Para confirmar as opções do disco de inicialização, clique em Selecionar.
  3. Clique em Criar.

gcloud

gcloud compute instances create VM_NAME --zone ZONE --image IMAGE_NAME

Substitua:

  • VM_NAME: um nome exclusivo para a VM;
  • ZONE: a zona em que você criou o disco independente;
  • IMAGE_NAME: o nome da imagem importada.

Depois de criar a VM, confirme se ela está sendo inicializada corretamente. Confira a saída da porta serial:

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acesse "Instâncias"

  2. 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.
  3. Na seção Registros, clique na porta serial apropriada para expandir e visualizar a saída da porta serial desta VM.

Se a VM parar em Booting from Hard Disk 0..., solucione os problemas no ambiente do Compute Engine. Também é possível 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 parar em Booting from Hard Disk 0..., solucione os problemas no ambiente do Compute Engine. Também é possível reconfigurar o disco de inicialização no sistema original e repetir o processo de importação.

Também é possível testar a VM conectando-se a ela. Para isso, escolha uma destas opções:

  • SSH: se a VM tiver uma configuração do SSH funcional, conecte-se a ela usando o SSH e a chave privada. Encontre o endereço IP da VM na página Instâncias de VM.
  • Console serial: para fazer o login diretamente na VM sem o SSH, ative o console serial e faça login com um nome de usuário e uma senha.

A seguir