AWS EFS에 대하여 알아보자

2022.09.25

안녕하세요 클래스메소드의 수재입니다.
이번에는 AWS EFS가 무엇인지 알아보고 인스턴스에 연결하는 방법에 대하여 알아보겠습니다.

AWS EFS란?

Amazon Elastic File System (Amazon EFS) provides a simple, serverless, set-and-forget elastic file system for use with AWS Cloud services and on-premises resources.

AWS에서 제공하는 서버리스 파일 시스템입니다.
처음에 설정만 한다면 그 후에 패치나 프로비저닝 등은 신경쓰지 않아도 되므로 편리합니다.
온프레미스의 NAS나 NFS 같은 서비스로 이해하면 편합니다.1

EC2를 EFS에 연결하기 위해 인터넷은 필요하지 않습니다.

S3, EFS, EBS

클라우드에 대해서 이제 막 공부하기 시작할 때 AWS의 스토리지 서비스를 찾아보면 가장 많이 보이는 서비스입니다.
각 서비스에 대해 간략히 설명하자면 AWS S3
데이터를 개체(오브젝트)로 저장하는 스토리지 서비스입니다.
웹 요청을 통하여 여러 인스턴스나 클라우스 서비스에서 접근할 수 있습니다.
데이터 저장이 특화되어 있으며 이를 위한 다양한 조건(저장 기간, 접근 방식, 비용 관리 등)에 맞춘 타입이 제공됩니다.
또한 데이터 분석을 위한 서비스와 쉽게 연계할 수 있습니다.

AWS EFS
AWS가 완전히 관리하는 NFS 서비스입니다.
빠른 확장과 대량의 동시 접속을 지원합니다.
하드에 파일을 저장하는 것과 똑같은 친숙한 방식을 지원합니다.

AWS EBS
보통 EC2 인스턴스에 연결하는 블록 디바이스 스토리지입니다.
컴퓨터에 연결하는 SSD나 하드디스크라고 이해하면 편합니다.
연결되어 있던 EBS를 연결 해제하여 다른 인스턴스에 연결하여 사용하는 것도 가능합니다. 혹은 EBS를 여러 인스턴스에 연결하여 사용하는 것도 가능합니다.2

정리하자면 대규모 파일의 저장 및 관리, 데이터 분석이 필요하다면 S3
대량의 동시 접속이 필요하고 관리의 오버헤드를 줄이고 싶다면 EFS
EC2 인스턴스에 연결하여 사용하는 파일 시스템으로는 EBS
라고 이해하면 대략 이미지가 보일 것이라 생각합니다.3
전송 속도는 일반적으로 EBS > EFS > S3 순으로 EBS가 가장 빠릅니다.
이에 대한 자세한 내용은 다음에 다른 글에서 설명해보고자 합니다.

EFS 연결해보기

2대의 EC2 인스턴스에 EFS를 연결해 보겠습니다.
공식문서의 설명은 이 쪽을 참고해주세요.

사전 조건

EC2 인스턴스는 같은 VPC에서 실행되고 있어야 합니다.
VPC, EC2, EFS는 같은 리전에서 실행되어야 합니다.

EFS 작성

AWS 콘솔에서 EFS에 액세스한 후 파일 시스템 작성을 클릭하여 파일 시스템을 작성합니다.
나오는 창에서 커스텀을 누르면 이미지와 같이 상세 옵션을 설정할 수 있습니다. 이 글에서는 가용성을 위해여 여러 가용 영역에 연결할 수 있는 스탠다드 클래스로 생성합니다.
기본적으로 AWS Backup 서비스를 이용한 백업이 설정됩니다.
파일의 암호화가 필요하다면 암호화를 적용할 키를 AWS KMS에서 미리 작성한 후 해당 키의 ARN을 지정해주면 됩니다.

필요에 따라 옵션을 설정한 후 다음을 눌러 연결할 서브넷을 설정합니다.
EC2에서의 접속을 막지 않는 보안 그룹을 설정할 필요가 있습니다. 만약 인스턴스를 새로 생성하여 EFS에 연결하는 경우에는 EC2를 생성할 때 서로 연결할 수 있도록 설정되어 있는 보안 그룹을 자동적으로 만들어서 연결하도록 설정할 수 도 있습니다. 이 글에서는 기본 보안 그룹을 설정한 후 해당 보안 그룹을 EC2 인스턴스에도 연결하는 식으로 진행하겠습니다.
그 후 필요에 따라 파일 시스템 정책 등을 설정합니다. 정책에 대한 자세한 내용은 공식 문서를 참고해주세요.
이 글에서는 설정 없이 넘어가겠습니다.

정책까지 설정이 끝났다면 설정 내용을 확인 후 파일 시스템을 생성합니다.

새 EC2를 생성하며 연결

EC2를 새로 생성하여 EFS와 연결하는 경우에는 이미지와 같이 파일 시스템을 추가로 설정해야합니다.
[보안 그룹을 자동으로 생성 및 연결] 옵션을 체크하면 EC2와 EFS를 연결하기 위한 보안 그룹을 자동으로 EC2와 EFS에 생성 및 연결해줍니다.
파일 시스템을 EC2에 연결하기 위해 [필요한 사용자 데이터 스크립트를 연결하여 공유 파일 시스템을 자동으로 탑재] 옵션도 체크해줍시다.

이후 df -h 커맨드를 실행하면 EFS가 연결된 것을 확인할 수 있습니다.

기존 EC2에 연결

amazon-efs-utils 을 인스턴스에 설치하여 EFS를 마운트합니다.
AWS Systems Manager나 yum을 이용하여 패키지를 설치합니다. 상세한 내용은 아래 문서를 참고해주세요.

패키지 설치가 끝났다면 마운트 도우미를 이용하여 EFS를 연결합니다. 마운트 도우미는 amazon-efs-utils에 포함되어 있습니다.
환경 별 연결 방법은 공식 문서를 참고하시는 걸 추천합니다.

끝으로

간략하게 EFS를 연결하는 방법에 대하여 알아보았습니다.
연결 후 제대로 공유가 되고 있는지 확인하는 작업도 잊지 마시길 바랍니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다. must01940 지메일로 연락 주시면 감사합니다!


본 블로그 게시글을 보시고 문의 사항이 있으신 분들은
클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !


  1. 이해를 돕기 위한 예로써 그렇단 뜻이지 다르게 운용할 필요가 있습니다. 
  2. 모든 EBS 타입에서 지원하는 것은 아닙니다. 자세한 내용은 이 글을 확인해주세요. 
  3. 글 목적 상 정말 간략히 정리한 내용이니 도입에는 제대로 된 검토가 필요합니다.