Managed NFS 혹은 네트워크 파일시스템이라고 하며 여러 다른 AZ 영역을 너머 많은 EC2 인스턴스에 탑재 가능
EBS Volume과 비교하여 다양한 AZ와 작동할 수 있다는 차이점이 있음 EBS는 하나의 AZ 영역에서만 잠겨있는 반면, EFS는 다양한 AZ 영역에서 탑재 가능 그렇기 때문에 가용성이 높으며 확장 가능하지만 매우 비싸며 (gp2 드라이브 가격의 3배) 사용한 만큼만 비용 지불
만약 많은 양의 데이터를 저장하지 않고 데이터 세트와 크기를 잘 관리하냐에 따라 EBS를 사용하는 것보다 EFS를 사용하는 것이 더 저렴할 수도 있음
EFS 네트워크 파일 시스템은 수입과 연결을 관리하기 위해 보안그룹에 첨부될 수 있음 그리고 다양한 AZ에 다른 EC2 인스턴스를 갖게 되며 (us-east-1a, us-east-1b, us-east-1c) 같은 NFS에도 탑재 가능
EBS는 한 번에 하나의 EC2 인스턴스에 연결되기 때문에 데이터가 EC2 인스턴스들 사이에서 공유되지 않음 반면, EFS는 네트워크 파일 시스템이므로 모든 EC2 인스턴스들은 EFS 드라이브의 같은 파일들에 접근 가능
content management, web serving, data sharing, Wordpress에 사용될 수 있음
네트워크 드라이브를 탑재하고 EFS 파일 시스템에 접근하기 위한 표준 방식인 표준 NFSv4.1 프로토콜을 사용
네트워크를 사용하므로 보안 그룹을 사용
EFS는 오직 AMI에 기반한리눅스에서 작동하며, 윈도우에서는 작동하지 않음 윈도우 인스턴스는 EFS를 파일 시스템에 탑재할 수 없음
EFS는 리눅스와 같은 표준 파일 API를 가진 POSIX file systems에서만 작동
EFS를 암호화하기 위해 KMS 키를 사용
파일 시스템은 자동적으로 계산되며 사용량에 따라 지불하므로 용량 계획이 없으므로 사용하기 쉬움
EFS – Performance & Storage Classes
EFS Scale 규모 : EFS는 동시간대에 수천명의 NFS 고객들을 지원하고 초당 10기가 바이트 이상이 사용되는 고성능 사용량을 가짐 파일 시스템 자체가 테라를 넘어 페타 바이트 사이즈로 커질 수 있어 거대하며, 모든 용량을 관리할 필요 없이 자동적으로 해 줌
Performance mode (set at EFS creation time) 성능 모드 1) General purpose (default) : 범용으로 사용되며 지연 시간에 민감할 때 사용하여 작은 파일들을 빠르게 파일 접근 가능 (웹 서버, CMS, 워드프레스에 사용) 2) Max I/O : 큰 데이터 워크로드가 필요할 때 사용하며 지연 시간은 길지만 처리량과 병렬성이 좋아짐 (빅데이터, 미디어 처리에 사용)
Throughput mode 처리량 (사용량) 모드 1) Bursting : 1테라 바이트를 저장하면 초당 50메가 바이트를 얻을 수 있으며 추가로 최대 100메가 바이트까지 버스트 2) Provisioned : 처리량이 저장 사이즈에 관계 없도록 설정이 가능하므로 작은 파일 시스템을 갖고 있지만 고성능의 처리량이 필요할 경우 사용 1테라 바이트의 저장 용량 밖에 없다고 하더라도 1초당 1기가 바이트의 처리량을 요구할 수 있음
Storage Tiers (lifecycle management feature – move file after N days) 파일 수명 주기 관리 기능 1) Standard : 자주 액세스하는 파일에 대한 것 2) Infrequent access (EFS-IA) : 자주 접근하지 않은 파일에 관한 것으로 파일을 저장하기 위한 비용이 적게 발생하나, 파일을 검색할 때마다 관련된 비용 발생
<EFS 실습>
EFS 네트워크 파일 시스템 생성
EFS 콘솔 - 파일 시스템 생성 - 파일 시스템 설정
네트워크 액세스 세팅 각각의 AZ를 위해 보안 그룹을 정의할 수 있으므로 EC2 콘솔에서 필요로 하는 보안 그룹 생성
생성한 my-efs-demo 보안 그룹을 사용해 각각의 AZ를 위해 보안 그룹으로 선택 - 생성
EFS 파일 시스템에 접근하도록 하기 위해 2개의 EC2 인스턴스를 생성
인스턴스들이 EFS 네트워크 파일 시스템에 접근하도록 SSH 클라이언트인 Windows PowerShell을 이용해 각 SSH를 넣어줌
인스턴스에 EFS를 설치 - EFS - 연결 - EFS 탑재 헬퍼 사용하기 위해 sudo yum install -y amazon-efs-utils 명령어를 통해 인스턴스에 패키지 설치 - mkdir efs 명령어를 통해 EFS 디렉토리 생성 - sudo mount -t efs -o tls fs-039e90508ea4b1be7:/ efs 명령어를 통해 TLS를 사용해서 EFS 드라이브에 탑재 - 시간 초과가 발생하므로 EC2 콘솔에서 보안 그룹 설정을 수정해야 함
EC2 콘솔 - 보안 그룹 my-efs-demo 인바운드 규칙 편집 인바운드 규칙을 아무것도 허용하지 않으므로 my-efs-demo가 ec2-to-efs에서 인바운드를 허용하도록 수정하여 EFS에 EC2 인스턴스를 허락하도록 함
다시 SSH를 통해 EFS 명령을 수행하면 성공적으로 수행 완료
cd efs/ 명령어를 통해 EFS 디레토리로 이동하여 디렉토리 변경
한 인스턴스에서 sudo touch hello-world.txt 명령어를 통해 파일 생성한 후, 다른 인스턴스를 통해 EFS 파일 목록을 볼 경우 같은 hello-word.txt 파일이 생성되었음을 볼 수 있음
sudo nano hello-world.txt 명령어를 통해 첫 번째 인스턴스에서 편집을 한 후,
cat hello-world.txt 명령어를 통해 두 번째 인스턴스에서 보게 된다면 같은 것을 확인 가능
즉, EFS 파일 시스템은 두 인스턴스에 모두 탑재되어 있고 공유된 네트워크 파일 시스템이므로 같은 파일에 접근 가능