본문으로 바로가기

[AWS 실습] EFS(Elastic File System) 사용해보기

category AWS 2021. 1. 7. 20:18
반응형

AWS의 스토리지 3 대장이라 불리는 EBS, EFS, S3가 있다.

 

EBS는 블록 스토리지이다.

EFS는 완전 관리형 파일 시스템이며 NFS와 사용법이 유사하다.

s3는 완전 관리형 객체 스토리지이며 구글 드라이브와 유사하고 정적 웹 호스팅 기능까지 있어서

웹 페이지 생성이 가능하다.

 

 

<EFS 생성하기>

 

서비스에서 EFS를 선택 -> 파일 시스템 생성 클릭

 

이름 : MY-EFS

기본 VPC 선택

 

 

MY-EFS를 클릭하거나 선택 후 세부 정보 보기 클릭

 

 

 

네트워크 클릭

보안 그룹이 default로 되어있는데 SG-EFS라는 보안 그룹을 만들어서 바꿔줘야 한다.

 

 

SG-WEB이라는 보안 그룹을 만들어서 나중에 EC2 인스턴스에 붙여준다.

SSH를 추가하고 소스를 내 IP로 해준다.

 

 

SG-EFS라는 보안 그룹을 만들었다. 

인바운드 규칙에 NFS를 추가하고 소스를 SG-WEB으로 선택한다.

 

 

다시 EFS의 네트워크 부분에서 관리를 클릭한 다음

각 가용 영역의 EFS 보안 그룹들을 SG-EFS으로 바꿔준다.

 

 

 

 

 

SG-EFS으로 변경한 다음 연결을 클릭한다.

 

 

DNS를 통한 탑재를 선택하고 

EFS 탑재 헬퍼 사용의 mount 명령을 메모장에 복사해준다.

이제 EC2 인스턴스 3개를 만들어준다. (파일 시스템 추가 안한 거 1개, 한거 2개)

(NFS에서는 fs-d7ac42b7 부분에 ip를 넣었지만 EFS에서는 파일 시스템의 id를 도메인 형태로 마운트 할 수 있다.)

 

 

 

인스턴스를 생성할 때 인스턴스 세부 정보 구성에서

파일 시스템 추가를 클릭한다.

 

 

파일 시스템 추가를 클릭하면 내가 만든 MY-EFS가 나오고 뒤에

/mnt/efs/fs1이라는 마운트 할 디렉토리가 추가된다.

(필요한 보안 그룹을 자동으로 생성 및 연결은 체크하지 않는다.)

 

그리고 사용자 데이터에 파일 시스템을 마운트할 때 필요한 명령어들이 포함된다.

 

2개의 인스턴스가 생성되었다.

이제 SSH로 접속해본다.

 

 

 

각 인스턴스에서 df -h 명령어를 해보면 로컬 호스트 주소로 /mnt/efs/fs1에 마운트 된 것을 볼 수 있다.

(여기서 로컬 호스트는 aws 내에서 쓰이는 거 같다.)

 

 

 

 

인스턴스 EFS-TEST01에서 /mnt/efs/fs1 디렉터리로 들어와 파일을 만들었다.

이제 EFS-TEST02에서 확인을 해본다.

 

EFS-TEST01에서 만든 파일이 TEST02한테도 공유된 것을 볼 수 있다.

 

 

SERVER라는 파일 시스템 추가 안된 인스턴스가 생성되었다.

SSH에 접속해본다.

 

df -h를 해보니 역시나 EFS가 마운트 안되었다.

 

위에 EFS에서 메모장에 복사해둔 것을 SERVER 인스턴스에 넣어줄 것이다.

sudo mount -t efs -o tls fs-d7ac42b7:/ efs 

 

 

위의 인스턴스 2개와의 공유를 위해 /mnt/efs/fs1 디렉터리를 생성해준다.

 

그리고 sudo mount -t efs -o tls fs-d7ac42b7:/ /mnt/efs/fs1으로 바꿔준다.

 

하지만 efs를 알 수 없다고 에러가 난다.

위의 인스턴스 2개는 파일 시스템 추가할 때 사용자 데이터에 알아서 명령을 넣어줬기 때문에 efs가 잘되었지만

SERVER 인스턴스는 수동으로 efs 패키지를 설치해줘야 한다.

 

sudo yum -y install amazon-efs-utils를 넣어준다.

 

sudo mount -t efs -o tls fs-d7ac42b7:/ /mnt/efs/fs1 다시 명령어를 넣어주면 마운트가 된 것을 볼 수 있다.

 

/mnt/efs/fs1 디렉터리로 가보면 EFS-TEST01.txt 파일이 공유되는 것을 볼 수 있다.

EFS 실습이 성공적으로 끝났다.

 

 

 

Amazon Linux 2에서는 쉽게(?) EFS를 사용할 수 있다.

하지만 Ubuntu에서 사용할 때는 비교적 복잡하다.

 

Ubuntu에서 sudo mount -t efs -o tls fs-d7ac42b7:/ /mnt/efs/fs1 명령어를 넣어주기 전에 다음과 같은 과정을 해야 한다.

(3단계에서 파일 시스템 추가 안 했을 경우임)

 

1.) sudo apt install git

2.) git clone https://github.com/aws/efs-utils

3.) sudo apt install -y make

4.) sudo apt install -y binutils

5.) cd efs-utils

6.) ./build-deb.sh

7.) sudo apt install ./build/amazon-efs-utils*deb

 

반응형