У нас есть сервер Windows (с поддержкой EBS), работающий в EC2. Мы делаем регулярные снимки для резервного копирования данных. Я хочу создать новый экземпляр EC2 из одного из этих снимков.
Да, я понимаю, что это то же самое, что отключить питание и включить машину, но я хочу проверить, насколько надежны данные в моментальных снимках в целях восстановления.
Я пробовал использовать веб-консоль, инструменты командной строки и ruby sdk для создания образа AMI из снимка нашего загрузочного диска Windows (EBS) - все они создают AMI, который показывает платформу как Linux вместо Windows и паравиртуальную виртуализацию. хвм. Новый экземпляр EC2, созданный из этого AMI, не может подключиться к сети, я полагаю, он дает сбой, потому что он работает на неправильной платформе виртуализации.
Из всех поисковых запросов, которые я делал, я встречал только инструкции для Linux или инструкции по созданию Windows EBS из экземпляра EC2, поддерживаемого экземпляром, а не из экземпляра, поддерживаемого EBS, или моментального снимка.
Запуск экземпляра из снимка недоступен для Windows AMI (поскольку у вас тем временем обнаружил себя):
Важный
Регистрация снимка работает только для AMI Linux / UNIX; хотя вы можете зарегистрировать снимок для создания Windows AMI, AMI не запускается. [курсив мой]
Хотя это не указано, следует знать о возможности просто клонировать Инстанс с поддержкой Amazon EBS как указано в Создание образа из запущенного экземпляра - если это делается через Консоль управления AWS, например, EC2 пытается полностью завершить работу экземпляра перед созданием образа и после этого перезагружает экземпляр. Очевидно, что в целом это предпочтительнее, однако при желании этого можно избежать с помощью командной строки:
Если вы предпочитаете, чтобы экземпляр не перезагружался, вы можете использовать инструменты командной строки Amazon EC2 для создания образа [...]. В ec2-create-image у команды есть опция --no-reboot.
Упомянутый выше альтернативный подход явно не поможет создать новый экземпляр EC2 из одного из этих снимков как указано - решение, о котором в любом случае полезно знать, изложено в разделе Переход к новому экземпляру статьи Эрика Хаммонда Перемещение запущенного загрузочного инстанса EBS на новое оборудование на Amazon EC2 (который имеет другой вариант использования, но применяется независимо) и сводится к следующим шагам в вашем случае:
Этот метод был использован Колином Персивалем для обеспечения возможности бега FreeBSD на EC2 через дефенестрацию а также кстати. (который включает некоторые подсказки по проблемам виртуализации):
С другой стороны, экземпляры EC2 Windows запускаются в режиме HVM (аппаратная виртуальная машина), который FreeBSD очень хорошо поддерживает. Если нам удастся каким-то образом заставить EC2 запустить FreeBSD так же, как он запускает Windows, мы сможем запустить FreeBSD на широком диапазоне типов инстансов. Как мы можем обмануть EC2? Воспользуйтесь тем, что диски Elastic Block Store можно отсоединить от экземпляров EC2 и повторно подключить к другим экземплярам, а также заменить загрузочный диск экземпляра «Windows» диском, содержащим FreeBSD.
Я обнаружил, что вы можете создать AMI только из экземпляра, а не из существующих снимков. Команды для создания AMI из снимков поддерживают только Linux.
Команда командной строки для создания AMI из экземпляра Windows (запущенного или остановленного): ec2-create-image
. Я успешно сделал это с помощью ruby sdk. Команда создает снимки томов EBS, подключенных к экземпляру, а затем создает правильный AMI, используя эти снимки. Если вы используете веб-консоль, она отключит компьютер с Windows. Из командной строки / api у вас есть возможность не выключать его, и в этом случае вам нужно позаботиться о согласованности данных так же, как и при создании моментального снимка.
Итак, если вы завершили работу своего экземпляра и у вас нет AMI, вы в нужном направлении. В качестве альтернативы вы можете запустить новый экземпляр Windows, выключить его, а затем подключить тома, созданные из ваших снимков. Я еще не пробовал, но надеюсь, вы сможете отсоединить загрузочный том и подключить новый.