Ответ
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 — это выбор между производительностью для одной машины и общей доступностью для многих.