Amazon EC2에 S3 파일 시스템 마운트하기

Amazon EC2에 S3 파일 시스템 마운트하기 (Mounting S3 file systems on Amazon EC2)

EC2 인스턴스에 S3 파일 시스템을 마운트하려면 S3 Files 마운트 헬퍼(mount helper)를 사용해야 해요. 마운트 헬퍼는 지원되는 배포판을 실행하는 EC2 인스턴스에서 S3 파일 시스템을 마운트하도록 도와줘요. 파일 시스템을 마운트할 때 마운트 헬퍼는 Linux의 표준 mount 명령과 완전히 호환되는 s3files라는 새 네트워크 파일 시스템 타입을 정의해요. 마운트 헬퍼는 EC2 Linux 인스턴스의 /etc/fstab 구성 파일 항목을 사용해 인스턴스 부팅 시 S3 파일 시스템을 자동으로 마운트하는 것도 지원해요. 마운트 헬퍼는 S3 Files 클라이언트(amazon-efs-utils)를 설치할 때 설치되는 오픈소스 도구 모음의 일부예요.

EC2 인스턴스에 마운트하기 위한 사전 요구사항 (Prerequisites to mount on EC2 instances)

  • EC2 인스턴스가 지원되는 Linux 배포판 중 하나를 실행해요. Windows와 macOS는 지원되지 않아요.
    • Amazon Linux 2
    • Amazon Linux 2023
    • Red Hat Enterprise Linux(RHEL) 8
    • Red Hat Enterprise Linux(RHEL) 9
    • Ubuntu 20.04
    • Ubuntu 22.04
    • Ubuntu 24.04
    • openSUSE Leap
    • SUSE Linux Enterprise Server(SLES) 15
  • 최소 하나의 마운트 대상을 사용할 수 있는 S3 파일 시스템이 있어요.
  • EC2 인스턴스가 파일 시스템을 마운트하는 데 사용할 마운트 대상과 같은 가용 영역에 있어요.
  • EC2 인스턴스에 S3 Files에 필요한 권한이 있는 IAM 인스턴스 프로파일이 연결되어 있어요. 자세한 내용은 파일 시스템을 AWS 컴퓨팅 리소스에 연결하기 위한 IAM 역할을 참고하세요.
  • 필요한 보안 그룹을 구성했어요.
  • EC2 인스턴스에 amazon-efs-utils 패키지를 설치했어요. 자세한 내용은 S3 Files 클라이언트를 참고하세요.

마운트 헬퍼는 어떻게 동작하나요? (How does the mount helper work?)

마운트 명령을 실행하면 마운트 헬퍼는 다음 작업을 수행해요.

  • EC2 인스턴스 프로파일에서 IAM 자격 증명을 가져와요.
  • 마운트 대상에 TLS 암호화 연결을 설정하기 위해 efs-proxy 프로세스를 초기화해요.
  • TLS 마운트의 상태를 모니터링하는 amazon-efs-mount-watchdog 슈퍼바이저 프로세스를 시작해요. 이 프로세스는 S3 파일 시스템을 처음 마운트할 때 자동으로 시작돼요.
  • 지정된 마운트 지점에 파일 시스템을 마운트해요.

마운트 헬퍼는 TLS 버전 1.2를 사용해 파일 시스템과 통신해요. TLS를 사용하려면 인증서가 필요하며, 이 인증서는 신뢰할 수 있는 Amazon Certificate Authority가 서명해요. 암호화 작동 방식에 대한 자세한 내용은 S3 Files 보안을 참고하세요.

마운트 헬퍼는 S3 Files에 최적화된 다음 마운트 옵션을 사용해요.

옵션 (Option) 값 (Value) 설명 (Description)
nfsvers 4.2 NFS 프로토콜 버전.
rsize 1048576 NFS 클라이언트가 각 네트워크 READ 요청에서 받을 수 있는 최대 데이터 바이트 수를 1048576(1MB, 사용 가능한 최대값)으로 설정해 성능 저하를 방지해요.
wsize 1048576 NFS 클라이언트가 각 네트워크 WRITE 요청에서 보낼 수 있는 최대 데이터 바이트 수를 1048576(1MB, 사용 가능한 최대값)으로 설정해 성능 저하를 방지해요.
hard — NFS 요청이 시간 초과된 후 NFS 클라이언트의 복구 동작을 설정해, 서버가 응답할 때까지 NFS 요청을 무기한 재시도해 데이터 무결성을 보장해요.
timeo 600 NFS 클라이언트가 NFS 요청을 재시도하기 전에 응답을 기다리는 시간 제한 값을 600데시초(60초)로 설정해 성능 저하를 방지해요.
retrans 2 NFS 클라이언트가 추가 복구 조치를 시도하기 전에 요청을 재시도하는 횟수를 2로 설정해요.
noresvport — 네트워크 연결이 다시 설정될 때 NFS 클라이언트가 새 비특권(non-privileged) TCP 소스 포트를 사용하도록 지시해요. noresvport를 사용하면 재연결이나 네트워크 복구 이벤트 후에도 파일 시스템의 중단 없는 가용성이 보장돼요.

또한 마운트 헬퍼는 S3 파일 시스템을 마운트할 때 자동으로 tls와 iam 마운트 옵션을 사용해요. S3 Files는 연결을 설정하는 데 이 옵션을 필요로 하기 때문이에요. S3 Files는 항상 TLS 암호화와 IAM 인증으로 파일 시스템을 마운트하며 이는 비활성화할 수 없어요.

EC2 인스턴스에 S3 파일 시스템을 마운트하는 방법 (How to mount your S3 file system on an EC2 instance?)

  1. Secure Shell(SSH) 또는 EC2 콘솔의 EC2 Instance Connect로 EC2 인스턴스에 연결해요. 자세한 내용은 EC2 인스턴스에 연결을 참고하세요.
  2. 파일 시스템 마운트 지점으로 사용할 /mnt/s3files 디렉터리를 다음 명령으로 만들어요.
sudo mkdir /mnt/s3files
  1. S3 파일 시스템을 마운트해요.
FS="{YOUR_FILE_SYSTEM_ID}"
sudo mount -t s3files $FS:/ /mnt/s3files
  1. 파일 시스템이 마운트되었는지 확인해요.
df -h /mnt/s3files

다음과 비슷한 응답을 볼 수 있어요.

Filesystem      Size  Used Avail Use% Mounted on
{s3files-dns}    8.0E  129M  8.0E   1% {path/to/mount}

로컬 마운트 지점의 내용을 나열해 파일 시스템 마운트 및 마운트 옵션을 확인할 수도 있어요. 마운트가 성공하면 이 명령이 특정 디렉터리에 대한 마운트 세부 정보(마운트 옵션 포함)를 보여줘요.

findmnt -T /mnt/s3files

마운트 명령에 대한 자세한 내용은 GitHub 문서를 참고하세요.

이제 표준 파일 시스템 작업으로 로컬 마운트 경로에서 S3 객체를 파일로 읽고 쓸 수 있어요. S3 버킷에 객체가 있다면 다음 명령으로 파일로 볼 수 있어요.

ls /mnt/s3files

CloudWatch 지표로 파일 시스템 저장소, 성능, 클라이언트 연결, 동기화 오류를 모니터링할 수 있어요.

액세스 포인트를 사용해 EC2 인스턴스에 S3 파일 시스템 마운트하기 (How to mount your S3 file system on an EC2 instance using access points)

액세스 포인트를 사용해 파일 시스템을 마운트하면 마운트 명령에 access-point-id 마운트 옵션이 포함돼요.

sudo mount -t s3files -o accesspoint=access-point-id file-system-id /mnt/s3files

여기서 access-point-id는 액세스 포인트의 ID이고, file-system-id는 S3 파일 시스템의 ID예요.

EC2 인스턴스 시작 시 S3 파일 시스템 자동 마운트 (Automatically mounting S3 file systems when your EC2 instance starts)

/etc/fstab 파일을 업데이트해 인스턴스가 시작되거나 재시작될 때 S3 파일 시스템을 자동으로 마운트하도록 EC2 인스턴스를 구성할 수 있어요. /etc/fstab 파일은 파일 시스템에 대한 정보를 담고 있으며 운영 체제가 부팅 시 어떤 파일 시스템을 마운트할지 결정하는 데 사용해요.

경고: 파일 시스템을 자동으로 마운트할 때는 네트워크 파일 시스템을 식별하는 _netdev 옵션을 사용하세요. _netdev가 없으면 EC2 인스턴스가 응답을 멈출 수 있어요. 네트워크 파일 시스템은 컴퓨팅 인스턴스가 네트워킹을 시작한 후에 초기화되어야 하기 때문이에요. 자세한 내용은 자동 마운트 실패 및 인스턴스 무응답을 참고하세요.

마운트 헬퍼를 사용해 인스턴스 시작 시 S3 파일 시스템을 자동으로 마운트하도록 EC2 인스턴스를 구성할 수 있어요.

  • EC2 /etc/fstab 파일에 S3 파일 시스템 항목 추가.
  • EC2 launch instance wizard로 새 EC2 인스턴스를 만들 때 S3 파일 시스템 연결.

/etc/fstab 파일 업데이트하기 (Updating the /etc/fstab file)

EC2 Linux 인스턴스가 재시작될 때 마운트 헬퍼를 사용해 S3 파일 시스템을 자동으로 다시 마운트하도록 /etc/fstab을 업데이트하려면 다음 단계를 수행해요.

  1. EC2 인스턴스에 연결해요.
  2. 편집기에서 /etc/fstab 파일을 열고 파일에 다음 줄을 추가해요.
file-system-id:/ mount-directory s3files _netdev 0 0

여기서:

  • file-system-id는 S3 파일 시스템의 ID예요(예: fs-0123456789abcdef0).
  • mount-directory는 EC2 인스턴스의 마운트 지점 디렉터리예요(예: /mnt/s3files).
  • _netdev는 파일 시스템이 네트워크 파일 시스템임을 지정해, 마운트를 시도하기 전에 인스턴스가 네트워크를 사용할 수 있을 때까지 기다리도록 보장해요.
  1. 파일을 저장하고 편집기를 닫아요.
  2. fstab의 모든 파일 시스템을 마운트해 fstab 항목을 테스트해요.
sudo mount -a
  1. 파일 시스템이 마운트되었는지 확인해요.
findmnt -T mount-directory

nofail 옵션 사용하기 (Using the nofail option)

프로덕션 환경에서는 fstab 항목에 nofail 옵션을 추가할 것을 권장해요. 이 옵션은 파일 시스템 마운트에 실패해도 인스턴스가 부팅될 수 있게 해 줘요.

file-system-id:/ mount-directory s3files _netdev,nofail 0 0

액세스 포인트로 자동 마운트 (Automatic mounting with an access point)

S3 Files 액세스 포인트를 사용해 자동으로 마운트하려면 accesspoint 옵션을 포함해요.

file-system-id:/ mount-directory s3files _netdev,accesspoint=access-point-id 0 0

하위 디렉터리로 자동 마운트 (Automatic mounting with a subdirectory)

파일 시스템의 특정 하위 디렉터리를 자동으로 마운트하려면 경로를 지정해요.

file-system-id:/path/to/directory mount-directory s3files _netdev 0 0

EC2 launch instance wizard 사용하기 (Using the EC2 launch instance wizard)

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. Launch Instance를 선택해요.
  3. AWS 콘솔의 launch instance wizard로 EC2 인스턴스를 시작하는 방법은 이 문서를 참고하세요. Launch Instance를 선택하기 전에 다음 단계에 따라 네트워크를 구성하고 S3 파일 시스템을 추가해요.
  4. Network 설정에서 서브넷을 선택했는지 확인해요.
  5. EC2 인스턴스가 S3 파일 시스템에 접근할 수 있도록 기본 보안 그룹을 선택해요. 이 보안 그룹으로는 SSH로 EC2 인스턴스에 접근할 수 없어요. SSH 접근이 필요하면 나중에 기본 보안 그룹을 편집해 SSH를 허용하는 규칙을 추가하거나 SSH를 허용하는 새 보안 그룹을 만들면 돼요. 다음 설정을 사용할 수 있어요.
    • Type: SSH
    • Protocol: TCP
    • Port Range: 22
    • Source: Anywhere 0.0.0.0/0
  6. Storage 섹션에서 File systems을 선택하고 S3 Files를 선택해요.
  7. 파일 시스템 드롭다운에서 이전에 Network 설정에서 선택한 서브넷을 기반으로 가용 영역의 파일 시스템을 볼 수 있어요. 마운트하려는 S3 파일 시스템을 선택해요. 파일 시스템이 없다면 새 파일 시스템 만들기를 선택해 새 파일 시스템을 만들어요.
  8. EC2 인스턴스에서 파일 시스템을 마운트할 로컬 마운트 경로를 입력해요(예: /mnt/s3files).
  9. 파일 시스템을 마운트하고 fstab에 추가하는 명령이 생성돼요. 이 명령을 User data에 추가하거나 인스턴스가 시작된 후 EC2 인스턴스에서 수동으로 실행할 수 있어요. 그러면 EC2 인스턴스가 시작 시와 재부팅 시마다 S3 파일 시스템을 마운트하도록 구성돼요.
  10. Launch Instance를 선택해요.

다른 VPC에서 S3 파일 시스템 마운트하기 (Mounting S3 file systems from another VPC)

VPC peering 연결이나 transit gateway를 사용해 VPC를 연결하면 한 VPC의 Amazon EC2 인스턴스가 다른 VPC의 S3 파일 시스템에 접근할 수 있어요.

transit gateway는 VPC와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 네트워크 전송 허브예요. VPC transit gateway 사용에 대한 자세한 내용은 Amazon VPC Transit Gateways Guide의 Getting Started with transit gateways를 참고하세요. VPC peering 연결은 두 VPC 간의 네트워킹 연결이에요. 이 유형의 연결은 프라이빗 Internet Protocol version 4(IPv4) 또는 Internet Protocol version 6(IPv6) 주소를 사용해 VPC 간 트래픽을 라우팅할 수 있게 해 줘요. VPC peering으로 같은 AWS 리전 내 VPC나 AWS 리전 간 VPC를 연결할 수 있어요. VPC peering에 대한 자세한 내용은 Amazon VPC User Guide의 What is VPC Peering?을 참고하세요.

다른 VPC에서 파일 시스템을 마운트할 때는 마운트 대상을 수동으로 해석해야 해요. 해당 가용 영역의 마운트 대상 IP 주소를 다음과 같이 사용하고, mount-target-ip-address, file-system-id, mount-directory를 여러분의 값으로 바꿔주세요.

sudo mount -t s3files -o mounttargetip=mount-target-ip-address file-system-id mount-directory

파일 시스템의 고가용성을 보장하려면 항상 NFS 클라이언트와 같은 가용 영역에 있는 마운트 대상 IP 주소를 사용할 것을 권장해요.

또는 Amazon Route 53을 DNS 서비스로 사용할 수 있어요. Route 53에서 프라이빗 호스팅 영역과 리소스 레코드 세트를 만들어 다른 VPC에서 마운트 대상 IP 주소를 해석할 수 있어요. 방법에 대한 자세한 내용은 Amazon Route 53 Developer Guide의 Working with private hosted zones을 참고하세요.

다른 VPC에서 마운트하는 방법에 대한 자세한 내용은 GitHub ReadMe를 참고하세요.

다른 AWS 리전에서 S3 파일 시스템 마운트하기 (Mounting S3 file systems from a different AWS Region)

파일 시스템이 있는 AWS 리전과 다른 리전의 VPC에서 S3 파일 시스템을 마운트한다면 s3files-utils.conf 파일을 편집해야 해요. /etc/amazon/efs/s3files-utils.conf에서 다음 줄을 찾아요.

#region = us-east-1

us-east-1이 아니라면 파일 시스템이 있는 리전의 ID 값으로 줄의 주석을 해제하고 값을 바꿔주세요.

그런 다음 config에서 리전을 변경한 뒤 마운트 명령에 마운트 대상 IP를 지정해야 해요.

sudo mount -t s3files -o mounttargetip=mount-target-ip-address file-system-id mount-directory

S3 파일 시스템 마운트 해제 (Unmounting your S3 file system)

Linux를 실행하는 EC2 인스턴스에 연결된 S3 파일 시스템을 마운트 해제하려면 umount 명령을 다음과 같이 사용해요.

umount mount-directory

다른 umount 옵션은 지정하지 않을 것을 권장해요. 기본값과 다른 umount 옵션을 설정하지 마세요. S3 파일 시스템이 마운트 해제되었는지 findmnt 명령을 실행해 확인할 수 있어요. 마운트 해제가 성공하면 마운트 디렉터리에서 findmnt 명령이 출력을 내지 않아요.

출처: 문서

본문

(위에서 EC2 인스턴스에 S3 파일 시스템을 마운트하는 방법, 자동 마운트, 다른 VPC·리전에서의 마운트, 마운트 해제를 설명했어요.)

더 알아보기 (Learn more)