

# Substituir o volume raiz de uma instância do Amazon EC2 sem interrompê-la
<a name="replace-root"></a>

O Amazon EC2 permite que você substitua o volume raiz do Amazon EBS por uma instância em execução retendo o seguinte:
+ Dados armazenados em volumes de armazenamento de instâncias: os volumes de armazenamento de instâncias permanecem anexados à instância após a restauração do volume raiz.
+ Dados armazenados em volumes de dados (não raiz) do Amazon EBS: os volumes não raiz do Amazon EBS permanecem anexados à instância após a restauração do volume raiz.
+ Configuração de rede — Todas as interfaces de rede permanecem conectadas à instância e mantêm seus endereços IP, identificadores e IDs de anexo. Quando a instância fica disponível, todo o tráfego de rede pendente é liberado. Além disso, a instância permanece no mesmo host físico, portanto, mantém seus endereços IP públicos e privados e o nome DNS.
+ Políticas do IAM — IAM os perfis e as políticas (como políticas baseadas em tags) associados à instância são mantidos e impostos.

**Topics**
+ [

## Como funciona a substituição de volume raiz
](#replace-root-how)
+ [

## Considerações
](#replace-root-considerations)
+ [

## Substituir um volume raiz
](#replace)

## Como funciona a substituição de volume raiz
<a name="replace-root-how"></a>

Quando você substitui o volume raiz de uma instância, uma *tarefa de substituição do volume raiz* é criada. O volume raiz original é desvinculado da instância e o novo volume raiz é anexado à instância em seu lugar. O mapeamento de dispositivos de blocos da instância é atualizado para refletir a ID do volume raiz substituto.

Quando você substituir o volume raiz de uma instância, deverá especificar a origem do snapshot para o novo volume. As opções a seguir são possíveis.

### Restaurar um volume raiz ao seu estado original
<a name="replace-launchstate"></a>

Essa opção substitui o volume raiz atual por um volume baseado no snapshot usado para criá-lo.

**Considerações sobre o uso do estado de inicialização**  
O volume raiz substituto obtém o mesmo tipo, tamanho e exclusão nos atributos de encerramento do volume raiz original.

### Substituir um volume raiz usando um snapshot
<a name="replace-snapshot"></a>

Essa opção substitui o volume raiz atual por um volume substituto baseado no snapshot que você especifica. Por exemplo, um snapshot específico que você criou antes usando esse volume raiz. Isso é útil se você precisar fazer uma recuperação depois de problemas causados porque o volume raiz foi corrompido por ou erros de configuração de rede no sistema operacional convidado.

O volume raiz substituto obtém o mesmo tipo, tamanho e exclusão nos atributos de encerramento do volume raiz original.

**Considerações sobre o uso de um snapshot**
+ Só é possível usar snapshots criados diretamente dos volumes raiz atuais ou anteriores da instância.
+ Não é possível usar cópias de snapshots criadas de snapshots que foram tirados do volume raiz. 
+ Após substituir o volume raiz com sucesso, você ainda pode usar os snapshots obtidos do volume raiz original para substituir o novo volume raiz (substituto).

### Substituir o volume raiz usando uma AMI
<a name="replace-ami"></a>

Essa opção substitui o volume raiz atual usando uma AMI que você especifica. Isso é útil se você precisar realizar correções ou atualizações de sistemas operacionais e aplicações. A AMI deve ter o mesmo código de produto, informações de cobrança, tipo de arquitetura e tipo de virtualização que a instância.

Se a instância estiver habilitada para ENA ou sriov-net, você deverá usar uma AMI que ofereça suporte a esses recursos. Se a instância não estiver habilitada para ENA ou sriov-net, você poderá selecionar uma AMI que não inclua suporte para esses recursos ou adicionar suporte automaticamente se selecionar uma AMI compatível com ENA ou sriov-net.

Se a instância estiver habilitada para o NitroTPM, você deverá usar uma AMI que tenha o NitroTPM habilitado. O suporte ao NitroTPM não será habilitado se a instância não tiver sido configurada para ele, independentemente da AMI que você selecionar.

Você pode selecionar uma AMI com um modo de inicialização diferente do modo da instância, desde que a instância seja compatível com o modo de inicialização da AMI. Se a instância não for compatível com o modo de inicialização, a solicitação falhará. Se a instância for compatível com o modo de inicialização, o novo modo de inicialização será propagado para a instância e seus dados UEFI serão atualizados adequadamente. Se você tiver modificado a ordem de inicialização manualmente ou adicionado uma chave UEFI Secure Boot privada para carregar módulos privados do kernel, as alterações serão perdidas durante a substituição do volume raiz.

O volume raiz substituto obtém o mesmo tipo de volume e o mesmo atributo de exclusão ao encerrar do volume raiz original, e obtém o tamanho do mapeamento de dispositivos de blocos do volume raiz AMI.

**nota**  
O tamanho do mapeamento de dispositivos de blocos de volume raiz da AMI deve ser igual ou maior que o tamanho do volume raiz original. Se o tamanho do mapeamento de dispositivos de blocos do volume raiz da AMI for menor que o tamanho do volume raiz original, a solicitação falhará.

Após a conclusão da tarefa de substituição do volume raiz, as seguintes informações novas e atualizadas são refletidas quando você descreve a instância usando o console, a AWS CLI ou AWS SDKs:
+ ID da nova AMI
+ ID de novo volume para o volume raiz
+ Atualização da configuração do modo de inicialização (se alterada pela AMI)
+ Atualização da configuração do NitroTPM (se habilitada pela AMI)
+ Atualização da configuração do ENA (se habilitada pela AMI)
+ Atualização da configuração de sriov-net (se habilitada pela AMI)

A ID da nova AMI também é refletida nos metadados da instância.

**Considerações sobre o uso de uma AMI:**
+ Se você usar uma AMI que tenha vários mapeamentos de dispositivos de blocos, somente o volume raiz da AMI será usado. Os outros volumes (não raiz) serão ignorados.
+ Você só poderá usar esse recurso se tiver permissões para a AMI e o respectivo snapshot de volume raiz associado. Não é possível usar esse recurso com AMIs do AWS Marketplace.
+ Você só poderá usar uma AMI sem um código de produto se a instância não tiver um código de produto.
+ O tamanho do mapeamento de dispositivos de blocos de volume raiz da AMI deve ser igual ou maior que o tamanho do volume raiz original. Se o tamanho do mapeamento de dispositivos de blocos do volume raiz da AMI for menor que o tamanho do volume raiz original, a solicitação falhará.
+ Os documentos de identidade da instância são atualizados automaticamente.
+ Se a instância for compatível com NitroTPM, os dados do nitroTPM da instância serão redefinidos e novas chaves serão geradas.

Após a conclusão do processo de substituição do volume raiz, você pode escolher se deseja manter o volume raiz original. Se você optar por excluir o volume raiz original após a conclusão do processo de substituição, o volume raiz original será automaticamente excluído e ficará irrecuperável. Se você escolher manter o volume raiz original após a conclusão do processo, o volume permanecerá provisionado em sua conta. Você deverá excluí-lo manualmente quando não precisar mais dele.

A tarefa de substituição de volume raiz passa pelos seguintes estados durante o processo:
+ `pending`: o volume substituto está sendo criado.
+ `in-progress`: o volume original está sendo desanexado e o volume substituto está sendo anexado.
+ `succeeded`: o volume substituto foi anexado com sucesso à instância e ela está disponível.
+ `failing`: a tarefa de substituição está em processo de falha.
+ `failed`: houve falha na tarefa de substituição, mas o volume raiz original ainda está anexado.
+ `failing-detached`: a tarefa de substituição está em processo de falha e a instância pode não ter um volume raiz anexado.
+ `failed-detached`: houve falha na tarefa de substituição e a instância não tem um volume raiz anexado.

Se a tarefa de substituição do volume raiz falhar, a instância será reinicializada e o volume raiz original permanecerá anexado à instância.

## Considerações
<a name="replace-root-considerations"></a>

Antes de começar, considere o seguinte:

**Requisitos**
+ A instância deve estar no estado `running`.
+ A instância é reinicializada automaticamente durante o processo. O conteúdo da memória (RAM) é apagado durante a reinicialização. Não requer reinicializações manuais.
+ Não é possível substituir o volume raiz se ele for um volume de armazenamento de instâncias. Só há compatibilidade com instâncias com volumes raiz do Amazon EBS. 
+ Você pode substituir o volume raiz de todos os tipos de instâncias virtualizadas e instâncias bare metal do EC2 Mac. Nenhum outro tipo de instância bare metal é compatível.
+ Só é possível usar snapshots criados diretamente dos volumes raiz atuais ou anteriores da instância.
+ Se sua conta estiver habilitada para Criptografia do Amazon EBS por padrão na região atual, o volume raiz de substituição criado pela tarefa de substituição do volume raiz será sempre criptografado, independentemente do status de criptografia do snapshot especificado ou do volume raiz da AMI especificada.

**Resultados da criptografia**  
A tabela a seguir resume os possíveis resultados da criptografia.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/replace-root.html)

## Substituir um volume raiz
<a name="replace"></a>

Quando você substitui o volume raiz de uma instância, uma *tarefa de substituição do volume raiz* é criada. É possível usar a tarefa de substituição de volume raiz para monitorar o progresso e o resultado do processo de substituição.

------
#### [ Console ]

**Para substituir o volume raiz**

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

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

1. Selecione a instância que será substituída pelo volume raiz e escolha **Actions** (Ações), **Monitor and troubleshoot** (Monitorar e solucionar problemas) e **Replace root volume ** (Substituir volume raiz).
**nota**  
A ação **Replace root volume** (Substituir volume raiz) estará desabilitada se a instância selecionada não estiver no estado `running`.

1. Em **Restaurar**, escolha uma das seguintes opções:
   + **Estado de inicialização**: restaurar o volume raiz substituto a partir do snapshot que foi usado para criar o volume raiz atual.
   + **Instantâneo**: restaurar o volume raiz de substituição para o instantâneo que você especificar. Em **Snapshot**, selecione o snapshot a ser usado.
   + **Imagem**: restaurar o volume raiz substituto usando a AMI que você especificar. Em **Imagem**, selecione a AMI a ser usada.

1. (Opcional) Em **Taxa de inicialização do volume**, você pode especificar, em MiB/s, a taxa provisionada do Amazon EBS para inicialização do volume (taxa de inicialização do volume) na qual os blocos de snapshot devem ser baixados do Amazon S3 para o volume. Para obter mais informações, consulte [Use an Amazon EBS Provisioned Rate for Volume Initialization](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html#volume-initialization-rate). Para usar a taxa de inicialização padrão ou a restauração rápida de snapshots (se habilitada para o snapshot selecionado), não especifique nenhuma taxa.

1. (Opcional) Para excluir o volume raiz que você está substituindo, selecione **Excluir volume raiz substituído**.

1. Escolha **Criar tarefa de substituição**.

1. Para monitorar a tarefa de substituição, escolha a guia **Armazenamento** para a instância e expanda **Tarefas recentes de substituição do volume raiz**.

------
#### [ AWS CLI ]

**Para restaurar o volume raiz substituto para o estado de execução**  
Use o comando [ create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html). Em `--instance-id`, especifique o ID da instância para a qual deseja substituir o volume raiz. Omita os parâmetros `--snapshot-id` e `--image-id`. Para excluir o volume raiz original após ele ter sido substituído, inclua `--delete-replaced-root-volume` e especifique `true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `--volume-initialization-rate`, especifique um valor entre `100` e `300` MiB/s.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**Para restaurar o volume raiz em um snapshot específico**  
Use o comando [create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html). Em `--instance-id`, especifique o ID da instância para a qual deseja substituir o volume raiz. Em `--snapshot-id`, especifique o ID do snapshot a ser usado. Para excluir o volume raiz original após ele ter sido substituído, inclua `--delete-replaced-root-volume` e especifique `true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `--volume-initialization-rate`, especifique um valor entre `100` e `300` MiB/s.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--snapshot-id snap-9876543210abcdef0 \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**Para restaurar o volume raiz substituto usando uma AMI**  
Use o comando [ create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html). Em `--instance-id`, especifique o ID da instância para a qual deseja substituir o volume raiz. Em `--image-id`, especifique o ID da AMI a ser usada. Para excluir o volume raiz original após ele ter sido substituído, inclua `--delete-replaced-root-volume` e especifique `true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `--volume-initialization-rate`, especifique um valor entre `100` e `300` MiB/s.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--image-id ami-09876543210abcdef \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**Para visualizar o status de uma tarefa de substituição de volume raiz**  
Use o comando [describe-replace-root-volume-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-replace-root-volume-tasks.html) e especifique os IDs das tarefas de substituição do volume raiz a serem visualizadas.

```
aws ec2 describe-replace-root-volume-tasks \
    --replace-root-volume-task-ids replacevol-1234567890abcdef0 \
    --query ReplaceRootVolumeTasks[].TaskState
```

O seguinte é um exemplo de saída.

```
[
    "succeeded"
]
```

Como alternativa, especifique o filtro `instance-id` para filtrar os resultados por instância.

```
$ aws ec2 describe-replace-root-volume-tasks \
    --filters Name=instance-id,Values=i-1234567890abcdef0
```

------
#### [ PowerShell ]

**Para restaurar o volume raiz substituto para o estado de execução**  
Use o comando [New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html). Em `-InstanceId`, especifique o ID da instância para a qual deseja substituir o volume raiz. Omita os parâmetros `-SnapshotId` e `-ImageId`. Para excluir o volume raiz original após ele ter sido substituído, inclua `-DeleteReplacedRootVolume` e especifique `$true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `-VolumeInitializationRate`, especifique um valor entre `100` e `300` MiB/s.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**Para restaurar o volume raiz em um snapshot específico**  
Use o comando [New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html). Em `--InstanceId`, especifique o ID da instância para a qual deseja substituir o volume raiz. Em `-SnapshotId`, especifique o ID do snapshot a ser usado. Para excluir o volume raiz original após ele ter sido substituído, inclua `-DeleteReplacedRootVolume` e especifique `$true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `-VolumeInitializationRate`, especifique um valor entre `100` e `300` MiB/s.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -SnapshotId snap-9876543210abcdef0 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**Para restaurar o volume raiz substituto usando uma AMI**  
Use o comando [New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html). Em `-InstanceId`, especifique o ID da instância para a qual deseja substituir o volume raiz. Em `-ImageId`, especifique o ID da AMI a ser usada. Para excluir o volume raiz original após ele ter sido substituído, inclua `-DeleteReplacedRootVolume` e especifique `$true`. Para especificar a taxa de inicialização do volume na qual os blocos de snapshot são baixados do Amazon S3 para o volume, para `-VolumeInitializationRate`, especifique um valor entre `100` e `300` MiB/s.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -ImageId ami-0abcdef1234567890 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**Para visualizar o status de uma tarefa de substituição de volume raiz**  
Use o comando [Get-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ReplaceRootVolumeTask.html) e especifique os IDs das tarefas de substituição do volume raiz a serem visualizadas.

```
(Get-EC2ReplaceRootVolumeTask `
    -ReplaceRootVolumeTaskIds replacevol-1234567890abcdef0).TaskState.Value
```

O seguinte é um exemplo de saída.

```
Succeeded
```

Como alternativa, especifique o filtro `instance-id` para filtrar os resultados por instância.

```
PS C:\> Get-EC2ReplaceRootVolumeTask -Filters @{Name = 'instance-id'; Values = 'i-1234567890abcdef0'} | Format-Table 
```

------