EFS (Elastic File System) ์ AWS ์ ํ์ผ ์์คํ ์๋น์ค์ ๋๋ค.
EBS, S3 ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ๊ฐ ์ฐ์์ ๋ชฉ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ ์ฌ์ฉํ์ฌ์ผ ํฉ๋๋ค.
EFS | S3 | EBS | |
์ฌ์ฉ ์ผ์ด์ค | ํ๋ผ์ด๋น ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋ฐ์ดํฐ ๋ฐฑ์ |
์น ์๋น์ค ๋ฐ ์ปจํ ์ธ | EC2 ์ ๋ถํ ๋ณผ๋ฅจ |
๊ทธ๋ฆฌ๊ณ AWS DataSync ๋ฅผ ์ด์ฉํ๋ฉด ์ ์ฅ์์ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธธ ์ ์์ต๋๋ค. ๊ฐ์ VPC ๋ด ์ ์ฅ์๋ ๋ฌผ๋ก ๋ค๋ฅธ VPC, ๊ต์ฐจ ๊ณ์ ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค.
โ ๋ค๋ฅธ VPC, ๊ต์ฐจ ๊ณ์ ์ ์๋ก์ VPC ๊ฐ Peering ๋๊ฑฐ๋ TGW ๋ก sharing ๋ ์ํ์ฌ์ผ ํฉ๋๋ค
์์ธํ ๋์ ๋ฐฉ์์ ํ์ธํ๋ ค๋ฉฐ ์ฌ๊ธฐ๋ฅผ ๋๋ฌ์ฃผ์ธ์
๊ทธ๋ผ ๊ฐ๋จํ๊ฒ ํ๋ฒ DataSync ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ด์ ํด๋ณด์ฃ ๐ง
์ค์ต์ Flow ๋ฅผ ์ด๋ ์ต๋๋ค ๐
- Mount ํด์ ๋ฐ์ดํฐ ์ด์ ์ด ์๋์๋ ์ง ํ์ธํ ์ ์๋ EC2 ์์ฑ
- VPC ๋ด EFS A 1๊ฐ ์์ฑ ํ EC2 ์ ๋ง์ดํธ
- ๋ง์ดํธํ ๋๋ ํฐ๋ฆฌ์ ํ์ผ ์์ฑ
- ๋์ผํ VPC ๋ด EFS B ์์ฑ ํ DataSync ์ ์ฌ์ฉํ Agent ์์ฑ
- DataSync ํ์คํฌ ์์ฑ ํ ๋ฐ์ดํฐ ์ด์
- EC2 ์ EFS B ๋ง์ดํธํ ํ ๋ฐ์ดํฐ ์ด์ ๋์๋ ์ง ํ์ธ
Mount ํด์ ๋ฐ์ดํฐ ์ด์ ์ด ์๋์๋ ์ง ํ์ธํ ์ ์๋ EC2 ์์ฑ
EC2 ์ ์์ฑํฉ๋๋ค. EC2 ์ ๋ํ ์์ธํ ์์ฑ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ๊ธ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค ๐
์ ๊ฐ ์์ฑํ EC2 ๋ t2.micro ์ด๊ณ , Amazon Linux2 ์ ๋๋ค.
VPC ๋ด EFS A 1๊ฐ ์์ฑ ํ EC2 ์ ๋ง์ดํธ
EFS ์ ์์ฑํฉ๋๋ค.
- ์คํ ๋ฆฌ์ง ํด๋์ค : Standard ๋ฅผ ์ ํํฉ๋๋ค. ์๋ ๋ช ์๋์ด์๋ ๊ฒ์ฒ๋ผ Standard ๋ ์ฌ๋ฌ AZ ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต ์ ์ฅํ ์ ์์ต๋๋ค.
- IA ๋ก ์ ํ : EFS ๋ ๋น์ฉ์ ์ต๋ํ ํจ์จํํ๊ธฐ ์ํด์ ์์ฃผ ์ก์ธ์ค ๋์ง ์๋ ๋ฐ์ดํฐ๋ IA(Infrequent Access) ๋ผ๋ ๊ณณ์ผ๋ก ์ฎ๊ธธ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ง์ง๋ง ์ก์ธ์ค ์ดํ 30์ผ ๊ฒฝ๊ณผ๋ ์ก์ธ์ค ํ์ง ์์ ์ง 30์ผ์ด ์ง๋๋ฉด IA ๋ก ์ฎ๊ธฐ๊ณ ์ฒ์ ์ก์ธ์คํ ๋๋ IA ์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๋ธ๋ค๋ ๊ฒ์ ๋๋ค.
- ์ฒ๋ฆฌ๋ ๋ชจ๋ : ๋ฒ์คํธ๋ ์์์ ์คํ ๋ฆฌ์ง ์์ ๋๋ฆฌ๊ณ , ํ๋ก๋น์ ๋์ ๋ฏธ๋ฆฌ ์คํ ๋ฆฌ์ง ์์ ์ ํ๋ ์ต์ ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ฒ์คํธ๋ฅผ ์ ํํฉ๋๋ค.
โ ๋ฐ๋์ ๋ณด์ ๊ทธ๋ฃน์ ์ธ๋ฐ์ด๋ ๊ท์น 2049 ํฌํธ๋ฅผ ์ง์ ํด์ค๋๋ค. ๋ณดํต NFS ๊ฐ์ ๊ฒฝ์ฐ 2049 ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ EFS ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค
1๋จ๊ณ ์คํ ๋ฆฌ์ง ํด๋์ค์์ Standard ๋ฅผ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ค์ค AZ ์ ํ์ด ๊ฐ๋ฅํ๊ณ , ๋ง์ฝ One Zone ์ ํ๋ค๋ฉด ํ๋์ AZ ๋ง ์ ํ ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ 4๊ฐ์ง ์ ์ฑ ์ด ์๊ณ , ์ปค์คํ ์ ์ฑ ๋ํ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ ์ ํ๊ฒฝ์ ๋ง๊ฒ ์ธํ ํ์๋ฉด ๋ฉ๋๋ค.
์ ๋ ์๋ฌด๊ฒ๋ ํ์ง ์๊ฒ ์ต๋๋ค.
4๊ฐ์ง ์ ์ฑ ์ ์ด๋ฆ๋ค์ด ์๋ ๊ตฌ์ฒด์ ์ด์ฌ์ ๋ฐ๋ก ์ค๋ช ์ ๋๋ฆฌ์ง ์๊ฒ ์ต๋๋ค ๐
๊ฒํ ๋ฅผ ํ๋ฒ ํ๊ณ ์์ฑํด์ค๋๋ค.
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 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๊ฐ์ง ์ค ์ ํํด์ผ ํฉ๋๋ค.
Agent ์ฉ EC2 ๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ณด์ ๊ทธ๋ฃน ๊ฐ์ ๊ฒฝ์ฐ ์ธ๋ฐ์ด๋ ๊ท์น 22, 80, 443 ์ ์ถ๊ฐํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Agent ๋ ํฌ๊ฒ VPC Endpoint ์ ํผ๋ธ๋ฆญ์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ์ฌ๊ธฐ์ VPC Endpoint ๋ฅผ ์ ํํฉ๋๋ค.
VPC EndPoint ์์ ์๋น์ค๋ ๋ฐ๋์ datasync ๋ก ํ๊ณ , ๋ณด์๊ทธ๋ฃน์ ์๋์ ๊ฐ์ด ๋ง๋ค์ด์ฃผ์ ์ผ ํฉ๋๋ค.
์ด ๋ํ ๊ณต์ ๋ฌธ์์ ๋ช ์๋์ด์์ต๋๋ค.
Agent ๋ฅผ ๋ง๋ค ์ค๋น๊ฐ ๋์์ต๋๋ค.
์ด์ ์ ์์ฑํ EC2 ์ ์๋น์ค ์๋ํฌ์ธํธ๋ฅผ ์ ํํด์ค๋๋ค.
ํค๋ฅผ ๊ฐ์ ธ์จ ํ Agent ๋ฅผ ์์ฑํด์ค๋๋ค.
์ด๋ก์จ Agent ์์ฑ๋ ์๋ฃ๋ฉ๋๋ค.
DataSync ํ์คํฌ ์์ฑ ํ ๋ฐ์ดํฐ ์ด์
์์ค ์์น๋ ์ด์ ํ ๋ฐ์ดํฐ๊ฐ ์๋ ์์น์ ๋๋ค.
์ต์ ์ ์ ํํ๊ณ ์์ฑ์ ํด์ค๋๋ค.
์ค๋ฅธ์ชฝ ์์ ๋ฒํผ์ ๋๋ฌ ํ์คํฌ๋ฅผ ์งํํด์ค๋๋ค.
๊ฝค ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ธ๋ด๋ฅผ ๊ฐ๊ณ ๊ธฐ๋ค๋ ค์ฃผ์ธ์ ๐
์ด๋ก์จ ์ด์ ์ด ์๋ฃ๋์์ต๋๋ค.
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 ๋ฅผ ์ด์ฉํ์ฌ ์คํ ๋ฆฌ์ง ๊ฐ ๋ฐ์ดํฐ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค.
๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐โ๏ธ