AWS EFS 자세히보기

hwup·2026년 3월 16일

AWS

목록 보기
3/4

Network File System(NFS)?

NFS는 네트워크에 파일을 저장하는 메커니즘이다.
분산 파일 시스템을 통해 사용자는 원격 컴퓨터에 있는 파일 및 디렉토리에 액세스할 수 있고 해당 파일 및 디렉토리가 로컬에 있는 것처럼 처리할 수 있다.

흔히 NAS(Network-Attached Storage)와 NFS를 많이 비교하는데, NAS로 접근할 때 쓰는 프로토콜 중 하나가 NFS이다. 보통 Linux/Unix 환경에서는 NFS를 가장 많이 쓰고, 윈도우 환경에서는 SMB/CIFS를 많이 쓴다고 한다.

NFS와 로컬 파일 시스템은 사용자의 입장에서는 차이가 없어 보이지만, local caching이 다르다. NFS를 사용하면 클라이언트가 디렉토리 목록, 파일 이름, 데이터(실제 파일 내용)와 같은 메타데이터를 캐시할 수 있다.

파일에 쓸 때 데이터는 먼저 로컬 컴퓨터에 캐시된 후 나중에 서버에 기록된다. 이건 성능을 위한 선택이지만 반대로 캐시로 인한 데이터 불일치 문제가 발생할 수 있다. 즉, 두 사용자가 같은 파일에 접근할 경우 위 그림과 같은 상황이 발생할 수 있다는 뜻이다.

이를 해결하기 위해 NFS는 엄격한 POSIX consistency 대신 “약한 일관성 모델(Weak Consistency)”을 사용하며, 대표적인 방식은 close-to-open consistency와 unlock-to-lock consistency가 있다.

Close-to-Open Consistency

한 클라이언트가 파일을 close 한 이후에 다른 클라이언트가 해당 파일을 open 하면 최신 데이터를 읽을 수 있도록 보장하는 방식

  • close 시점에 서버로 데이터 flush
  • open 시점에 최신 데이터 보장

=> 따라서 파일이 열려있는 동안에는 최신 내용을 볼 수 없다

unlock-to-lock

파일 잠금(file lock)을 기준으로 데이터 일관성을 보장하는 방식

  • 한 클라이언트가 lock 상태에서 파일을 수정
  • unlock 할 때 서버로 데이터를 flush
  • 다른 클라이언트가 lock을 획득할 때 최신 데이터를 보장
항목Close-to-OpenUnlock-to-Lock
기준파일 open/close파일 lock/unlock
flush 시점closeunlock
최신 데이터 보장 시점openlock
사용 목적일반 파일 접근동시 접근 제어
일관성 수준약한 consistencylock 기반 consistency

NFS 구조

EFS(Elastic File Service)

Amazon Elastic File System(Amazon EFS)

  • 서비스 중단 없이 수요에 따라 페타바이트 단위로 확장할 수 있도록 설계됨
  • 파일을 추가하거나 제거할 때 자동으로 확장 및 축소
  • NFS(Network File System) 4(NFSv4.1 및 NFSv4.0) 프로토콜을 지원

연결 방식

EC2  →  NFS mount  →  EFS Mount Target  →  EFS Storage

각 AZ마다 NFS endpoint가 존재하고, EC2는 같은 AZ의 mount target으로 접속한다.

Lifecycle Policy

EFS도 S3와 마찬가지로 Lifecycle 정책이 있다.

  • Standard
  • Infrequent Access (IA)
  • Archive

파일의 접근 빈도에 따라 정책을 다르게 지정하여 비용을 절감할 수 있다.

EFS Access Points

EFS Access Point는 여러 컨테이너, 애플리케이션, 또는 사용자 그룹이 동일한 파일 시스템을 공유하더라도, 각기 다른 논리적 접근 경로와 권한을 가질 수 있도록 만든다. 이를 통해 중앙 파일 시스템 관리의 복잡성을 줄이고, 멀티테넌트 애플리케이션 구조에서 데이터 접근을 안전하게 분리한다.

Access Point는 EFS 내 특정 디렉터리 경로를 루트로 지정하고, 해당 진입점에 연결되는 클라이언트에게 기본 사용자 ID(UID) 및 그룹 ID(GID)를 적용한다. 마운트 시 애플리케이션은 Access Point ID를 지정하여 파일 시스템을 탑재하며, 이를 통해 애플리케이션은 지정된 보안 컨텍스트로만 접근할 수 있다.

사용 예제

  • 컨테이너 오케스트레이션: Amazon Elastic Kubernetes Service 또는 Amazon Elastic Container Service 환경에서 워크로드별 격리
  • 멀티사용자 애플리케이션: 사용자 계정별로 파일 디렉터리를 분리하여 접근 제어
  • 자동화된 배포 파이프라인: 인프라 코드(IaC)로 접근 정책을 선언적으로 관리

출처:

profile
Level up!

0개의 댓글