EFS 기초 실습: 서버 2대 파일 공유하기
AWS에서 서버를 여러 대 운영하다 보면 공통 파일을 어디에 둘지 바로 막히는 경우가 많습니다. 단일 서버 로컬 디스크로는 장애 대응이 어렵습니다. 이럴 때 EFS 공유 스토리지를 사용합니다. 이번 글에서는 콘솔 설정부터 마운트, fstab, 검증까지 실습 순서대로 정리합니다.
서버 두 대가 같은 파일을 동시에 읽고 써야 하는 순간이 옵니다.
이때 EFS를 사용하면 파일을 중앙에서 공유할 수 있습니다.
EC2 두 대가 같은 EFS를 Access Point 경유로 마운트합니다.
TLS를 적용하고 재부팅 후 자동 마운트까지 확인합니다.
구성 요소는 다음과 같습니다.
| 구성 요소 | 개수 | 상세 정보 |
|---|---|---|
| EC2 | 2대 | Amazon Linux 2023 |
| EFS | 1개 | - |
| Access Point | 1개 | /shared, UID/GID 1000 |
| 보안 그룹 | 2개 | wsi-ec2, wsi-efs |
EFS 마운트 실패 대부분은 보안 그룹 설정에서 발생합니다.
EFS SG 인바운드 2049를 EC2 SG에서만 허용해야 합니다.
먼저 EFS를 생성한 뒤 mount target을 확인합니다.
그리고 아래 규칙을 정확히 적용합니다.
| SG 이름 | 방향 | 프로토콜 | 포트 | 소스 | 설명 |
|---|---|---|---|---|---|
| wsi-efs | Inbound | TCP | 2049 | sg-wsi-ec2 | EFS 마운트 허용 |
| wsi-ec2 | Outbound | - | - | 0.0.0.0/0 | 기본 all 허용 (추가 불필요) |
주의
mount target SG를 일부 AZ만 교체하고 하나는 default로 남겨두면 특정 서버만 마운트 실패합니다. 모든 mount target에 동일한 SG를 적용합니다.
Access Point를 사용하면 루트 디렉터리와 POSIX 사용자 정보를 고정할 수 있습니다.
이렇게 하면 두 서버에서 소유권이 일관되게 유지됩니다.
아래 값을 정확히 입력합니다.
| 항목 | 값 | 설명 |
|---|---|---|
| Root directory path | /shared | 마운트될 실제 경로 |
| POSIX User UID | 1000 | 파일 소유자 UID |
| POSIX User GID | 1000 | 파일 소유자 GID |
| Creation permissions | 755 | 새 파일/폴더 생성 권한 |
⚠️ CreationInfo 누락 시
access denied 오류가 발생합니다. 반드시 UID/GID와 권한을 입력해야 합니다.
각 EC2 인스턴스에서 아래 명령을 순서대로 실행합니다.
# EFS 유틸 설치
sudo dnf -y install amazon-efs-utils
# 마운트 경로 생성
sudo mkdir -p /mnt/shared
# TLS + Access Point 마운트
sudo mount -t efs -o tls,accesspoint=<AP_ID> <EFS_ID>:/ /mnt/shared
마운트 후 확인 명령입니다.
df -h | grep efs
mount | grep /mnt/shared
핵심
accesspoint=<AP_ID>옵션을 반드시 붙여야 AP 경유 마운트가 강제됩니다.
수동 마운트가 성공하면 fstab을 등록합니다.
# fstab 백업 (안전하게)
sudo cp /etc/fstab /etc/fstab.bak
# fstab 추가 (실제 ID로 교체)
echo '<EFS_ID>:/ /mnt/shared efs _netdev,tls,accesspoint=<AP_ID> 0 0' | sudo tee -a /etc/fstab
# 검증
sudo umount /mnt/shared 2>/dev/null || true
sudo mount -a
mount | grep /mnt/shared
⚠️ 자주 하는 실수
placeholder(<EFS_ID>)를 그대로 넣으면mount -a에서 오류가 발생합니다. 실제fs-xxxxxxxx값으로 바꿔야 합니다.
서버 A에서 파일을 생성하고 서버 C(또는 B)에서 확인합니다.
# 서버 A
echo 'hello from A' | sudo tee /mnt/shared/hello.txt
ls -ln /mnt/shared/hello.txt
# 서버 C
cat /mnt/shared/hello.txt
ls -ln /mnt/shared/hello.txt
두 서버에서 같은 파일이 보이고, ls -ln 결과의 UID/GID가 1000 1000이면 실습 성공입니다.
| 실수 | 증상 | 해결 방법 |
|---|---|---|
| AP CreationInfo 누락 | mount access denied | AP 재생성 시 /shared + UID/GID 1000 + 755 입력 |
| mount target SG 일부 AZ만 변경 | 일부 서버만 마운트 실패 | 모든 mount target에 동일 SG 적용 |
| fstab에 placeholder/중복 오타 | mount -a 실패, 재부팅 후 미마운트 | /etc/fstab에서 오타 줄 삭제 후 1줄만 유지 |
EFS는 SG 2049 관계 + AP 권한 + fstab 정확도 이 3가지만 잡으면 거의 끝납니다.