관리 메뉴

Cloud Is My Life

[26WKRD2] EC2에서 EFS 사용하는 법을 알아봅시다. 본문

카테고리 없음

[26WKRD2] EC2에서 EFS 사용하는 법을 알아봅시다.

CloudBackend 2026. 4. 2. 10:27

Image by Amazon Web Services

 

개요

여러 EC2 인스턴스에서 하나의 스토리지를 공유하려면 어떻게 해야 할까요? EC2에는 기본적으로 Elastic Block Storage(EBS)가 붙지만, 이는 하나의 인스턴스에만 붙을 수 있고, 하나의 AZ에 종속된다는 단점이 있습니다.

이를 해결하기 위해 Amazon Elastic File System(EFS)을 사용할 수 있습니다. EFS는 페타바이트 수준의 용량까지 사용할 수 있는 스토리지 서비스로, Regional(or AZ 종속 선택)하고, 여러 인스턴스에 붙을 수 있다는 장점이 있습니다.

오늘은 EFS를 어떻게 EC2에서 사용하는지 알아보도록 하겠습니다.

1. VPC 및 환경 셋업

먼저, VPC를 셋업해줍니다. 필자는 아래와 같이 구성하였습니다.

 

이후, 보안 그룹을 구성해줍니다. 보안 그룹은 아래와 같이 구성하는 것을 권장합니다.

EC2 SG; Allow ingress from 0.0.0.0/0 to port 22, Allow outbound to 0.0.0.0/0 from any.

EFS SG; Allow ingress from EC2 SG to port 2049(nfs port), Allow outbound to 10.0.0.0/16(vpc cidr) from any.

2. EFS 프로비저닝

2-1. Provision EFS

EFS를 생성해봅시다. 아래와 같이 이름을 설정하고, 옵션 값을 입맛에 맞게 설정합니다. 필자는 Regional EFS로 설정하였고, 수명 주기를 추가적으로 설정하였습니다.

 

이후, 성능도 설정할 수 있는데, 필자는 기본값을 사용하였습니다.

 

이후, 네트워크 설정을 진행하여야 합니다. 방금 만든 efs-vpc를 선택하고, 서브넷은 Private 서브넷을 선택합니다. 

보안 그룹은 default에서 아까 만든 efs-sg로 변경합니다.

 

이후, 파일 시스템 정책을 설정할 수 있습니다.

이 부분은 참고 문서의 1번 글을 참고하여 설정하시기 바랍니다.

 

쭉 진행하여 EFS를 생성합니다.

2-2. Provision EFS Access Point

이제, EFS에 연결하기 위한 EFS Access Point를 생성해봅시다.

방금 생성한 EFS를 선택하고, 이름과 AP에 대한 디렉토리를 지정합니다.

 

이후, 필요에 따라 POSIX 사용자와 루트 디렉토리 생성 권한을 

 

그 후, 생성합니다.

잘 생성되었습니다. Yarr~

3. EC2에서 EFS에 연결하기

이제, EFS를 마운트하기 위한 EC2 인스턴스를 생성해봅시다.

EC2가 정상적으로 EFS를 사용하기 위해 아래 권한을 부여한 Role을 생성합니다. 만약, 2-1에서 커스텀 정책을 사용한 경우, 참고 문서 1번에 유의합니다.

 

.pem 타입의 Keypair를 선택하고, 인스턴스 2대를 생성합니다. 아래 설정 값을 참고하기기 바랍니다.

 

우측의 요약 -> 인스턴스 개수를 2로 설정하고, 생성합니다.

필자는 인스턴스 구분을 위해 Name tag에 postfix로 -1, -2를 붙여주었습니다.

 

두 인스턴스에 각각 접속하여, 아래와 같은 명령어를 실행하여 EFS를 연결하기 위한 유틸리티를 설치합니다.

# Amazon Linux 2 / 2023
sudo yum install -y amazon-efs-utils

# Ubuntu / Debian
sudo apt-get update && sudo apt-get install -y git binutils stunnel4
git clone https://github.com/aws/efs-utils && cd efs-utils
./build-deb.sh && sudo apt-get install -y ./build/amazon-efs-utils*deb

 

이후, EFS를 마운트 해보겠습니다.

아래 명령어들을 적절히 사용하여 EFS를 마운트합니다.

# EFS 마운트 디렉토리 생성
sudo mkdir -p /mnt/efs # 여러분들의 입맛에 맞게 /efs 부분을 수정할 수 있습니다.

# 기본 마운트
sudo mount -t efs fs-XXXXX:/ /mnt/efs

# TLS 암호화 마운트
sudo mount -t efs -o tls fs-XXXXX:/ /mnt/efs

# TLS + Access Point
sudo mount -t efs -o tls,accesspoint=fsap-XXXXX fs-XXXXX:/ /mnt/efs

# TLS + IAM 인증
sudo mount -t efs -o tls,iam fs-XXXXX:/ /mnt/efs

# TLS + IAM + Access Point
sudo mount -t efs -o tls,iam,accesspoint=fsap-XXXXX fs-XXXXX:/ /mnt/efs

# 서브디렉토리 마운트
sudo mount -t efs -o tls fs-XXXXX:/<subdir> /mnt/efs

# NFS4 폴백 (efs-utils 없을 때)
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport \
  fs-XXXXX.efs.ap-northeast-2.amazonaws.com:/ /mnt/efs

 

만약, 마운트를 해제하고 싶다면 아래 명령어를 사용할 수 있습니다.

# Unmount
sudo umount /mnt/efs

# FS가 Busy 상태일 때
sudo umount -l /mnt/efs

 

Instance 1에서 hi라는 텍스트 파일에 hello를 작성해두었습니다. 

 

이제 Instance 2에서 제대로 보이는지 확인해봅시다.

 

매우 잘 보입니다.

 

이제, 재부팅 시에도 자동으로 연결되도록 설정해보겠습니다.

이를 위해서는 /etc/fstab을 수정하여야 합니다. 이 부분은 잘못 입력하면 부팅 시 hang이 발생하며 EC2가 죽어버릴 수 있으니 각별히 주의하도록 합시다.

아래 예제를 참고하여 fstab을 설정합시다.

# TLS 마운트
fs-XXXXX:/ /mnt/efs efs _netdev,tls 0 0

# TLS + Access Point
fs-XXXXX:/ /mnt/efs efs _netdev,tls,accesspoint=fsap-XXXXX 0 0

# TLS + IAM
fs-XXXXX:/ /mnt/efs efs _netdev,tls,iam 0 0

# TLS + IAM + Access Point
fs-XXXXX:/ /mnt/efs efs _netdev,tls,iam,accesspoint=fsap-XXXXX 0 0

# NFS4 폴백
fs-XXXXX.efs.ap-northeast-2.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0
⚠️ _netdev 옵션 필수! 네트워크 초기화 후 마운트하도록 보장하는 옵션. 없으면 부팅 실패할 수도 있음.

 

 

fstab을 설정한 후, 아래 명령어를 통해 테스트 및 적용을 진행합니다.

sudo mount -fav # fstab 문법 검증 (실제 마운트 X)
sudo mount -av # fstab 기반 전체 마운트

마치며

이번 글에서는 EFS를 생성하고 Access Point를 구성한 뒤, 두 대의 EC2 인스턴스에서 동일한 파일 시스템을 마운트해 데이터를 공유하는 방법까지 차례대로 살펴보았습니다. EBS와 달리 EFS는 여러 인스턴스에서 동시에 사용할 수 있고, 관리 부담 없이 유연하게 확장할 수 있어 공유 스토리지가 필요한 환경에서 특히 유용합니다.

 

실습에서는 간단한 파일 생성과 조회만 확인했지만, 실제 운영 환경에서는 IAM 인증, Access Point, 파일 시스템 정책, 그리고 보안 그룹 설정까지 함께 고려하는 것이 중요합니다. EC2 간 데이터 공유가 필요한 상황이라면, EFS는 가장 먼저 검토해볼 수 있는 실용적인 선택지입니다.

참고 문서

[1] EFS 파일 시스템 설계하기 - <링크 삽입 필요>

[2] [AWS] Linux 서버에 Amazon EFS 액세스 포인트를 마운트하는 방법 -https://support.bespinglobal.com/ko/support/solutions/articles/73000544794--aws-linux-%EC%84%9C%EB%B2%84%EC%97%90-amazon-efs-%EC%95%A1%EC%84%B8%EC%8A%A4-%ED%8F%AC%EC%9D%B8%ED%8A%B8%EB%A5%BC-%EB%A7%88%EC%9A%B4%ED%8A%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

[3] 왜 나의 EFS는 ReadOnly인가 - https://repost.aws/knowledge-center/efs-enable-read-write-access