Storage Transfer Service를 사용하여 Cloud Storage에서 Filestore 파일 공유로 대규모 데이터 세트를 이동합니다.
Storage Transfer Service를 사용하면 데이터가 Cloud Storage, 타사 클라우드 제공업체 또는 온프레미스에서 호스팅되는지 여부와 관계없이 객체와 파일 스토리지 시스템 간에 대용량 데이터 세트를 빠르고 안전하게 전송할 수 있습니다.
Storage Transfer Service는 수백 TB 이상의 데이터를 쉽게 처리할 수 있는 빠른 데이터 세트 전송을 지원합니다. Filestore 인스턴스를 마운트하는 기본 Compute Engine 인스턴스에서 사용할 수 있는 분석 및 머신러닝 작업을 활용하려면 대규모 데이터 세트를 클라우드로 이동합니다.
Storage Transfer Service를 통해 Google 관리 전송을 손쉽게 만들거나 자체 호스팅 전송을 구성하여 네트워크 라우팅 및 대역폭 사용량을 완전히 제어할 수 있습니다.
Cloud Storage 버킷에서 Filestore 파일 공유로 데이터 전송
Storage Transfer Service를 사용하여 Cloud Storage에서 Filestore 파일 공유로 데이터를 전송하려면 다음 태스크가 수행해야 합니다.
- 환경을 설정합니다.
- Filestore를 구성합니다.
- Storage Transfer Service를 구성합니다.
- 전송 작업을 만들고 시작하세요.
다음 섹션에서는 각 작업에 대해 설명합니다.
환경 설정하기
프로젝트를 선택하거나 만듭니다.
이 가이드에서는 소스 및 대상 리소스가 동일한 프로젝트에 있는지 확인합니다.
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
Filestore를 테스트하고 생성한 리소스를 유지하지 않으려는 경우 기존 프로젝트를 선택하는 대신 프로젝트를 만드는 것이 좋습니다. 테스트가 완료되면 프로젝트를 삭제하여 프로젝트와 연결된 모든 리소스를 삭제할 수 있습니다.
결제 사용 설정
Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
-
Filestore API
Resource Manager API
Pub/Sub API
Cloud Storage API
Storage Transfer API
Cloud Logging API
Compute Engine API
Service Usage API
Identity and Access Management API
선택사항:
gcloud
는 Google Cloud SDK의 주요 구성요소이며 모든 Compute Engine VM에 설치됩니다. 로컬 명령줄에서 다음 단계 중 하나를 수행하는 경우 Google Cloud SDK를 설정합니다.Google Cloud SDK를 설치하고 초기화합니다.
이전에 Google Cloud SDK를 설치한 경우 다음을 실행하여 최신 버전인지 확인하세요.
gcloud components update
서비스 계정을 만듭니다. 이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 섹션에서 다음 역할을 할당합니다.
Owner
Project IAM Admin
Role Administrator
Pub/Sub Editor
Cloud Filestore Editor
Storage Object Admin
Storage Transfer Admin
Storage Transfer Agent
이후 단계를 위해 만든 서비스 계정의 이름을 복사하고 저장합니다.
방금 만든 계정의 서비스 계정 키를 만듭니다. 이 가이드에서는 키를 하나만 만듭니다. 키 파일을 다운로드하고 이후 단계에 사용할 수 있도록 저장합니다.
사용자 계정에 역할을 할당합니다. IAM 페이지에서 사용자 계정을 찾아 다음 역할을 할당합니다.
Owner
Project IAM Admin
Role Administrator
Storage Transfer Admin
Storage Admin
자세한 내용은 사용자 권한을 참조하세요.
Filestore 구성
Filestore 인스턴스를 만듭니다. 인스턴스를 만들 때 다음 사양을 적용합니다.
Cloud Storage 버킷, 클라이언트 VM, Filestore 인스턴스가 모두 동일한 리전에 있는지 확인합니다.
엔터프라이즈 인스턴스 유형을 선택합니다.
선택사항: 데이터 세트의 크기가 더 큰 경우 할당량 증가를 요청합니다.
인스턴스 이름과 IP 주소를 복사하여 이후 단계에 사용할 수 있도록 저장합니다.
클라이언트 머신에 Filestore 인스턴스를 마운트합니다.
이 가이드에서는 4개의 Compute Engine VM을 NFS 클라이언트 머신으로 사용하는 전송에 대해 설명합니다. 4개의 클라이언트 머신을 대신하여 작동하는 단일 서비스 계정을 만듭니다. 각 클라이언트 머신에는 Storage Transfer Service 에이전트 3개가 설치됩니다.
다른 Google Cloud 서비스에 액세스할 수 있는 Compute Engine VM 인스턴스를 만듭니다.
다음 사양으로 VM을 구성합니다.
위치를 지정할 때 Google Cloud 버킷, 클라이언트 VM, Filestore 인스턴스가 모두 동일한 리전에 있는지 확인합니다.
각 Storage Transfer Service 에이전트에는 vCPU 4개와 8GB RAM이 필요합니다. 최상의 성능을 위해 VM당 여러 에이전트를 실행합니다. 이 가이드에서는
e2-standard-32
Compute Engine 가상 머신 인스턴스를 프로비저닝합니다.ID 및 API 액세스 섹션에서 다음을 지정합니다.
- 서비스 계정 드롭다운에서 방금 만든 서비스 계정을 선택합니다.
Compute Engine VM 인스턴스가 생성되면 SSH를 사용하여 머신에 로그인합니다. Compute Engine VM 인스턴스 페이지에서 자신이 만든 인스턴스를 찾아서 SSH를 클릭합니다.
Vim과 같은 텍스트 편집기를 사용하여 서비스 계정 키 파일의 사본을 만들고 VM에 로컬로 임시 저장합니다.
service-account-key.json
)gcloud
가 Compute Engine VM 인스턴스에 이미 설치되어 있습니다. SSH 명령줄에서 다음 명령어를 입력하여 서비스 계정이gcloud
를 사용하도록 승인합니다.gcloud auth activate-service-account ACCOUNT --key-file=KEY_FILE
각 매개변수는 다음과 같습니다.
ACCOUNT는 만든 서비스 계정의 이메일 주소입니다. 예를 들면
my-service-account@my-project.iam.gserviceaccount.com
입니다.KEY_FILE은 이전에 복사한 키 파일의 상대 로컬 경로입니다. 예를 들면
sa-key.json
입니다.
SSH 명령줄에서 NFS를 설치합니다.
sudo apt-get -y update && sudo apt-get install nfs-common
Filestore 파일 공유에 매핑할 로컬 디렉터리를 만듭니다. 이후 Compute Engine VM 인스턴스에 대해 이 단계를 반복할 때는 다음과 같은 이름과 경로를 사용합니다.
sudo mkdir -p MY_DIRECTORY
각 매개변수는 다음과 같습니다.
- MY_DIRECTORY는 Compute Engine VM 인스턴스의 로컬 POSIX 디렉터리의 이름입니다. 예를 들면
/usr/local/my_dir
입니다.
- MY_DIRECTORY는 Compute Engine VM 인스턴스의 로컬 POSIX 디렉터리의 이름입니다. 예를 들면
mount
명령어를 실행하여 Filestore 인스턴스와 연결된 파일 공유를 마운트합니다. 모든 NFS 마운트 옵션을 사용할 수 있습니다. 성능을 극대화하려면 Compute Engine VM 인스턴스에 파일 공유 마운트의 NFS 마운트 권장사항을 참조하세요.sudo mount -o rw,intr IP_ADDRESS:/FILE_SHARE MY_DIRECTORY
각 매개변수는 다음과 같습니다.
IP_ADDRESS는 Filestore 인스턴스의 IP 주소입니다. Filestore 인스턴스 페이지에서 찾을 수 있습니다.
FILE_SHARE는 인스턴스의 파일 공유 이름입니다. 예를 들면
my_fs_instance
입니다.MY_DIRECTORY는 이전 단계에서 매핑한 디렉터리의 이름입니다. 이 디렉터리는 Filestore 인스턴스를 마운트하려는 Compute Engine VM 인스턴스의 디렉터리입니다.
마운트 지점을 확인합니다.
mount -l | grep nfs
이는 다음 또는 비슷한 결과를 반환합니다.
10.66.55.194:/my_fs_instance on /home/usr/my_dir type nfs (rw,relatime,vers=3,rsize=262144,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.66.55.194,mountvers=3,mountport=2050,mountproto=udp,local_lock=none,addr=10.66.55.194)
또는 다음 명령어를 사용할 수도 있습니다.
df -h --type=nfs
이는 다음 또는 비슷한 결과를 반환합니다.
Filesystem Size Used Avail Use% Mounted on 10.66.55.194:/my_fs_instance 1.0T 0 1.0T 0% /home/usr/my_dir
로컬 POSIX 디렉터리 경로를 기록하고 이후 단계를 위해 저장합니다.
이전 단계를 반복하여 Compute Engine VM 인스턴스를 3개 더 만들고 각각 인스턴스에 동일한 Filestore 인스턴스를 마운트합니다. 동일한 서비스 계정을 사용하여 4개의 Compute Engine VM 모두를 관리합니다. 각 VM에 서비스 계정 키의 로컬 사본을 임시로 저장합니다.
Storage Transfer Service 구성
모든 Storage Transfer Service 기능을 위한 Google 관리형 서비스 계정을 승인합니다.
다음 명령어를 입력합니다.
gcloud transfer authorize --add-missing --creds-file=KEY_FILE
각 매개변수는 다음과 같습니다.
- KEY_FILE은 이전에 복사한 키 파일의 상대 로컬 경로입니다. 예를 들면
sa-key.json
입니다.
Google 관리 서비스 계정에 관해 반환된 알림을 기록하고 다음 단계를 위해 연결된 이메일 주소를 저장합니다.
- KEY_FILE은 이전에 복사한 키 파일의 상대 로컬 경로입니다. 예를 들면
몇 분 후 IAM 페이지에 Google 관리형 서비스 계정이 표시됩니다. 전파된 후 다음 역할이 할당되었는지 확인합니다.
Pub/Sub Editor
Storage Admin
전송 에이전트를 설치합니다.
각 Storage Transfer Service 에이전트에는 vCPU 4개와 8GB RAM이 필요합니다.
내결함성을 극대화하고 Storage Transfer Service에서 제공하는 동적 확장을 활용하려면 여러 에이전트를 설치하는 것이 좋습니다. 다음 예시에서는 클라이언트 머신에 3개의 에이전트를 설치하는 방법을 보여줍니다. SSH 명령줄에서 다음 명령어를 실행합니다.
gcloud transfer agents install --pool=MY_AGENT_POOL --count=3 \ --creds-file=MY_SERVICE_ACCOUNT_KEY_FILE
각 매개변수는 다음과 같습니다.
MY_AGENT_POOL은 이전에 만든 에이전트 풀의 이름입니다. 예를 들면
my-agent-pool
입니다.MY_SERVICE_ACCOUNT_KEY_FILE은 서비스 계정 키의 상대 경로입니다. 예를 들면
/relative/path/to/service-account-key.json
입니다.
각 클라이언트 머신에 대해 이 단계를 반복합니다.
전송 작업 만들기 및 시작
- Cloud Storage 버킷에서 Filestore 인스턴스로 데이터를 이동하는 전송 작업을 만듭니다.
앞에서 저장한 로컬 POSIX 디렉터리를 참조하여 대상 경로를 지정합니다. 예를 들면
/home/usr/my_dir
입니다.
전송 상태 모니터링
콘솔
Google Cloud 콘솔의 전송 작업 페이지에서 전송 상태를 모니터링합니다.
명령줄
명령줄을 사용하여 상태를 모니터링할 수 있습니다.
gcloud transfer jobs monitor JOB_NAME
각 매개변수는 다음과 같습니다.
- JOB_NAME은 전송 작업의 이름입니다. 예를 들면
transferJobs/OPI6300379522015192941
입니다.
응답에 다음 또는 유사한 항목이 표시됩니다.
Polling for latest operation name...done.
Operation name: my-sts-project_transferJobs/OPI6300379522015192941_0000000001660692377
Parent job: OPI6300379522015192941
Start time: 2022-08-16T23:26:17.600981Z
SUCCESS | 100% (731.9MiB of 731.9MiB) | Skipped: 129.8kiB | Errors: 0
End time: 2022-08-16T23:27:23.429472Z
자세한 내용은 에이전트 활동 모니터링 또는 파일 시스템 전송 세부정보를 참조하세요.