É possível criar uma EBS AMI para a instância do windows EC2?

3

Temos um servidor Windows (suportado pelo EBS) em execução no EC2. Fazemos instantâneos regulares para backups de dados. Gostaria de criar uma nova instância do EC2 a partir de um desses instantâneos.

Sim, percebo que isso é o mesmo que desligar o computador e ligar a máquina, mas quero testar a confiabilidade dos dados nos instantâneos para fins de recuperação.

Eu tentei usar o console da web, ferramentas de linha de comando e ruby sdk para criar uma imagem AMI a partir de um instantâneo da unidade de inicialização do Windows (EBS) - todos eles criam uma AMI que mostra a plataforma como Linux em vez de Windows e virtualização paravirtual em vez de hvm. Uma nova instância do EC2 criada a partir desta AMI nunca fica on-line, suponho que ela falhe porque está sendo executada na plataforma de virtualização incorreta.

De todo o googling que eu fiz, eu só encontrei instruções sobre o Linux, ou instruções para fazer um Windows EBS a partir de uma instância EC2 apoiada em instância - não um EBS, ou um instantâneo.

    
por Matt Connolly 01.02.2012 / 06:02

2 respostas

7

Antecedentes

Iniciar uma instância de um instantâneo não está disponível para AMIs do Windows (como você < a href="https://serverfault.com/a/355744/10305"> entretanto se descobriu ):

Important

Registering a snapshot works only for Linux/UNIX AMIs; although you can register a snapshot to create a Windows AMI, the AMI isn't launchable. [emphasis mine]

Alternativa

Embora não especificado, deve-se estar ciente da possibilidade de clonar simplesmente uma instância do Amazon EBS-Backed conforme descrito em Criando uma imagem de uma instância em execução - ao fazer isso por meio do AWS Console de Gerenciamento assim, o EC2 tenta encerrar a instância de forma limpa antes da criação da imagem e reinicia a instância posteriormente . Isto é obviamente geralmente preferível, no entanto, pode ser evitado através da linha de comando, se assim for desejado:

If you prefer the instance not be rebooted, you can use the Amazon EC2 command line tools to create the image [...]. The ec2-create-image command has a --no-reboot option.

Solução

A abordagem alternativa mencionada acima obviamente não ajudará a criar uma nova instância do EC2 a partir de um desses snapshots conforme especificado - uma solução útil para estar ciente de qualquer maneira é descrita na seção Moving para uma nova instância do artigo de Eric Hammond Mover uma instância de inicialização do EBS em execução para um novo hardware em Amazon EC2 (que tem um caso de uso diferente, mas se aplica independentemente) e resume-se a essas etapas no seu caso:

  1. Crie uma nova instância com os mesmos parâmetros de inicialização que o original.
  2. Aguarde até que a nova instância esteja em execução e pare (não termine).
  3. Separe o volume de inicialização do EBS da nova instância e exclua esse volume desanexado, já que ele não é mais necessário.
  4. Crie um novo volume a partir do instantâneo e anexe-o à nova instância.
  5. Reinicie a nova instância que agora será inicializada com o volume criado a partir do seu instantâneo.

Esta técnica tem sido usada por Colin Percival para permitir a execução FreeBSD no EC2 via defenestration também btw. (que inclui algumas dicas para os problemas de virtualização):

EC2 Windows instances, on the other hand, are launched in HVM (Hardware Virtual Machine) mode — which FreeBSD supports very well. If we can somehow trick EC2 into launching FreeBSD the same way as it launches Windows, we can run FreeBSD on a wide range of instance types. How can we trick EC2? Take advantage of the fact that Elastic Block Store disks can be detached from EC2 instances and reattached to different instances, and replace the boot disk of a "Windows" instance with a disk containing FreeBSD.

    
por 01.02.2012 / 10:32
1

Descobri que você pode criar uma AMI somente na instância, não em instantâneos existentes. Os comandos para criar uma AMI a partir de instantâneos suportam apenas o linux.

O comando da linha de comando para criar uma AMI a partir de uma instância do Windows (em execução ou parada) é ec2-create-image . Eu fiz isso com sucesso usando o sdk rubi. O comando cria capturas instantâneas dos volumes do EBS anexados à instância e, em seguida, constrói a AMI correta usando essas capturas instantâneas. Se você usar o console da web, ele desligará a máquina do Windows. Na linha de comando / api você tem a opção de não desligá-lo, caso em que você precisa ter o mesmo cuidado com a consistência dos dados, como faria com um snapshot de qualquer maneira.

Então, se você terminou sua instância e não tem um AMI, você está no alto do riacho. Como alternativa, você poderia iniciar uma nova instância do Windows e desligá-la e, em seguida, conectar volumes feitos a partir de suas capturas instantâneas. Ainda não tentei isso, mas espero que você possa desanexar o volume de inicialização e anexar um novo.

    
por 01.02.2012 / 10:53