Какой сервис в AWS позволяет создать общую файловую систему для нескольких инстансов EC2?

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

Ответ

Для создания общей файловой системы, доступной для множества инстансов EC2 одновременно, в AWS используется сервис Amazon Elastic File System (EFS). Это полностью управляемый, бессерверный сетевой файловый сервис (NFSv4), который автоматически масштабируется.

Ключевые характеристики и сценарии использования:

  • Общий доступ: Одна файловая система EFS может быть смонтирована на инстансах EC2 в разных Availability Zones (AZ) внутри одного региона, обеспечивая согласованный доступ к данным.
  • Использование с контейнерами: Идеально подходит для Kubernetes (EKS) в качестве PersistentVolume для подов, которым нужен общий доступ к данным (например, для контента веб-сервера или общих конфигураций).
  • Автомасштабирование: Платите только за используемое место. Пропускная способность масштабируется с размером файловой системы.

Практический пример: Монтирование EFS на инстанс EC2 с Amazon Linux 2

  1. Создание EFS (через AWS CLI):

    # Создание файловой системы с политикой жизненного цикла (перемещение в Infrequent Access через 30 дней)
    aws efs create-file-system --performance-mode generalPurpose --throughput-mode bursting 
        --lifecycle-policies "TransitionToIA=AFTER_30_DAYS" --tags Key=Name,Value=MySharedFS
  2. Создание точек монтирования (Mount Targets) в каждой используемой подсети.

  3. Монтирование на инстансе EC2:

    # Установка утилиты для монтирования EFS
    sudo yum install -y amazon-efs-utils
    # Создание директории для монтирования
    sudo mkdir /mnt/efs
    # Монтирование с использованием стандартного TLS-транспорта (рекомендуется)
    sudo mount -t efs -o tls,accesspoint=fsap-12345678 fs-id:/ /mnt/efs
    # Для автоматического монтирования при перезагрузке добавить в /etc/fstab
    echo "fs-id:/ /mnt/efs efs _netdev,tls,accesspoint=fsap-12345678 0 0" | sudo tee -a /etc/fstab

Сравнение с альтернативами в AWS:

Сервис Модель доступа Лучший сценарий использования
EFS Многопользовательский, NFS Общие домашние директории, контент веб-серверов, хранилище для CI/CD (например, общие кэши).
EBS Только один инстанс (если не использовать специальные решения) Базы данных, загрузочные тома, приложения, требующие низкой задержки и высокой IOPS.
FSx for Lustre Высокопроизводительный параллельный доступ (HPC) Модели машинного обучения, финансовое моделирование, обработка медиа.
FSx for Windows File Server Многопользовательский, SMB Нагрузки, ориентированные на Windows (AD, .NET приложения).

Для обеспечения высокой доступности EFS сама по себе развертывается в нескольких AZ. Для повышения производительности можно выбрать режим пропускной способности Provisioned вместо Bursting.