새소식

클라우드/AWS

[AWS] EFS 생성 및 마운트 방법

  • -

EFS(Elastic File System)는 AWS에서 암호화된 파일 스토리지를 제공하는 클라우드 스토리지 입니다. AWS 클라우드 서비스와 온프레미스 리소스 모두에서 사용할 수 있는 확장 가능하고 탄력적으로 쉽게 구성할 수 있습니다. 본 포스팅에서는 인스턴스에 EFS 마운트하는 방법을 설명합니다.

 


구성 환경

구성 내용은 다음과 같습니다.

  • AWS에서 EFS를 생성하여 두 인스턴스에 마운트
  • AWS AMI : al2023-ami-2023.0.20230329.0-kernel-6.1-x86_64

 

EFS 생성

AWS 콘솔에서 Amazon EFS > 파일 시스템으로 이동하여 파일 시스템 생성 버튼을 클릭합니다.

파일 시스템 생성 버튼을 누르면 다음 [그림 1]과 같이 생성할 EFS의 이름과 VPC를 선택할 수 있습니다.

[그림 1] 파일 시스템 생성

정상적으로 생성되고 일정 시간이 지나면 [그림 2]와 같이 파일 시스템 상태가 사용 가능으로 됩니다.

[그림 2] EFS 생성 화면

다음으로 EFS에서 사용할 보안 그룹을 생성하겠습니다. EFS는 2049 포트를 사용하니 다음 [그림 3]과 같이 인바운드 규칙을 추가하여 줍시다.

[그림 3] EFS에서 사용할 보안 그룹 생성

다시 EFS로 돌아와서 네트워크 액세스를 수정해보겠습니다. 인스턴스는 WAS 두 대를 가동한다고 가정하고, 여기서는 Private Subnet 두 개를 지정하여 각각의 보안 그룹에 앞에서 생성한 보안 그룹으로 지정하여 주겠습니다.

[그림 4] EFS 네트워크 액세스 수정

 

인스턴스 EFS 마운트 

[그림 2]의 우측 상단에서 연결 버튼을 클릭하면 다음 [그림 5]와 같은 화면이 나타나게 됩니다.

[그림 5] EFS 연결 방법

먼저, EFS 탑재 헬퍼를 사용한 EFS 마운트를 하기 전에 인스턴스에 amazon-efs-utils 패키지를 설치해야 합니다.

$ sudo yum update
$ sudo yum install -y amazon-efs-utils

위의 예시에서는 현재 디렉토리의 efs에 마운트 하는 예시를 들었지만, 여기서는 /mnt/data 디렉토리를 만들어 해당 디렉토리에 마운트 시켜보겠습니다.

$ sudo mkdir -p /mnt/data
$ sudo mount -t efs -o tls fs-0f012345678908309:/ /mnt/data/

마운트가 정상적 완료되었으면 df 명령과 mount 명령을 통해 마운트 정보를 확인해보겠습니다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           1.6G  456K  1.6G   1% /run
/dev/nvme0n1p1   70G  2.0G   68G   3% /
tmpfs           3.8G     0  3.8G   0% /tmp
tmpfs           778M     0  778M   0% /run/user/1000
127.0.0.1:/     8.0E     0  8.0E   0% /mnt/data

$ mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
...
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1620384k,nr_inodes=405096,mode=700,uid=1000,gid=1000)
127.0.0.1:/ on /mnt/data type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,port=20295,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

마운트 위인 /mnt/data에 8 엑사바이트 만큼 사용할 수 있다고 나옵니다. 8 엑사바이트면.... 8,388,608GB 인가요?? 어마어마 하네요👍

 

자동 마운트 설정

인스턴스가 재부팅되어도 자동으로 마운트되도록 설정하기 위해서는 /etc/fstab 파일에서 다음과 같이 내용을 추가해주면 됩니다.

$ sudo vim /etc/fstab
...
fs-0f012345678908309:/                          /mnt/data/      efs     _netdev,tls             0       0

_netdev 옵션은 네트워크에 연결 후 마운트하라는 옵션인데, 그래야 시스템 시작 시 문제 없이 해당 네트워크 경로로 자동 마운트 되기 때문에 꼭 필요한 옵션입니다. 해당 옵션 빠지면 EC2 인스턴스가 응답을 중지할 수 있으니 참고해주세요!

 

테스트

두 인스턴스 모두 마운트 설정이 완료되었으면 마운트 위치인 /mnt/data 위치에서 test.txt 파일을 생성하여 아무 내용을 넣어봅시다.

$ cd /mnt/data
$ echo "Test EFS!" > test.txt

다른 인스턴스에서 /mnt/data로 이동하여 앞서 생성한 파일과 동일한 내용이 있는 것을 확인할 수 있습니다.

$ cd /mnt/data
$ ls
test.txt
$ cat test.txt
Test EFS!

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.