Можно ли копировать в/из хранилища EBS в локальное хранилище экземпляров на экземпляре вверх/вниз?

#amazon-web-services #amazon-ec2 #amazon-ebs

Вопрос:

У нас есть рабочая нагрузка, которая значительно выигрывает от чрезвычайно быстрого ввода-вывода, а также от работы из существующего кэша. Рабочая нагрузка ввода-вывода потенциально может достигать 100 ГБ. В настоящее время я тестирую EBS gp3 10k IOPS, и это приемлемо, но могло бы быть и лучше.

Поддерживает ли Amazon какую-либо конфигурацию экземпляра, в которой я могу запросить загрузку своего экземпляра, сначала скопировав операционную систему и данные в временное локальное хранилище экземпляров с тома EBS, а также вернувшись обратно, когда я запрошу завершение работы?

Ответ №1:

Я думаю, что вы, возможно, подходите к этому с более сложной точки зрения, чем вам нужно.

Я думаю, что вам следует просто оставить ОС в томе EBS и просто использовать том хранилища экземпляров соответствующего размера для ваших рабочих данных.

Возможно, c5d.xlarge был бы хорошим выбором.

Кроме того, вам все еще нужно придумать решение для надежного копирования данных обратно в постоянное хранилище (EBS) при завершении работы… возможно, вы могли бы создать службу systemD, которая запускается при завершении работы и просто выполняет rsync; возможно, это приведет вас в правильном направлении: https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

Кроме того, если вам нужен сценарий запуска, который запускается при каждой загрузке, вот дополнительная информация об этом: https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/

Наконец, чтобы ответить на ваш первый вопрос: «Поддерживает ли Amazon какую-либо конфигурацию экземпляра, в которой я могу запросить загрузку своего экземпляра, сначала скопировав операционную систему и данные в временное локальное хранилище экземпляров с тома EBS, а также обратно, когда я запрашиваю завершение работы?» Короткий ответ: Нет.

Ответ №2:

EC2 предоставляет такую функцию, как пользовательские данные — когда экземпляр создается при первой загрузке, мы можем выполнять некоторые сценарии, которые являются частью пользовательских данных. Эти сценарии запускаются только при первой загрузке, в случае остановки и перезапуска экземпляра они не будут выполняться.

Скрипт для использования данных может быть добавлен при создании экземпляра:

введите описание изображения здесь

Теперь есть разница между остановкой экземпляра и его завершением. Если вы остановите экземпляр, содержимое хранилища эфемерных экземпляров не будет потеряно (дополнительная информация: срок службы экземпляра). Если вы завершите экземпляр, очевидно, что все пропало. Я разъясняю это. поскольку, согласно AWS, нет гарантии безопасного копирования данных в случае прекращения работы экземпляра (источник]:

Если вы запустите сценарий при завершении работы экземпляра, у вашего экземпляра может произойти ненормальное завершение, поскольку у нас нет возможности гарантировать выполнение сценариев завершения работы. Amazon EC2 пытается полностью закрыть экземпляр и запустить любые сценарии завершения работы системы; однако некоторые события (например, сбой оборудования) могут помешать запуску этих сценариев завершения работы системы.

Для сохранения данных из хранилища экземпляров решением было бы регулярное резервное копирование данных: https://aws.amazon.com/premiumsupport/knowledge-center/accidental-termination/

Комментарии:

1. Спасибо за информацию до сих пор. Мне непонятно, где я могу найти информацию о том, как писать сценарии пользовательских данных для копирования на/с тома EBS в/из локального хранилища?

2. Сценарии пользовательских данных добавляются в экземпляр EC2 при его создании. Я поместил скриншот в свой ответ. Чтобы скопировать в хранилище экземпляров, мы должны убедиться, что он смонтирован: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… Вы можете установить его везде, где захотите, а затем просто cp из одного места в другое.