Amazon Elastic Compute Cloud
User Guide for Linux Instances

Hibernar a instância do Linux

Ao hibernar uma instância, sinalizamos o sistema operacional para realizar a hibernação (suspend-to-disk). A hibernação salva os conteúdos da memória da instância (RAM) para o volume raiz do Amazon EBS. Persistimos o volume raiz do Amazon EBS e todos os volumes de dados do Amazon EBS da instância anexados. Ao reiniciar a instância:

  • O volume raiz do Amazon EBS é restaurado para seu estado anterior

  • Os conteúdos da RAM são recarregados

  • Os processos que estavam em execução anteriormente na instância são retomados

  • Os volumes de dados anexados anteriormente são reanexados e a instância conserva seu ID de instância.

É possível hibernar uma instância apenas se ela estiver habilitada para hibernação e atender aos pré-requisitos de hibernação.

Se uma instância ou aplicativo levar muito tempo para inicializar e criar um espaço de memória para se tornar totalmente produtivo, você poderá usar a hibernação para pré-aquecer a instância. Para pré-aquecer a instância:

  1. Execute-a com a hibernação habilitada.

  2. Coloque-a em um estado desejado.

  3. Hiberne-a, deixando-a pronta para ser retomada no mesmo estado, conforme necessário.

Não cobramos pelo uso de uma instância em hibernação quando ela está no estado stopped. Cobramos pelo uso de instâncias enquanto a instância está no estado stopping, quando os conteúdos da RAM são transferidos para o volume raiz do Amazon EBS. (Isso é diferente de quando você interrompe uma instância sem hiberná-la.) Não cobramos taxas de transferência de dados pelo uso. No entanto, cobramos pelo armazenamento de volumes do Amazon EBS, incluindo o armazenamento de conteúdos da RAM.

Se não precisar mais de uma instância, você pode encerrá-la a qualquer momento, incluindo quando ela está em um estado stopped (em hibernação). Para obter mais informações, consulte Encerre sua instância.

nota

Para obter informações sobre como usar a hibernação em instâncias do Windows, consulte Hibernar a instância do Windows no Guia do usuário do Amazon EC2 para instâncias do Windows.

Visão geral da hibernação

O diagrama a seguir mostra uma visão geral básica do processo de hibernação.


				Visão geral do fluxo de hibernação

Quando você hiberna uma instância em execução, acontece o seguinte:

  • Quando você inicia a hibernação, a instância muda para o estado stopping. Sinalizamos o sistema operacional para realizar a hibernação (suspend-to-disk). A hibernação congela todos os processos, salva o conteúdo da (RAM) no volume raiz do Amazon EBS e executa um desligamento normal.

  • Quando o desligamento é concluído, a instância muda para o estado stopped.

  • Todos os volumes do Amazon EBS permanecem associados à instância, e seus dados persistem, incluindo o conteúdo salvo da RAM.

  • Na maioria dos casos, a instância é migrada para um novo computador host subjacente quando ele é reiniciado. Isso também é o que acontece ao interromper e reiniciar uma instância.

  • Quando você reinicia a instância, a instância é reinicializada, e o sistema operacional lê o conteúdo da RAM no volume raiz do Amazon EBS antes de descongelar os processos para retomar seu estado.

  • A instância retém seus endereços IPv4 privados e todos os endereços IPv6 quando é hibernada e reiniciada. Lançamos o endereço de público IPv4 e atribuímos um novo ao reiniciá-lo.

  • A instância retém os endereços IP elásticos associados. Você é cobrado por todos os endereços IP elásticos associados a uma instância em hibernação. Com o EC2-Classic, um endereço IP elástico é dissociado da instância quando você a coloca para hibernar. Para obter mais informações, consulte EC2-Classic.

  • Quando você hiberna uma instância ClassicLink, ela se desvincula da VPC à qual estava vinculada. Você deverá vincular novamente a instância à VPC depois de reiniciá-la. Para obter mais informações, consulte ClassicLink.

Para obter informações sobre como a hibernação difere da reinicialização, da interrupção e do encerramento, consulte Diferenças entre reinicialização, parada, hibernação e encerramento.

Pré-requisitos de hibernação

Para hibernar uma instância, os seguintes pré-requisitos devem estar implementados:

  • Famílias de instâncias compatíveis — C3, C4, C5, M3, M4, M5, R3, R4 e R5.

  • Tamanho de RAM da instância — deve ser menor do que 150 GB.

  • Tamanho da instância — não compatível com instâncias sem sistema operacional.

  • AMIs compatíveis (deve ser uma AMI do HVM que ofereça suporte à hibernação):

    • AMI do Amazon Linux 2 liberada em 29/08/2019 ou posterior.

    • AMI do Amazon Linux 2018.03 liberada em 16/11/2018 ou posterior.

    • AMI do Ubuntu 18.04 LTS - Bionic liberada com o número de série 20190722.1 ou posterior. Recomendamos desabilitar o KASLR em instâncias com Ubuntu 18.04 LTS - Bionic. Para obter mais informações, consulte Desabilitação do KASLR em uma instância (apenas Ubuntu).

    Para configurar sua AMI para oferecer suporte à hibernação, consulte Configuração de uma AMI existente para oferecer suporte à hibernação.

    O suporte para outras versões do Ubuntu e outros sistemas operacionais será disponibilizado em breve.

    Para obter informações sobre as AMIs compatíveis para Windows, consulte Pré-requisitos de hibernação no Guia do usuário do Amazon EC2 para instâncias do Windows.

  • Tipo de volume raiz — deve ser um volume do Amazon EBS, não um volume de armazenamento de instâncias.

  • Tamanho do volume raiz do Amazon EBS — deve ser grande o suficiente para armazenar o conteúdo da RAM e acomodar o uso inesperado, por exemplo, sistema operacional ou aplicativos. Quando você habilita a hibernação, é alocado espaço no volume raiz na inicialização para armazenar a RAM.

  • Criptografia do volume raiz do Amazon EBS - para usar a hibernação, o volume raiz deve ser criptografado para garantir a proteção do conteúdo confidencial que estiver na memória no momento da hibernação. Quando os dados da RAM são movidos para o volume raiz do Amazon EBS, eles sempre são criptografados. A criptografia do volume raiz é imposta na execução da instância. Use uma das três opções a seguir para garantir que o volume raiz seja um volume do Amazon EBS criptografado:

    • Criptografia EBS de uma “única etapa”: em uma única chamada de API run-instances, você pode executar instâncias criptografadas do EC2 com suporte EBS a partir de uma AMI não criptografada e, ao mesmo tempo, habilitar a hibernação. Para obter mais informações, consulte Usar criptografia em AMIs com EBS.

    • Criptografia do EBS por padrão: você pode habilitar a criptografia do EBS por padrão ao garantir que todos os novos volumes do EBS criados na sua conta da AWS sejam criptografados. Dessa forma, você habilita a hibernação para suas instâncias sem especificar a intenção da criptografia na execução da instância. Para obter mais informações, consulte Criptografia por padrão.

    • AMI criptografada: você pode habilitar a criptografia do EBS usando uma AMI criptografada para executar sua instância. Se a sua AMI não tiver um snapshot raiz criptografado, você poderá copiá-lo para uma nova AMI e solicitar a criptografia. Para obter mais informações, consulte Criptografar uma imagem não criptografada durante a cópia e Cópia de uma AMI.

  • Habilitar a hibernação na inicialização — não é possível habilitar a hibernação em uma instância existente (em execução ou parada). Para obter mais informações, consulte Habilitar a hibernação para uma instância.

  • Opções de compra – este recurso está disponível apenas para Instâncias on-demand e Instâncias reservadas. Ele não está disponível no Instâncias spot. Para obter mais informações, consulte Como colocar em hibernação Instâncias spot interrompidas.

Limitações

  • Não há suporte para as seguintes ações para hibernação:

    • Alterar o tipo ou o tamanho de uma instância em hibernação

    • Criar snapshots ou AMIs de instâncias para as quais a hibernação está habilitada

    • Criar snapshots ou AMIs de instâncias em hibernação

  • Não é possível interromper ou hibernar instâncias com armazenamento de instâncias.*

  • Não é possível hibernar uma instância com mais de 150 GB de RAM.

  • Não é possível hibernar uma instância que está em um grupo do Auto Scaling ou é usada pelo Amazon ECS. Se sua instância estiver em um grupo do Auto Scaling, e você tentar hiberná-la, o serviço Auto Scaling do Amazon EC2 marcará a instância interrompida como não íntegra e poderá encerrá-la e executar uma instância substituta. Para obter mais informações, consulte Verificações de integridade de instâncias do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.

  • Não oferecemos suporte à manutenção de uma instância em hibernação por mais de 60 dias. Para manter a instância por mais que 60 dias, reinicie, interrompa e reinicialize a instância em hibernação.

  • Atualizamos constantemente nossa plataforma com atualizações e patches de segurança, o que entra em conflito com instâncias em hibernação. Notificamos você sobre as atualizações críticas que exijam uma reinicialização das instâncias em hibernação para que você possa executar um desligamento ou uma reinicialização para aplicar as atualizações e os patches de segurança necessários.

*Para instâncias C3 ou R3 que estão habilitadas para hibernação, não use volumes de armazenamento de instâncias.

Configuração de uma AMI existente para oferecer suporte à hibernação

Para hibernar uma instância que foi executada usando sua própria AMI, configure sua AMI para oferecer suporte à hibernação. Para obter mais informações, consulte Atualização de software de instância.

Se você usar uma das AMIs compatíveis ou se criar uma AMI com base em uma das AMIs compatíveis, não será necessário configurá-la para oferecer suporte à hibernação. Essas AMIs são pré-configuradas para oferecer suporte à hibernação.

Amazon Linux 2Amazon LinuxUbuntu
Amazon Linux 2

Como configurar uma AMI do Amazon Linux 2 para oferecer suporte à hibernação

  1. Atualize para o kernel mais recente, 4.14.138-114.102 ou posterior, usando o seguinte comando:

    [ec2-user ~]$ sudo yum update kernel
  2. Instale o pacote ec2-hibinit-agent a partir dos repositórios usando o comando a seguir.

    [ec2-user ~]$ sudo yum install ec2-hibinit-agent
  3. Execute a instância usando o seguinte comando.

    [ec2-user ~]$ sudo reboot
  4. Confirme se a versão do kernel está atualizada para a 4.14.138-114.102 ou posterior usando o comando a seguir.

    [ec2-user ~]$ uname -a
  5. Interrompa a instância e crie uma AMI. Para obter mais informações, consulte Criação de uma AMI do Linux de uma instância.

Amazon Linux

Para configurar uma AMI do Amazon Linux para oferecer suporte à hibernação

  1. Atualize para o kernel mais recente, 4.14.77-70.59 ou posterior usando o comando a seguir.

    [ec2-user ~]$ sudo yum update kernel
  2. Instale o pacote ec2-hibinit-agent a partir dos repositórios usando o comando a seguir.

    [ec2-user ~]$ sudo yum install ec2-hibinit-agent
  3. Execute a instância usando o seguinte comando.

    [ec2-user ~]$ sudo reboot
  4. Confirme se a versão do kernel está atualizada para a 4.14.77-70.59 ou superior usando o comando a seguir.

    [ec2-user ~]$ uname -a
  5. Interrompa a instância e crie uma AMI. Para obter mais informações, consulte Criação de uma AMI do Linux de uma instância.

Ubuntu

Para configurar uma AMI do Ubuntu 18.04 LTS para oferecer suporte à hibernação

  1. Atualize para o kernel mais recente, 4.15.0-1044 ou posterior usando o comando a seguir.

    [ec2-user ~]$ sudo apt update [ec2-user ~]$ sudo apt dist-upgrade
  2. Instale o pacote ec2-hibinit-agent a partir dos repositórios usando o comando a seguir.

    [ec2-user ~]$ sudo apt install ec2-hibinit-agent
  3. Execute a instância usando o seguinte comando.

    [ec2-user ~]$ sudo reboot
  4. Confirme se a versão do kernel está atualizada para a 4.15.0-1044 ou superior usando o comando a seguir.

    [ec2-user ~]$ uname -a

Habilitar a hibernação para uma instância

Para hibernar uma instância, ela precisa primeiro ser habilitada para hibernação. Par habilitar a hibernação, é necessário fazer isso ao executar a instância.

Importante

Não é possível habilitar ou desabilitar a hibernação para uma instância depois de executá-la.

ConsoleAWS CLIAWS Tools para Windows PowerShell
Console

Para habilitar a hibernação usando o console

  1. Siga o procedimento do Execução de uma instância usando o assistente de execução de instância.

  2. Na página Choose an Amazon Machine Image (AMI) (Escolher uma Imagem de máquina da Amazon (AMI)), selecione uma AMI compatível com a hibernação. Para obter mais informações sobre as AMIs compatíveis, consulte Pré-requisitos de hibernação.

  3. Na página Choose an Instance Type (Escolher um tipo de instância), selecione um tipo de instância compatível e escolha Next: Configure Instance Details (Próximo: configurar os detalhes da instância). Para obter mais informações sobre os tipos de instância compatíveis, consulte Pré-requisitos de hibernação.

  4. Na página Configure Instance Details (Configurar detalhes da instância), em Stop - Hibernate Behavior (Interromper - comportamento de hibernação), marque a caixa de seleção Enable hibernation as an additional stop behavior (Habilitar a hibernação como um comportamento de interrupção adicional).

  5. Continue como solicitado pelo assistente. Ao terminar de revisar suas opções na página Review Instance Launch (Revisar execução da instância), selecione Launch (Executar). Para obter mais informações, consulte Execução de uma instância usando o assistente de execução de instância.

AWS CLI

Para habilitar a hibernação usando a AWS CLI

Use o comando run-instances para executar uma instância. Habilite a hibernação usando o parâmetro --hibernation-options Configured=true.

aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type m5.large --hibernation-options Configured=true --count 1 --key-name MyKeyPair
AWS Tools para Windows PowerShell

Como habilitar a hibernação usando a AWS Tools para Windows PowerShell

Use o comando New-EC2Instance para executar uma instância. Habilite a hibernação usando o parâmetro -HibernationOptions_Configured $true.

New-EC2Instance -ImageId ami-0abcdef1234567890 -InstanceType m5.large -HibernationOptions_Configured $true -MinCount 1 -MaxCount 1 -KeyName MyKeyPair

 

ConsoleAWS CLIAWS Tools para Windows PowerShell
Console

Para visualizar se uma instância está habilitada para hibernação no console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Selecione a instância e, no painel de detalhes, inspecione Stop - Hibernation behavior (Interromper - comportamento de hibernação). Enabled (Habilitada) indica que a instância está habilitada para hibernação.

AWS CLI

Para visualizar se uma instância está habilitada para hibernação usando a AWS CLI

Use o comando describe-instances e especifique o parâmetro --filters "Name=hibernation-options.configured,Values=true" para filtrar as instâncias que estão habilitadas para hibernação.

aws ec2 describe-instances --filters "Name=hibernation-options.configured,Values=true"

O campo da saída a seguir indica que a instância está habilitada para hibernação.

"HibernationOptions": { "Configured": true }
AWS Tools para Windows PowerShell

Como visualizar se uma instância está habilitada para hibernação usando a AWS Tools para Windows PowerShell

Use o comando Get-EC2Instance e especifique o parâmetro -Filter @{ Name="hibernation-options.configured"; Value="true"} para filtrar as instâncias que estão habilitadas para hibernação.

Get-EC2Instance -Filter @{ Name="hibernation-options.configured"; Value="true"}

A saída lista as instâncias do EC2 habilitadas para hibernação.

Desabilitação do KASLR em uma instância (apenas Ubuntu)

Para executar a hibernação em uma instância recém-executada com o Ubuntu 18.04 LTS - Bionic, liberado com a série 20190722.1 do Ubuntu 18.04 LTS ou posterior, recomendamos desabilitar o KASLR (Kernel Address Space Layout Randomization). No Ubuntu 18.04 LTS, o KASLR é habilitado por padrão. O KASLR é um recurso de segurança do kernel padrão do Linux que ajuda a mitigar as ramificações de e a exposição e às vulnerabilidades de acesso à memória ainda não descobertas por randomização do valor base do endereço do kernel. Com o KASLR habilitado, há uma possibilidade de a instância não ser retomada depois de ter estado em hibernação.

Para saber mais sobre o KASLR, consulte Recursos do Ubuntu.

Para desabilitar o KASLR em uma instância executada com o Ubuntu

  1. Conecte-se à sua instância usando SSH. Para obter mais informações, consulte Conexão à sua instância do Linux utilizando SSH.

  2. Abra o arquivo /etc/default/grub.d/50-cloudimg-settings.cfg com seu editor de preferência. Edite a linha GRUB_CMDLINE_LINUX_DEFAULT para anexar a opção nokaslr no final, conforme mostrado no exemplo a seguir.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295 nokaslr"
  3. Salve o arquivo e saia do editor.

  4. Execute o comando a seguir para recompilar a configuração do grub.

    [ec2-user ~]$ sudo update-grub
  5. Reinicialize a instância.

    [ec2-user ~]$ sudo reboot
  6. Confirme se nokaslr foi adicionado executando o seguinte comando.

    [ec2-user ~]$ cat /proc/cmdline

    A saída do comando deve incluir a opção nokaslr.

Hibernação de uma instância

É possível hibernar uma instância se ela estiver habilitada para hibernação e atender aos pré-requisitos de hibernação. Se uma instância não puder hibernar com sucesso, ocorrerá um desligamento normal.

ConsoleAWS CLIAWS Tools para Windows PowerShell
Console

Para hibernar uma instância com suporte do Amazon EBS usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Selecione uma instância e escolha Actions (Ações), Instance State (Estado da instância) e Stop - Hibernate (Interromper - hibernar). Se Stop - Hibernate (Interromper - hibernar) estiver desabilitado, a instância já estará em hibernação ou interrompida ou não poderá ser hibernada. Para obter mais informações, consulte Pré-requisitos de hibernação.

  4. Na caixa de diálogo de confirmação, escolha Yes, Stop - Hibernate (Sim, parar - hibernar). Pode demorar alguns minutos para que a instância hiberne. O Instance State (Estado da instância) é alterado para Stopping (Interromper), enquanto a instância está hibernando e Stopped (Interrompida) quando a instância está em hibernação.

AWS CLI

Para hibernar uma instância com suporte do Amazon EBS usando a AWS CLI

Use o comando stop-instances e especifique o parâmetro --hibernate.

aws ec2 stop-instances --instance-ids i-1234567890abcdef0 --hibernate
AWS Tools para Windows PowerShell

Como hibernar uma instância com suporte do Amazon EBS usando a AWS Tools para Windows PowerShell

Use o comando Stop-EC2Instance e especifique o parâmetro -Hibernate $true.

Stop-EC2Instance -InstanceId i-1234567890abcdef0 -Hibernate $true

 

ConsoleAWS CLIAWS Tools para Windows PowerShell
Console

Para visualizar se a hibernação foi iniciada em uma instância usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Selecione a instância e, no painel de detalhes, inspecione State transition reason message (Mensagem de motivo de transição de estado). A mensagem Client.UserInitiatedHibernate: User initiated hibernate (Client.UserInitiatedHibernate: hibernação iniciada pelo usuário) indica que a hibernação foi iniciada na instância.

AWS CLI

Para visualizar se a hibernação foi iniciada em uma instância usando a AWS CLI

Use o comando describe-instances e especifique o filtro state-reason-code para ver as instâncias nas quais a hibernação foi iniciada.

aws ec2 describe-instances --filters "Name=state-reason-code,Values=Client.UserInitiatedHibernate"

O seguinte campo da saída indica que a hibernação foi iniciada na instância.

"StateReason": { "Code": "Client.UserInitiatedHibernate" }
AWS Tools para Windows PowerShell

Como visualizar se a hibernação foi iniciada em uma instância usando a AWS Tools para Windows PowerShell

Use o comando Get-EC2Instance e especifique o filtro state-reason-code para ver as instâncias nas quais a hibernação foi iniciada.

Get-EC2Instance -Filter @{Name="state-reason-code";Value="Client.UserInitiatedHibernate"}

A saída lista as instâncias do EC2 nas quais a hibernação foi iniciada.

Reinício de uma instância em hibernação

Reinicie uma instância em hibernação iniciando-a da mesma maneira como inicia uma instância interrompida.

ConsoleAWS CLIAWS Tools para Windows PowerShell
Console

Para reiniciar uma instância hibernada usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Selecione uma instância em hibernação e escolha Actions (Ações), Instance State (Estado da instância) e Start (Iniciar). Pode demorar alguns minutos para que a instância entre no estado running. Durante esse tempo, as verificações de status da instância mostram a instância em um estado de falha até que a instância seja reiniciada.

AWS CLI

Para reiniciar uma instância em hibernação usando a AWS CLI

Use o comando start-instances.

aws ec2 start-instances --instance-ids i-1234567890abcdef0
AWS Tools para Windows PowerShell

Como reiniciar uma instância em hibernação usando a AWS Tools para Windows PowerShell

Use o comando Start-EC2Instance.

Start-EC2Instance -InstanceId i-1234567890abcdef0

Solução de problemas de hibernação

Use estas informações para ajudar a diagnosticar e corrigir problemas que podem ser encontrados ao hibernar uma instância.

Não é possível hibernar imediatamente após a execução

Você receberá uma mensagem de erro se tentar hibernar uma instância muito rapidamente depois de executá-la.

Aguarde por cerca de dois minutos depois da execução para hiberná-la.

A transição de stopping para stopped demora muito tempo, e o estado da memória não é restaurado depois da execução

Quando demora muito tempo para que a instância em hibernação faça a transição do estado stopping para stopped, e se o estado da memória não é restaurado depois da execução, isso pode indicar que a hibernação não foi configurada corretamente.

Verifique o log do sistema da instância e procure as mensagens relacionadas à hibernação. Para acessar o log do sistema, conecte-se à instância ou use o comando get-console-output. Localize as linhas do log no hibinit-agent. Se as linhas do log indicarem uma falha ou se não houver linhas no log, muito provavelmente terá ocorrido uma falha na configuração da hibernação na execução.

Por exemplo, a seguinte mensagem indica que o volume raiz da instância não é grande o suficiente: hibinit-agent: Insufficient disk space. Cannot create setup for hibernation. Please allocate a larger root device.

Se a última linha do log no hibinit-agent for hibinit-agent: Running: swapoff /swap, a hibernação foi configurada com êxito.

Se você não vir nenhum log desses processos, talvez sua AMI não ofereça suporte à hibernação. Para obter informações sobre as AMIs compatíveis, consulte Pré-requisitos de hibernação. Se tiver usado sua própria AMI, verifique se você seguiu as instruções para Configuração de uma AMI existente para oferecer suporte à hibernação.

A instância está "presa" no estado stopping

Se você tiver hibernado sua instância e ela aparentar estar "presa" no estado stopping, você poderá interrompê-la à força. Para obter mais informações, consulte Solução de problemas da parada da sua instância.