AWS Storage Gateway로 NFS 파일 공유를 탑재하고 Amazon S3 버킷에 매핑해 보기

이번에는 AWS Storage Gateway로 파일을 공유하는 과정을 정리해 봤습니다.
2021.09.13

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS Storage Gateway로 NFS 파일 공유를 탑재하고, Amazon S3 버킷에 매핑해 봤습니다.

Storage Gateway 구성

Storage Gateway 서비스에서「게이트웨이」버튼을 클릭합니다.

게이트웨이 유형에서「Amazon S3 파일 게이트웨이」를 선택합니다.

인스턴스 실행을 클릭해서 EC2 인스턴스를 생성하는데, 아래 조건을 보면서 생성합니다.

  1. 위에서 "인스턴스 실행" 버튼을 선택하여 Amazon EC2 콘솔로 이동합니다.
  2. "인스턴스 유형 선택"에서 "m4.xlarge" 인스턴스 유형을 사용하는 것이 좋습니다.
  3. 인터넷에서 인스턴스에 액세스할 수 있어야 하는 경우 "인스턴스 세부 정보 구성"에서 "자동 할당 퍼블릭 IP"을(를) "활성화"(으)로 설정합니다.
  4. "스토리지 추가"에서 "새 볼륨 추가"을(를) 선택하여 캐시에 사용할 로컬 디스크를 만듭니다.
  5. "태그 추가"에서 선택적으로 인스턴스에 태그를 지정합니다.
  6. "보안 그룹 구성"에서 클라이언트가 인스턴스에 연결할 수 있도록 방화벽 규칙을 추가합니다. 여기에는 최소한 NFS용 TCP 2049가 포함됩니다.
  7. 계속 검토한 후 인스턴스를 "시작하기"합니다.
  8. "인스턴스 보기"에서 새 인스턴스의 IP 주소를 적어 둡니다.

m4.xlarge를 선택하고 다음을 클릭합니다.

퍼블릭 IP 자동 할당을 활성화 시키고 다음으로 넘어갑니다.

「새 볼륨 추가」버튼을 눌러서 EBS 유형으로 볼륨 하나를 만들어줍니다. 크기는 적당하게 적어주고 다음으로 넘어갑니다.

최소한 포트 요구사항(NFS용 TCP 2049)를 열어야 하기 때문에 NFS포트를 열어줍니다.

그 외에 파일 게이트웨이에서 방화벽 및 네트워크 요구 사항은 이미지 및 여기를 참고해 주세요.

이어서 키 페어를 다운하고 인스턴스를 시작합니다.

이제 생성한 EC2 인스턴스에 접속해 보면 다음과 같은 화면이 출력됩니다.

이어서, 스토리지 게이트웨이를 설정합니다.

퍼블릭의 경우 게이트웨이가 인터넷을 통해 AWS 스토리지로 연결 하는 것을 말하고, VPC의 경우 게이트웨이가 VPC 엔드포인트를 통해 AWS 스토리지로 연결하는 것을 말합니다.

IP 주소는 방금 생성한 인스턴스 퍼블릭 IP 주소를 입력합니다.

게이트웨이 표준 시간대를 선택하고 게이트웨이 이름을 입력한 다음 게이트웨이 활성화 버튼을 클릭합니다.

캐시 스토리지는 최소 용량 150GiB를 권장합니다.「저장 후 계속」버튼을 클릭합니다.

「새 로그 그룹 생성」을 선택하고 게이트웨이 설정을 끝마칩니다.

마지막으로 생성한 게이트웨이의 상태를 확인합니다.

파일 공유 설정

파일 공유 탭에서「파일 공유 생성」버튼을 클릭합니다.

게이트웨이는 좀 전에 설정한 게이트웨이를 선택합니다. S3 버킷은 이전에 만들어뒀던 S3 버킷중 하나의 이름을 적어줍니다.

리전과 파일 공유 이름을 설정합니다. (기본적으로 자동으로 설정되어 있습니다.)

이어서, NFS와 SMB를 선택해야 하는데, 이번에는 NFS를 선택해서 파일을 공유하겠습니다.

NFS는 Web 서버와 애플리케이션 서버 등 서버간에 파일을 공유하는 목적으로 자주 이용됩니다.

SMB는 도스나 윈도우에서 파일이나 디렉토리 및 주변 장치들을 공유하는데 사용되는 메시지 형식입니다. NFS는 서버 간 파일 공유로 이용되는 경우가 많은 반면, SMB는 Windows10 등의 클라이언트 PC에서 액세스하고 여러 사용자가 작업 파일을 공유하는 목적으로 자주 이용됩니다.

객체 스토리지 클래스는 스탠다드를 선택합니다.

이어서, 객체 메타데이터에서 사용하려는 메타데이터를 선택합니다.

  • MIME 유형 추측 : 파일 확장자를 기반으로 하여 업로드되는 객체의 MIME 유형 추측
  • 버킷 소유자에게 전체 제어 권한 부여 : S3 버킷 소유자에게 완전한 제어 권한을 제공
  • 요청자 지불 사용 : 버킷 소유자가 아닌 요청자가 액세스 요금을 지불하는 경우 선택

그 외에는 디폴트 값으로 파일 공유 생성을 완료합니다.

파일 공유 테스트

파일 공유로 들어가서 클라이언트 서버에 접속해 Mount를 수행할 명령어를 확인합니다.

리눅스로 할 생각이기 때문에, 또 다른 EC2 인스턴스를 생성해서, 마운트를 수행합니다.. 즉 클라이언트 서버에서 마운트를 수행합니다. (이번에는 t2.micro로 인스턴스를 생성했습니다.)

sudo -i
mkdir /root/nfs
mount -t nfs -o nolock,hard-게이트웨이 이름 /root/nfs

/root/nfs 디렉토리를 만들어주고, nfs 디렉토리에 마운트합니다.

cd /root/nfs
vi storage-gateway-test.txt

vi로 storage-gateway-test 라는 이름의 텍스트 파일을 만들어서 저장합니다.

s3로 들어가서 확인해 보면, 성공적으로 storage-gateway-test가 업로드된 것을 볼 수 있습니다.

클라이언트 서버 또한 s3 파일을 공유하고 있는 것을 볼 수 있습니다.

참고