아이엠 !나이롱맨😎
article thumbnail
반응형

EFS (Elastic File System) 은 AWS 의 파일 시스템 서비스입니다.

EBS, S3 처럼 데이터를 저장할 수 있습니다. 하지만 각각 쓰임의 목적이 다르기 때문에 자신의 목적에 맞게 잘 사용하여야 합니다.

 

  EFS S3 EBS
사용 케이스 프라이빗 이미지 레지스트리
엔터프라이즈급 데이터 백업

웹 서비스 및 컨텐츠  EC2 의 부팅 볼륨

 

그리고 AWS DataSync 를 이용하면 저장소의 데이터들을 다른 곳으로 옮길 수 있습니다. 같은 VPC 내 저장소는 물론 다른 VPC, 교차 계정 모두 가능합니다.

 

✅ 다른 VPC, 교차 계정은 서로의 VPC 가 Peering 되거나 TGW 로 sharing 된 상태여야 합니다

agent 를 끼고 EFS 간 데이터를 옮기고 있는 중

자세한 동작 방식은 확인하려며 여기를 눌러주세요 

 

그럼 간단하게 한번 DataSync 를 통해 데이터를 이전해보죠 🧐

 

실습의 Flow 를 이렇습니다 📊

 

  1. Mount 해서 데이터 이전이 잘되었는 지 확인할 수 있는 EC2 생성
  2. VPC 내 EFS A 1개 생성 후 EC2 에 마운트
  3. 마운트한 디렉터리에 파일 생성
  4. 동일한 VPC 내 EFS B 생성 후 DataSync 에 사용할 Agent 생성
  5. DataSync 태스크 생성 후 데이터 이전
  6. EC2 에 EFS B 마운트한 후 데이터 이전되었는 지 확인

 

Mount 해서 데이터 이전이 잘되었는 지 확인할 수 있는 EC2 생성


EC2 을 생성합니다. EC2 에 대한 자세한 생성 방법은 다른 글에서 다루도록 하겠습니다 🙂

제가 생성한 EC2 는 t2.micro 이고, Amazon Linux2 입니다.

VPC 내 EC2 생성

 

 

VPC 내 EFS A 1개 생성 후 EC2 에 마운트


EFS 을 생성합니다.

1단계: 파일 시스템 설정 중

  • 스토리지 클래스 : Standard 를 선택합니다. 아래 명시되어있는 것처럼 Standard 는 여러 AZ 에 걸쳐 데이터를 중복 저장할 수 있습니다.
  • IA 로 전환 : EFS 는 비용을 최대한 효율화하기 위해서 자주 액세스 되지 않는 데이터는 IA(Infrequent Access) 라는 곳으로 옮길 수 있습니다. 여기서 마지막 액세스 이후 30일 경과는 액세스 하지 않은 지 30일이 지나면 IA 로 옮기고 처음 액세스할 때는 IA 에서 데이터를 빼낸다는 것입니다.

 

파일 시스템의 성능 설정 중

  • 처리량 모드 : 버스트는 알아서 스토리지 양을 늘리고, 프로비저닝은 미리 스토리지 양을 정하는 옵션입니다. 여기선 버스트를 선택합니다.

 

2단계: 네트워크 액세스 설정 중

✅ 반드시 보안 그룹의 인바운드 규칙 2049 포트를 지정해줍니다. 보통 NFS 같은 경우 2049 포트를 사용하는 데 EFS 도 마찬가지입니다

 

1단계 스토리지 클래스에서 Standard 를 선택했기 때문에 다중 AZ 선택이 가능하고, 만약 One Zone 을 했다면 하나의 AZ 만 선택 가능합니다.

 

3단계 : 파일 시스템 정책 생성 중

기본적으로 제공해주는 4가지 정책이 있고, 커스텀 정책 또한 생성이 가능합니다. 자신의 환경에 맞게 세팅하시면 됩니다. 

저는 아무것도 하지 않겠습니다.

 

4가지 정책의 이름들이 워낙 구체적이여서 따로 설명은 드리지 않겠습니다 🙈

 

4단계 : 검토 및 생성

검토를 한번 하고 생성해줍니다.

 

VPC 내 EFS 와 EC2

 

EFS 를 생성했으니 그럼 EC2 에 ssh 접속 후 마운트를 해줍니다.

 

생성 한 파일시스템 오른쪽 상단을 보시면 연결 이라는 버튼이 있는데 이걸 눌러줍니다.

 

그럼 mount 할 수 있는 명령어가 있는 데 이를 복사합니다.

 

✅ 명령어 가장 뒤에 보면 efs 라고 되어있는 데 이것이 마운트할 경로입니다. 저는 /mnt/efs/fs1 에 합니다.

 

그리고 EC2 로 돌아와 amazon-efs-utils 를 설치합니다. EFS 를 보다 쉽게 마운트할 수 있도록 도와주는 AWS 자체 프로그램입니다.

$ sudo yum install -y amazon-efs-utils

 

저는 이 명령어를 사용해 마운트하겠습니다.

$ sudo mount -t efs -o tls fs-066ba893bc35fce6c:/ /mnt/efs/fs1
[ec2-user@ip-10-0-0-20 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  468K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.6G  6.5G  20% /
tmpfs            97M     0   97M   0% /run/user/1000
tmpfs            97M     0   97M   0% /run/user/0
10.0.0.62:/     8.0E     0  8.0E   0% /mnt/efs/fs1

가장 밑에 10.0.0.62:/ 로 마운트 된 걸 확인할 수 있습니다 😎

 

 

마운트한 디렉터리에 파일 생성


마운트한 경로에 파일을 생성해봅니다.

$ pwd
/mnt/efs/fs1/data

$ sudo mkdir data
$ sudo cd ./data
$ sudo touch test.txt

 

EC2 에 마운트를 하여서 EFS 내 /data/test.txt 를 생성하였습니다 🙂

 

 

동일한 VPC 내 EFS B 생성 후 DataSync 에 사용할 Agent 생성


위 과정가 동일하게 이번엔 EFS B 를 생성합니다.

EFS-A 와 EFS-B
EFS A , EC2 Agent, EFS B

그럼 EFS B 도 마찬가지로 EC2 에 마운트합니다.

[ec2-user@ip-10-0-0-20 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  468K  483M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.6G  6.5G  20% /
tmpfs            97M     0   97M   0% /run/user/1000
tmpfs            97M     0   97M   0% /run/user/0
10.0.0.62:/     8.0E     0  8.0E   0% /mnt/efs/fs1
10.0.0.193:/    8.0E     0  8.0E   0% /mnt/efs/fs2

/mnt/efs/fs2 에 마운트 된 것을 확인합니다 🤜

 

[ec2-user@ip-10-0-0-20 ~]$ cd /mnt/efs/fs2/
[ec2-user@ip-10-0-0-20 fs2]$ ls -l
합계 0

당연히 아무 데이터도 없겠죠? 🙂

 

그럼 이제 EFS A 의 /data/test.txt 를 EFS B 로 본격적으로 옮겨봅시다.

우선 이를 중재해줄 Agent 를 생성합니다. Agent 는 이름만 Agent 이지 사실 EC2 입니다.

 

단, Amazon Linux2 와 같은 AMI 가 아닌 특정 AMI 를 사용해야 합니다.

ami-0283240deda0331b8 가 Agent 용 AMI 입니다. 그리고 인스턴스 타입은 아래 2가지 중 선택해야 합니다.

m5.2xlarge or m5.4xlarge
AMI 를 ami-0283240deda0331b8 로 지정
Agent 용 EC2 생성

Agent 용 EC2 를 생성하였습니다. 보안 그룹 같은 경우 인바운드 규칙 22, 80, 443 을 추가했습니다.

 

그리고 Agent 는 크게 VPC Endpoint 와 퍼블릭으로 연결하는 방법이 있는데 여기선 VPC Endpoint 를 선택합니다.

VPC Endpoint 생성

VPC EndPoint 에서 서비스는 반드시 datasync 로 하고, 보안그룹은 아래와 같이 만들어주셔야 합니다.

반드시 위처럼 생성

이 또한 공식 문서에 명시되어있습니다.

 

Agent 를 만들 준비가 되었습니다.

에이전트 배포

이전에 생성한 EC2 와 서비스 엔드포인트를 선택해줍니다.

 

 

키를 가져온 후 Agent 를 생성해줍니다.

 

이로써 Agent 생성도 완료됩니다.

 

DataSync 태스크 생성 후 데이터 이전


1단계 : 소스 위치 구성

소스 위치는 이전할 데이터가 있는 위치입니다.

 

2단계 : 대상 위치 구성

 

옵션을 선택하고 생성을 해줍니다. 

 

시작

오른쪽 시작 버튼을 눌러 태스크를 진행해줍니다.

 

꽤 시간이 걸리니 인내를 갖고 기다려주세요 😅

 

이전 완료

이로써 이전이 완료되었습니다.

 

EC2 에 EFS B 마운트한 후 데이터 이전되었는지 확인


[ec2-user@ip-10-0-0-20 fs2]$ pwd
/mnt/efs/fs2
[ec2-user@ip-10-0-0-20 fs2]$ ls -l
합계 4
drwxr-xr-x 2 root root 6144 11월 20 11:54 data
[ec2-user@ip-10-0-0-20 fs2]$ cd ./data/
[ec2-user@ip-10-0-0-20 data]$ ls -l
합계 4
-rw-r--r-- 1 root root 0 11월 20 11:54 test.txt

데이터가 잘 이전되었습니다 😀

 

이번 글에서 rsync 를 대신하여 datasync 를 이용하여 스토리지 간 데이터 이전 하는 방법을 알아보았습니다.

긴 글 읽어주셔서 감사합니다 🙇‍♂️

반응형

article prev thumbnail
profile on loading

Loading...