AWSMiddleTechnical

Что произойдёт с instance store при reboot, stop и terminate EC2?

Instance store — быстрое NVMe-хранилище на физическом хосте EC2. Переживает reboot (тот же хост). Теряется при stop/hibernate/terminate или hardware failure. Безопасен только для воспроизводимых данных: кеш, scratch space, реплицированные распределённые БД.

Instance Store: поведение при reboot, stop и terminate

Instance store — локальные физические диски хоста EC2 (NVMe SSD или HDD в зависимости от instance type). Производительность выше EBS (миллионы IOPS для NVMe instance store), но lifecycle привязан к физическому хосту — это ключевое отличие.

Поведение по операциям

  • Reboot: инстанс остаётся на том же физическом хосте. Данные instance store сохраняются. Операционная система перезагружается, но диск не меняется.
  • Stop → Start: инстанс может быть перемещён на другой физический хост (AWS не гарантирует тот же). Данные instance store полностью теряются.
  • Hibernate: аналогично Stop — данные instance store теряются при hibernation/resume.
  • Terminate: инстанс удаляется, данные instance store теряются безвозвратно.
  • Hardware failure: если физический хост или диск выходит из строя, данные теряются без возможности восстановления из instance store.

Instance types с NVMe instance store

i3.xlarge    -> 1× 950 GB NVMe SSD (~3.3M IOPS random 4KB read)
i3en.3xlarge -> 1× 7500 GB NVMe SSD
c5d.large    -> 1× 50 GB NVMe SSD (compute-optimized with local disk)
r5d.xlarge   -> 1× 150 GB NVMe SSD (memory-optimized with local disk)

# Монтирование instance store NVMe (Amazon Linux 2)
lsblk  # найти nvme1n1 (nvme0n1 = EBS root)
mkfs.xfs /dev/nvme1n1
mount /dev/nvme1n1 /mnt/instance-store
echo '/dev/nvme1n1 /mnt/instance-store xfs defaults,nofail 0 2' >> /etc/fstab

Безопасные use cases для instance store

SAFE:
  Build artifact cache (CI/CD runner)    -> потеря = следующий build перепостроит
  Spark/Hadoop shuffle data              -> потеря = задача перезапустится
  Redis cache (если данные воспроизводимы) -> потеря = cache miss, cold start
  Replicated Cassandra/ScyllaDB node     -> потеря = данные реплицированы на другие nodes
  Temporary ML training scratch space    -> потеря = checkpoint с S3

UNSAFE:
  Primary PostgreSQL data directory      -> потеря = production data loss
  Kafka log storage без репликации       -> потеря = сообщения потеряны
  User uploads без sync в S3             -> потеря = файлы исчезли
  Session state без Redis/ElastiCache    -> потеря = все пользователи разлогинены

Паттерн: Cassandra с instance store

# cassandra.yaml — хранение данных на instance store
data_file_directories:
  - /mnt/instance-store/cassandra/data
commitlog_directory: /mnt/instance-store/cassandra/commitlog

# При замене ноды (stop/start) данные стримятся с живых нод:
# nodetool rebuild -- <datacenter>
# Cassandra replication factor >= 3 обязателен для безопасного использования

Подводные камни

  • Воспринимать instance store как «бесплатный EBS»: он не является персистентным хранилищем и не подходит для production данных без репликации на уровне приложения.
  • Записывать uploads, очередь задач или единственную копию БД на instance store: stop/start или terminate превращается в data loss incident без возможности восстановления.
  • Не монтировать instance store в user data скрипте: после reboot точка монтирования сохранится (диск тот же), но после stop/start — нет. Нужна проверка наличия данных в user data / init script.
  • fstab запись без nofail: если instance store NVMe недоступен (stop/start на новом хосте без instance store), система не загрузится.
  • Рассчитывать на instance store для EBS-Only instance types: t3, m5, c5 (без суффикса 'd') не имеют локальных дисков вообще.
  • Игнорировать Amazon Linux 2023 NVMe naming: диски могут появляться как /dev/nvme1n1 или /dev/nvme2n1 в зависимости от порядка инициализации — не хардкодить имя диска, использовать блочное устройство по UUID.

Common mistakes

  • Ожидать сохранения instance store после stop/start.
  • Хранить единственную копию критичных данных на ephemeral disk.
  • Не учитывать host failure как причину потери данных.

What the interviewer is testing

  • Объясняет lifecycle reboot, stop и terminate.
  • Отличает instance store от EBS.
  • Называет безопасные сценарии использования.

Sources

Related topics