В чем разница между EBS и EFS в AWS?

«В чем разница между EBS и EFS в AWS?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

EBS (Elastic Block Store) и EFS (Elastic File System) — это два основных сервиса хранения данных для инстансов EC2 в AWS, но с принципиально разными моделями доступа и использования.

EBS (Блочное хранилище):

  • Модель: Предоставляет сырой блочный том, который подключается к одной EC2-машине в одной Availability Zone (AZ), как физический диск.
  • Доступ: Только для одной инстанс-EC2 одновременно (за исключением специальных multi-attach томов).
  • Производительность: Низкая задержка, высокая пропускная способность и IOPS (можно настраивать).
  • Типичный use-case в DevOps: Системные диски для ОС, диски для баз данных (PostgreSQL, MySQL), хранилища для приложений, требующих высокой скорости дисковых операций.
  • Аналогия: Это SSD или HDD, вставленный в ваш сервер.

EFS (Файловое хранилище):

  • Модель: Предоставляет сетеую файловую систему (NFSv4), доступную множеству EC2-инстансов из разных AZ в одном регионе.
  • Доступ: Многопользовательский, одновременный доступ с многих инстансов.
  • Производительность: Задержка выше, чем у EBS, пропускная способность и IOPS масштабируются с объемом данных.
  • Типичный use-case в DevOps: Общие хранилища для веб-контента, домашние директории пользователей, общие данные для контейнеров, резервное копирование, хранилище для CI/CD артефактов, доступное из разных воркеров.
  • Аналогия: Это сетевая папка (NAS), доступная всем серверам в сети.

Пример из практики:

  • Для кластера веб-серверов, развернутых в нескольких AZ, мы используем EFS, чтобы смонтировать одну и ту же папку /var/www/html/uploads на всех инстансах. Пользователь, загрузивший файл на один сервер, сразу видит его на других.
  • Для базы данных RDS (которая "под капотом" использует EBS) или для инстанса с высоконагруженным кэшем (например, Redis) мы выбираем EBS (типа gp3 или io2) для максимальной скорости дисковых операций, так как доступ нужен только одному процессу.

Команда для монтирования EFS (в User Data EC2):

sudo yum install -y amazon-efs-utils
sudo mkdir /mnt/efs
sudo mount -t efs -o tls,accesspoint=fsap-12345678 fs-id:/ /mnt/efs

Выбор между EBS и EFS — это выбор между производительностью для одной машины и общей доступностью для многих.