Назад | Перейти на главную страницу

EC2 Присоединить хранилище экземпляров при запуске

Я обедаю на экземпляре для размещения узла Cassandra и тестирую несколько сценариев выключения и запуска. Экземпляр был запущен с помощью DataTax PV AMI ami-8932ccfe. Я добавил 8 ГБ хранилища SSD EBS для root и запустил его. При первом запуске Instance Store (временный диск) был подключен, и все было в порядке. Я остановил экземпляр и запустил его снова, и хранилище экземпляров исчезло, и при входе в систему появилось следующее сообщение об ошибке:

ERROR mount -a:

Затем я завершил работу экземпляра, перезапустил тот же AMI и настройку, затем сделал снимок AMI и добавил туда хранилище экземпляров, пытаясь «запечь» его в экземпляре. Однако при остановке и запуске у меня такая же проблема.

Моя проблема в том, что у меня есть разрешение только на остановку и запуск экземпляров, я не могу создавать их сам, поэтому мне приходится беспокоить колледж, чтобы помочь мне запустить их. Я хочу иметь возможность останавливать экземпляр в конце дня и запускать его снова утром, то есть в рабочее время, чтобы сократить любые расходы. Рассматриваемый сервер является всего лишь экземпляром разработки, поэтому я не беспокоюсь о потере данных, все, что мне нужно запустить при запуске, - это несколько сценариев для создания таблиц. Однако, поскольку хранилище экземпляров не подключается автоматически при запуске, Cassandra не устанавливается.

Может ли кто-нибудь сказать мне, как создать экземпляр, чтобы хранилище экземпляров автоматически подключалось после остановки и запуска?

После запуска экземпляра я использовал следующее, чтобы получить некоторые метаданные, если это помогает:

curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
root

curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
sdb

Ура, Алексей Синий.

Тома хранилища экземпляров удаляются каждый раз при остановке экземпляра. Я не уверен, какой протокол распределения данных запущен, но правильный способ сделать это - создать сценарий инициализации, который:

  1. проверьте, установлен ли он
  2. если нет, получите информацию о диске ephemeral0 из метаданных
  3. если нет, отформатируйте том и смонтируйте его

Если вы не хотите создавать скрипт инициализации для этого, вы можете вставить несколько строк в /etc/rc.local сделать то же самое. Что-то вроде:

mount | awk '{print $3}' | grep -sq /mnt
test $? && exit 0
curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ | grep -sq ephemeral0
test $? && DEV=`curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0`
test -n "$DEV" && mkfs -t ext4 /dev/$DEV
test $? && mount /dev/$DEV /mnt

Этот скрипт находится в постоянном движении и не может отклоняться из-за каких-либо ошибок. Возможно, вы захотите написать более надежный.

Скрипт @ dialtOne привел меня к новому исследованию, и я нашел это сценарий на гитхабе.

По сути, мой экземпляр использует другое соглашение о схеме устройства. xvdb

Одна вещь, которую мне пришлось изменить в этом скрипте, - это строка 62:

mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=$ephemeral_count $drives

Тоже следующее:

mdadm --create --verbose /dev/md0 --level=0 -c256 --force --raid-devices=$ephemeral_count $drives

Если у вашего экземпляра есть один эфемерный привод, такой как у меня, вам нужно использовать --force чтобы получить команду для запуска.

После завершения сценария мне было очень приятно увидеть это:

df -h
...
/dev/md0  30G  173M  28G  1%  /mnt

Еще раз спасибо за ответ @dialtOne.

Ура, Алексей Синий