0Pricing
Cloud & IT Cert Prep · 강의

EFS: Linux용 공유 파일 스토리지

여러 EC2 인스턴스와 Lambda 함수에서 EFS 파일 시스템을 탑재하고, 성능 및 처리량 모드를 구성하며, 보안 그룹으로 액세스를 제어합니다.

EFS: Linux용 공유 파일 스토리지은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

Amazon EFS란 무엇인가요?

Amazon Elastic File System (EFS)은 수천 개의 EC2 인스턴스, Lambda 함수 및 ECS/EKS 컨테이너가 동시에 탑재할 수 있는 완전 관리형의 탄력적인 공유 POSIX 파일 시스템입니다. 단일 인스턴스에 연결되는 EBS와 달리 EFS는 연결된 모든 클라이언트가 동일한 파일을 실시간으로 확인할 수 있는 공유 파일 시스템을 제공합니다. 용량은 자동으로 증가하고 감소하므로 스토리지를 미리 프로비저닝할 필요가 없습니다. EFS는 콘텐츠 관리, 공유 코드 저장소, 홈 디렉터리 및 데이터 분석에 적합합니다.

EFS 스토리지 클래스

EFS는 두 가지 스토리지 클래스를 제공합니다. EFS Standard는 다중 AZ, 최고 가용성 및 1밀리초 미만의 지연 시간을 제공하고, EFS One Zone은 단일 AZ에서 47% 낮은 비용으로 제공되지만 복원력은 약간 낮습니다. 각 계층에는 정기적으로 액세스하지 않는 파일을 위한 변형도 있으며, Standard보다 92% 낮은 비용으로 데이터를 저장합니다. S3와 다른 점은 EFS가 애플리케이션에서 탑재할 수 있는 완전한 POSIX 파일 시스템이라는 것입니다. EFS는 객체 스토어가 아닙니다.

# 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에는 두 가지 성능 모드가 있습니다. 범용(기본값이며 대부분의 워크로드에 권장 — 지연 시간이 가장 짧고 웹 서비스, 콘텐츠 관리, 홈 디렉터리에 적합)과 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(처리량이 스토리지 크기에 따라 조정되고 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}'

Mount 대상 및 보안 그룹

EC2 인스턴스에서 EFS 파일 시스템에 액세스하려면 인스턴스가 실행되는 각 서브넷(AZ)에 Mount 대상을 생성합니다. EFS Standard에서는 VPC의 각 AZ에 Mount 대상을 생성해야 합니다. EC2 인스턴스는 지연 시간을 최소화하기 위해 자신의 AZ에 있는 Mount 대상에 연결합니다. Mount 대상에는 인스턴스의 보안 그룹에서 들어오는 NFS 트래픽(포트 2049 TCP)을 허용해야 하는 보안 그룹이 연결됩니다. 이 인바운드 규칙이 없으면 Mount 작업이 시간 초과됩니다.

# 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

EC2 Linux에 EFS Mount

EC2에 EFS를 Mount하는 권장 방법은 Amazon EFS Mount Helper(amazon-efs-utils 패키지)를 사용하는 것입니다. 이 도구는 전송 중 TLS 암호화와 자동 재연결을 지원합니다. IP 주소 대신 파일 시스템 ID를 사용해 Mount하면 DNS가 가장 가까운 AZ의 Mount 대상으로 자동 확인됩니다. 재부팅 후에도 유지되는 영구 Mount를 구성하려면 _netdev 옵션을 사용하여 /etc/fstab에 Mount 항목을 추가하십시오. 그러면 Mount 전에 네트워크를 사용할 수 있는지 확인합니다.

# 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 Access Points

EFS Access Points는 Access Point를 사용하는 모든 연결에 특정 POSIX 사용자, 그룹 및 루트 디렉터리를 적용하는 애플리케이션별 EFS 파일 시스템 진입점입니다. 이를 통해 동일한 파일 시스템을 사용하는 여러 애플리케이션을 서로 격리할 수 있습니다. Application A는 Access Point A를 통해 Mount하여 /data/app-a/만 볼 수 있고, Access Point B를 사용하는 Application B는 /data/app-b/만 볼 수 있습니다. Access Points는 Lambda 함수, ECS 작업 및 EKS pod에 공유 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 Intelligent-Tiering은 액세스 패턴에 따라 파일을 Standard와 Standard-IA(자주 사용하지 않는 액세스) 스토리지 클래스 사이에서 자동으로 이동합니다. 예를 들어 30일 동안 액세스하지 않은 파일을 IA로 이동하도록 수명 주기 정책을 구성할 수 있습니다. IA의 파일에 다시 액세스하면 해당 파일은 자동으로 Standard로 이동합니다. IA에서 파일을 가져올 때는 GB당 가져오기 요금이 부과되지만 스토리지 비용은 훨씬 저렴합니다. 이는 S3 Intelligent-Tiering과 유사하며 파일 배치를 수동으로 관리할 필요가 없습니다.

# 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

Lambda 및 컨테이너와 함께 사용하는 EFS

Lambda 함수는 EFS 파일 시스템을 Mount하여 대용량 모델 파일, 영구 데이터 또는 구성을 호출 간에 공유할 수 있습니다. 이를 통해 512MB~10GB인 /tmp 제한을 극복할 수 있습니다. ECS 및 EKS 작업은 EFS CSI 드라이버를 사용하여 영구 볼륨 클레임을 통해 EFS를 Mount합니다. Lambda 함수 또는 컨테이너는 Mount 대상이 있는 VPC에 있어야 하며, EFS 보안 그룹은 Lambda 또는 컨테이너 VPC 보안 그룹에서 들어오는 NFS를 허용해야 합니다. 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 인스턴스에 동시에 Mount할 수 있고, 용량이 탄력적이며 Linux만 지원(NFS)하고 Lambda와 컨테이너에서 액세스할 수 있지만 GB당 비용이 더 높습니다. EBS: 블록 디바이스이며 하나의 EC2 인스턴스에 연결됩니다(io1/io2 Multi-Attach 제외). 프로비저닝한 크기가 고정되고 Linux와 Windows를 모두 지원하지만 Lambda에서 기본적으로 액세스할 수 없으며 GB당 비용이 더 낮습니다. 시나리오에 '여러 인스턴스가 동일한 파일을 공유해야 한다'고 나와 있다면 답은 EFS입니다.

EFS 암호화

EFS는 저장 데이터 암호화(KMS Key를 사용하여 파일 시스템 생성 시 Enable — 생성 후에는 변경할 수 없음)와 전송 중 암호화(tls 옵션과 함께 EFS Mount Helper를 사용할 때의 TLS 암호화)를 지원합니다. AWS는 두 가지를 모두 Enable할 것을 권장합니다. elasticfilesystem:ClientRootAccess 및 elasticfilesystem:ClientWrite Condition을 요구하여 TLS 없이 Mount하는 것을 Deny하는 EFS 리소스 기반 policy를 사용하면 전송 중 암호화를 강제할 수 있습니다.

# 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

빠른 확인

이 lesson에서 다룬 AWS Solutions Architect(SAA-C03) 개념에 대한 이해도를 확인해 보십시오.

lesson 요약

이 lesson에서는 다음을 배웠습니다. EFS는 공유 POSIX 파일 시스템으로, 탄력적인 용량을 사용하여 수천 개의 인스턴스와 Lambda 함수에 동시에 Mount할 수 있습니다. Access Points는 POSIX 사용자와 루트 디렉터리를 강제하여 애플리케이션별 격리를 제공합니다. 또한 Intelligent-Tiering은 자주 액세스하지 않는 파일을 비용이 더 낮은 IA 스토리지 클래스로 자동 이동합니다. 다음으로는 FSx for Windows File Server와 특수 워크로드를 위한 Lustre를 살펴보겠습니다.

자주 묻는 질문

“EFS: Linux용 공유 파일 스토리지” 강의는 무료인가요?

네 — “EFS: Linux용 공유 파일 스토리지” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“EFS: Linux용 공유 파일 스토리지”에서 뭘 배우나요?

여러 EC2 인스턴스와 Lambda 함수에서 EFS 파일 시스템을 탑재하고, 성능 및 처리량 모드를 구성하며, 보안 그룹으로 액세스를 제어합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“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(으)로 돌아가기