0Pricing
Cloud & IT Cert Prep · Урок

EFS: общее файловое хранилище для Linux

Подключайте файловую систему EFS к нескольким экземплярам EC2 и функциям Lambda, настраивайте режимы производительности и пропускной способности и управляйте доступом с помощью групп безопасности.

«EFS: общее файловое хранилище для Linux» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Что такое Amazon EFS

Amazon Elastic File System (EFS) — это полностью управляемая эластичная общая файловая система POSIX, которую одновременно могут подключать тысячи инстансов EC2, функций Lambda и контейнеров ECS/EKS. В отличие от EBS (который подключается к одному инстансу), EFS предоставляет общую файловую систему, в которой все подключённые клиенты видят одни и те же файлы в реальном времени. Ёмкость автоматически увеличивается и уменьшается — заранее выделять хранилище не требуется. EFS идеально подходит для управления содержимым, общих репозиториев кода, домашних каталогов и аналитики данных.

Классы хранения EFS

EFS предлагает два класса хранения: EFS Standard (несколько AZ, максимальная доступность, задержка менее миллисекунды) и EFS One Zone (одна AZ, стоимость на 47% ниже, немного меньшая устойчивость). В каждом классе также есть вариант Infrequent Access (IA), в котором данные хранятся на 92% дешевле, чем в Standard, если к файлам обращаются нерегулярно. Отличие от S3 заключается в том, что EFS — это полноценная файловая система POSIX, которую могут подключать приложения, а не объектное хранилище.

# Create an EFS file system in Standard storage class
aws efs create-file-system \
  --performance-mode generalPurpose \
  --throughput-mode elastic \
  --encrypted \
  --tags Key=Name,Value=SharedFileSystem

# One Zone (cheaper, single-AZ):
aws efs create-file-system \
  --performance-mode generalPurpose \
  --throughput-mode elastic \
  --encrypted \
  --availability-zone-name us-east-1a \
  --tags Key=Name,Value=SharedFileSystemOneZone

Режимы производительности EFS

У EFS есть два режима производительности: General Purpose (по умолчанию, рекомендуется для большинства рабочих нагрузок — минимальная задержка, идеально подходит для веб-серверов, систем управления содержимым и домашних каталогов) и Max I/O (предназначен для высокопараллельных рабочих нагрузок с тысячами одновременных подключений, но с несколько большей задержкой; идеально подходит для обработки больших данных и мультимедиа). Режим производительности задаётся при создании и не может быть изменён после создания файловой системы. На экзамене SAA-C03 выбирайте Max I/O только в том случае, если Вам явно нужны тысячи параллельных подключений.

# Create EFS with Max I/O for highly parallel workloads
aws efs create-file-system \
  --performance-mode maxIO \
  --throughput-mode provisioned \
  --provisioned-throughput-in-mibps 1024 \
  --encrypted

# Note: Max I/O mode is NOT compatible with Elastic throughput mode
# It must use Provisioned or Bursting throughput

Режимы пропускной способности EFS

EFS поддерживает три режима пропускной способности: Elastic (автоматически увеличивает и уменьшает пропускную способность в зависимости от рабочей нагрузки — рекомендуется для большинства сценариев использования, оплата взимается за каждый переданный GB), Bursting (пропускная способность масштабируется вместе с размером хранилища, а кредиты burst накапливаются и расходуются, как у серий EC2 T — базовая пропускная способность предоставляется бесплатно) и Provisioned (Вы задаёте фиксированную пропускную способность независимо от размера хранилища — полезно, когда нужна стабильная пропускная способность, превышающая возможности Bursting). Режим Elastic является современным режимом по умолчанию и устраняет необходимость заранее планировать пропускную способность.

# Migrate an existing EFS from Bursting to Elastic throughput
aws efs update-file-system \
  --file-system-id fs-0abc1234def567890 \
  --throughput-mode elastic

# Check current throughput mode and performance mode
aws efs describe-file-systems \
  --file-system-id fs-0abc1234def567890 \
  --query 'FileSystems[].{ThroughputMode:ThroughputMode,PerfMode:PerformanceMode,SizeBytes:SizeInBytes.Value}'

Точки подключения и группы безопасности

Чтобы получить доступ к файловой системе EFS из экземпляра EC2, создайте точку подключения в каждой подсети (AZ), где работают Ваши экземпляры. Для EFS Standard следует создать точку подключения в каждой AZ в Вашем VPC — экземпляры EC2 подключаются к точке подключения в своей AZ, чтобы обеспечить минимальную задержку. Точки подключения используют группы безопасности, которые должны разрешать трафик NFS (порт 2049 TCP) от группы безопасности экземпляра. Без этого правила для входящего трафика операции подключения завершатся по тайм-ауту.

# Create a mount target in each AZ
aws efs create-mount-target \
  --file-system-id fs-0abc1234def567890 \
  --subnet-id subnet-aaa111 \
  --security-groups sg-efsnfs

aws efs create-mount-target \
  --file-system-id fs-0abc1234def567890 \
  --subnet-id subnet-bbb222 \
  --security-groups sg-efsnfs

# The EFS security group needs: Inbound TCP 2049 from instance SG

Подключение EFS в EC2 Linux

Рекомендуемый способ подключения EFS в EC2 — использование вспомогательной программы монтирования Amazon EFS (пакет amazon-efs-utils), которая поддерживает шифрование TLS при передаче данных и автоматическое переподключение. Подключайте файловую систему, используя её идентификатор, а не IP-адрес, чтобы DNS автоматически разрешал имя в ближайшую точку подключения AZ. Для постоянных подключений, сохраняющихся после перезагрузки, добавьте запись о подключении в /etc/fstab, используя параметр _netdev, чтобы перед подключением была доступна сеть.

# Install the EFS mount helper
sudo yum install -y amazon-efs-utils

# Mount with TLS encryption in transit
sudo mkdir /mnt/efs
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs

# Persistent mount in /etc/fstab
# fs-0abc1234def567890:/ /mnt/efs efs defaults,_netdev,tls 0 0

# Verify mount
df -h /mnt/efs

Точки доступа EFS

EFS Access Points — это предназначенные для приложений точки входа в файловую систему EFS, которые задают конкретного пользователя POSIX, группу и корневой каталог для всех подключений через эту точку доступа. Это позволяет изолировать приложения, использующие одну файловую систему: приложение A подключается через Access Point A и видит только /data/app-a/, а приложение B, использующее Access Point B, видит только /data/app-b/. Access Points — рекомендуемый способ предоставить функциям Lambda, задачам ECS и модулям EKS изолированный доступ к общим файловым системам EFS.

# Create an EFS Access Point for an application
aws efs create-access-point \
  --file-system-id fs-0abc1234def567890 \
  --posix-user Uid=1001,Gid=1001 \
  --root-directory Path=/data/app-a,CreationInfo={OwnerUid=1001,OwnerGid=1001,Permissions=755} \
  --tags Key=App,Value=app-a

# Mount using the access point
sudo mount -t efs \
  -o tls,accesspoint=fsap-0abc1234def567890 \
  fs-0abc1234def567890:/ /mnt/app-a

Интеллектуальное распределение EFS и жизненный цикл

Intelligent-Tiering EFS автоматически перемещает файлы между классами хранения Standard и Standard-IA (Infrequent Access) в зависимости от характера доступа. Вы настраиваете политику жизненного цикла — например, перемещать файлы в IA после 30 дней без доступа. Когда к файлу в IA обращаются снова, он автоматически перемещается обратно в Standard. За извлечение из IA взимается плата за каждый GB, но хранение обходится значительно дешевле. Это похоже на Intelligent-Tiering в S3 и избавляет от необходимости вручную управлять размещением файлов.

# Enable lifecycle management (move to IA after 14 days)
aws efs put-lifecycle-configuration \
  --file-system-id fs-0abc1234def567890 \
  --lifecycle-policies '[
    {"TransitionToIA": "AFTER_14_DAYS"},
    {"TransitionToPrimaryStorageClass": "AFTER_1_ACCESS"}
  ]'

# Check current lifecycle configuration
aws efs describe-lifecycle-configuration \
  --file-system-id fs-0abc1234def567890

EFS с Lambda и контейнерами

Функции Lambda могут подключать файловые системы EFS, чтобы совместно использовать большие файлы моделей, постоянные данные или конфигурацию между вызовами, устраняя ограничение /tmp размером от 512 MB до 10 GB. Задачи ECS и EKS подключают EFS через заявки на постоянные тома с использованием драйвера EFS CSI. Функция Lambda или контейнер должны находиться в VPC, в котором есть точка подключения, а группа безопасности EFS должна разрешать входящий трафик NFS от группы безопасности VPC Lambda или контейнера. Связка EFS + Lambda — распространённый шаблон для совместного использования обученных ML-моделей между экземплярами функций.

# Lambda function with EFS mount (CloudFormation excerpt)
# Resources:
#   MyFunction:
#     Type: AWS::Lambda::Function
#     Properties:
#       VpcConfig:
#         SubnetIds: [subnet-aaa]
#         SecurityGroupIds: [sg-lambda]
#       FileSystemConfigs:
#         - Arn: arn:aws:elasticfilesystem:us-east-1:111122223333:access-point/fsap-0abc
#           LocalMountPath: /mnt/models

# In function code:
# import os
# model_path = '/mnt/models/my-model.pkl'
# with open(model_path, 'rb') as f:
#     model = pickle.load(f)

EFS и EBS: ключевые различия для экзамена

На экзамене SAA-C03 часто требуется выбрать между EFS и EBS. EFS: общая файловая система POSIX, одновременно подключается к нескольким экземплярам EC2, эластичная ёмкость, только Linux (NFS), доступна из Lambda и контейнеров, более высокая стоимость за GB. EBS: блочное устройство, подключается к одному экземпляру EC2 (за исключением io1/io2 Multi-Attach), фиксированный выделенный размер, поддерживает Linux и Windows, недоступна из Lambda без дополнительной настройки, более низкая стоимость за GB. Если в условии сказано, что «несколько экземпляров должны совместно использовать одни и те же файлы», ответ — EFS.

Шифрование EFS

EFS поддерживает шифрование при хранении (включается при создании файловой системы с использованием ключа KMS — после создания изменить его нельзя) и шифрование при передаче (шифрование TLS при использовании вспомогательной программы монтирования EFS с параметром tls). AWS рекомендует включать оба вида шифрования. Вы можете принудительно включить шифрование при передаче с помощью политики на основе ресурсов EFS, которая запрещает подключение без TLS, требуя выполнения условий elasticfilesystem:ClientRootAccess и elasticfilesystem:ClientWrite.

# Create an EFS file system with encryption at rest
aws efs create-file-system \
  --encrypted \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Mount with TLS to encrypt in transit
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs

# Deny unencrypted mounts via EFS resource policy (condition)
# Condition: elasticfilesystem:AccessedViaMountTarget = true
# and aws:SecureTransport = true

Быстрая проверка

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что EFS — это общая файловая система POSIX, которую можно одновременно подключать к тысячам экземпляров и функций Lambda с эластичной ёмкостью; Access Points обеспечивают изоляцию приложений друг от друга с принудительно заданными пользователем POSIX и корневым каталогом; а Intelligent-Tiering автоматически перемещает редко используемые файлы в более дешёвый класс хранения IA. Далее мы рассмотрим FSx for Windows File Server и Lustre для специализированных рабочих нагрузок.

Часто задаваемые вопросы

Урок «EFS: общее файловое хранилище для Linux» бесплатный?

Да — полный текст урока «EFS: общее файловое хранилище для Linux» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «EFS: общее файловое хранилище для Linux»?

Подключайте файловую систему EFS к нескольким экземплярам EC2 и функциям Lambda, настраивайте режимы производительности и пропускной способности и управляйте доступом с помощью групп безопасности. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «EFS: общее файловое хранилище для Linux»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Типы томов EBS: gp3, io2, st1, sc1
  2. Снимки EBS, шифрование и RAID
  3. EFS: общее файловое хранилище для Linux
  4. FSx: файловый сервер Windows и Lustre
← Назад к Cloud & IT Cert Prep