Google Cloud Managed Lustre는 Cloud Storage에서 데이터를 가져오고 Cloud Storage로 데이터를 내보낼 수 있습니다. 데이터 전송은 증분 방식입니다. 대상에 아직 없거나 전송된 이후 변경된 파일만 복사합니다.
계층적 네임스페이스가 사용 설정된 Cloud Storage 버킷은 표준 버킷에 비해 Managed Lustre와의 전송 속도가 더 빠릅니다.
성능
Managed Lustre와 Cloud Storage 간 전송은 다음 속도에 도달할 수 있습니다.
- 32MB를 초과하는 파일의 경우 최대 100GBps 전송 속도는 인스턴스의 최대 처리량 (인스턴스 용량에 성능 등급을 곱한 값)에 의해 제한됩니다.
Cloud Storage 이그레스 대역폭 고려사항
Cloud Storage는 리전별 프로젝트당 최대 200Gbps의 기본 이그레스 대역폭을 제공합니다. 동일한 프로젝트 및 리전에 Managed Lustre 인스턴스가 여러 개 있는 경우 이그레스 대역폭 한도 상향을 요청할 수 있습니다. 자세한 내용은 Cloud Storage 대역폭 할당량을 참고하세요.
필수 권한
이전을 시작할 수 있는 권한
전송을 시작하는 데 사용되는 사용자 또는 서비스 계정에는 다음 권한이 필요합니다.
lustre.instances.exportData를 사용하여 Managed Lustre에서 Cloud Storage로 전송합니다.- Cloud Storage에서 전송하려면
lustre.instances.importData를 사용하세요.
이러한 권한은 모두 roles/lustre.admin 역할에 부여됩니다. 맞춤 역할을 만들어 권한을 개별적으로 부여할 수 있습니다.
Managed Lustre 서비스 에이전트 권한
Managed Lustre 서비스 에이전트 가져오기
Managed Lustre 서비스 에이전트는 프로젝트에서 Managed Lustre 인스턴스를 처음 만들 때 생성됩니다. 서비스 에이전트 ID는 service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com 형식입니다.
Managed Lustre 서비스 에이전트가 아직 없는 경우
services identity create명령어를 실행합니다.gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_IDPROJECT_NUMBER_OR_ID를 Managed Lustre 인스턴스를 만들려는 프로젝트 번호 또는 프로젝트 ID로 바꿉니다. 출력은 다음과 비슷합니다.
Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com다음 단계에서 사용할 서비스 에이전트 ID의 값을 복사합니다.
이미 Managed Lustre 인스턴스를 만든 경우
서비스 에이전트 ID를 구성하려면 프로젝트 번호를 가져옵니다. PROJECT_NUMBER는 프로젝트 ID와 다릅니다.
- 프로젝트 ID는 문자, 숫자, 하이픈의 조합으로 구성될 수 있는 고유한 문자열입니다. 프로젝트를 만들 때 프로젝트 ID를 지정합니다. 예를 들면
example-project-123입니다. - 프로젝트 번호는 숫자로만 구성된 프로젝트의 자동 생성 고유 식별자입니다. 예를 들면
1234567890입니다.
특정 프로젝트 ID의 PROJECT_NUMBER를 가져오려면
gcloud projects describe명령어를 사용합니다.gcloud projects describe PROJECT_ID --format="value(projectNumber)"- 프로젝트 ID는 문자, 숫자, 하이픈의 조합으로 구성될 수 있는 고유한 문자열입니다. 프로젝트를 만들 때 프로젝트 ID를 지정합니다. 예를 들면
반환된 프로젝트 번호를 서비스 에이전트 ID에 복사합니다.
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com다음 단계에서 사용할 서비스 에이전트 ID를 복사합니다.
권한 부여
Managed Lustre 서비스 에이전트에는 다음 Cloud Storage 역할 중 하나가 필요합니다.
- Cloud Storage 간에 데이터를 전송하려면 Cloud Storage 버킷에 대한
roles/storage.objectUser권한이 있어야 합니다. - Cloud Storage에서만 전송하려면 Cloud Storage 버킷에
roles/storage.objectViewer권한이 있어야 합니다.
이러한 역할 중 하나를 부여하려면 다음 gcloud 명령어를 실행합니다.
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectViewer_OR_objectUser
SERVICE_AGENT_IDENTITY은 이전 단계의 Managed Lustre 서비스 에이전트 ID입니다.
Managed Lustre로 데이터 가져오기
Cloud Storage 버킷에서 데이터를 가져올 수 있습니다. 버킷은 동일한 프로젝트에 있거나 다른 프로젝트에 있을 수 있습니다. 버킷은 관리형 Lustre 인스턴스와 다른 영역이나 리전에 있을 수 있지만 리전 간 전송은
리전 내 전송보다 느릴 수 있습니다.
gcloud
gcloud lustre instances import-data INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri=gs://BUCKET_NAME/ \
--lustre-path=PS_PATH
각 항목의 의미는 다음과 같습니다.
- INSTANCE_ID은 Managed Lustre 인스턴스 이름입니다.
--location은 Managed Lustre 인스턴스의 영역입니다. 예를 들면us-central1-a입니다.--gcs-path-uri는gs://<bucket_name>/<optional_path_inside_bucket>/형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다. 버킷 내부의 경로가 지정된 경우 슬래시 (/)로 끝나야 합니다.--lustre-path는 Managed Lustre 파일 시스템의 루트 디렉터리 경로를 지정합니다./로 시작해야 합니다. 기본값은/입니다. 기본값이 아닌 값을 지정하는 경우 디렉터리가 파일 시스템에 이미 있어야 합니다.
다음 매개변수는 선택사항입니다.
--request-id를 사용하면 이 요청에 고유 ID를 할당할 수 있습니다. 동일한 요청 ID를 사용하여 이 요청을 다시 시도하면 이미 완료된 경우 서버가 해당 요청을 무시합니다. 모두 0이 아닌 유효한 UUID여야 합니다.--async는 작업이 완료되기를 기다리지 않고 즉시 응답을 반환합니다.
자세한 내용은 Cloud SDK 문서를 참고하세요.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
},
"lustrePath" : {
"path" : "/PATH"
}
}
각 항목의 의미는 다음과 같습니다.
- PROJECT_ID은 Google Cloud 프로젝트 이름입니다.
- LOCATION은 Managed Lustre 인스턴스의 영역입니다. 예를 들면
us-central1-a입니다. - INSTANCE_ID은 Managed Lustre 인스턴스 이름입니다.
gcsPath에는 값이gs://<bucket_name>/<optional_path_inside_bucket>/형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정하는uri키가 포함됩니다. 버킷 내부의 경로가 지정된 경우 슬래시 (/)로 끝나야 합니다.lustrePath에는 값이 Managed Lustre 파일 시스템의 루트 디렉터리 경로를 지정하는path키가 포함되어 있습니다./로 시작해야 합니다. 기본값은/입니다. 기본값 이외의 값을 지정하는 경우 디렉터리가 파일 시스템에 이미 있어야 합니다.
Google 관리 서비스 에이전트 대신 자체 서비스 계정을 사용하려면 요청에서 JSON 객체의 serviceAccount 필드를 지원해야 합니다.
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
curl 명령어 예시는 다음과 같습니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
-d '{"gcsPath": {"uri":"gs://BUCKET_NAME/"}, "lustrePath": {"path":"/"}}'
파일 속성
Cloud Storage 버킷에서 Managed Lustre 인스턴스로 데이터를 가져올 때 Managed Lustre 인스턴스의 파일 속성은 다음 두 가지 방법 중 하나로 설정됩니다.
- Cloud Storage 객체에 데이터 내보내기에 설명된 대로 맞춤 메타데이터가 있는 경우 다음을 충족해야 합니다.
- 파일의 UID, GID, 모드,
mtime는 객체의 맞춤 메타데이터를 기반으로 설정됩니다. - 파일의
atime이mtime과 동일한 값으로 설정됩니다.
- 파일의 UID, GID, 모드,
- Cloud Storage 객체에 맞춤 메타데이터가 없으면 다음이 적용됩니다.
- 파일의 UID와 GID가 0 (
root)으로 설정됩니다. - 파일의 모드가
rwxr-xr-x(755)로 설정됩니다. - 파일의
atime및mtime은 Cloud Storage 객체의 생성 시간으로 설정됩니다.
- 파일의 UID와 GID가 0 (
어떤 경우든 다음을 충족해야 합니다.
- 파일의
ctime은 파일이 인스턴스에 기록된 시간으로 설정됩니다. - 디렉터리의
atime,ctime,mtime은 인스턴스에서 디렉터리가 생성된 시간으로 설정됩니다.
데이터 내보내기
관리형 Lustre 인스턴스에서 동일한 프로젝트 또는 다른 프로젝트의 Cloud Storage 버킷으로 데이터를 내보낼 수 있습니다. 버킷은 Managed Lustre 인스턴스와 다른 영역 또는 리전에 있을 수 있지만 리전 간 전송은 리전 내 전송보다 느릴 수 있습니다.
gcloud
gcloud lustre instances export-data \
INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri="gs://BUCKET_NAME/" \
--lustre-path="/"
각 항목의 의미는 다음과 같습니다.
- INSTANCE_ID은 Managed Lustre 인스턴스 이름입니다.
--location은 Managed Lustre 인스턴스의 영역입니다. 예를 들면us-central1-a입니다.--gcs-path-uri는gs://<bucket_name>/<optional_path_inside_bucket>/형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다. 버킷 내부의 경로가 지정된 경우 슬래시 (/)로 끝나야 합니다.--lustre-path는 Managed Lustre 파일 시스템의 루트 디렉터리 경로를 지정합니다./로 시작해야 합니다. 기본값은/입니다.
다음 매개변수는 선택사항입니다.
--request-id를 사용하면 이 요청에 고유 ID를 할당할 수 있습니다. 동일한 요청 ID를 사용하여 이 요청을 다시 시도하면 이미 완료된 경우 서버가 해당 요청을 무시합니다. 모두 0이 아닌 유효한 UUID여야 합니다.--async는 작업이 완료되기를 기다리지 않고 즉시 응답을 반환합니다.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"lustrePath" : {
"path" : "/"
},
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
}
}
각 항목의 의미는 다음과 같습니다.
- PROJECT_ID은 Google Cloud 프로젝트 이름입니다.
- INSTANCE_ID은 Managed Lustre 인스턴스 이름입니다.
- LOCATION은 Managed Lustre 인스턴스의 영역입니다. 예를 들면
us-central1-a입니다. lustrePath에는 값이 Managed Lustre 파일 시스템의 루트 디렉터리 경로를 지정하는path키가 포함되어 있습니다./로 시작해야 합니다. 기본값은/입니다.gcsPath에는 값이gs://<bucket_name>/<optional_path_inside_bucket>/형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정하는uri키가 포함됩니다. 버킷 내부의 경로가 지정된 경우 슬래시 (/)로 끝나야 합니다.
Google 관리 서비스 에이전트 대신 자체 서비스 계정을 사용하려면 요청에서 JSON 객체의 serviceAccount 필드를 지원해야 합니다.
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
curl 명령어 예시는 다음과 같습니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
-d '{"lustrePath": {"path":"/"}, "gcsPath": {"uri":"gs://BUCKET_NAME/"}}'
파일 속성
Managed Lustre 인스턴스에서 Cloud Storage 버킷으로 데이터를 내보낼 때 다음 파일 속성은 Cloud Storage에서 맞춤 메타데이터로 유지됩니다.
- 파일의 UID는
goog-reserved-posix-uid키와 함께 저장됩니다. - 파일의 GID는
goog-reserved-posix-gid키와 함께 저장됩니다. - 파일의 숫자 모드는
goog-reserved-posix-mode키와 함께 저장됩니다. - 파일의
mtime은goog-reserved-file-mtime키로 저장됩니다.
이러한 맞춤 메타데이터 키 이름은 POSIX 파일 시스템을 사용한 전송에 Storage Transfer Service에서 사용하는 이름과 동일합니다.
다음 파일 속성은 보존되지 않습니다.
- 심볼릭 링크는 보존되지 않습니다.
- 하드 링크는 별도의 Cloud Storage 객체로 내보내지므로 여러 사본이 생성됩니다.
lfs setstripe또는lfs setdirstripe를 사용하여 명시적으로 설정된 광택 스트라이핑은 유지되지 않습니다.- 파일의
atime및ctime이 보존되지 않습니다. - 디렉터리의
mtime은 보존되지 않습니다. - 빈 디렉터리는 보존되지 않습니다.
작업 가져오기
가져오기 또는 내보내기 작업의 상태를 확인하려면 작업 ID가 필요합니다. 이 ID는 가져오기 또는 내보내기 요청을 할 때 서비스에서 반환되며 다음 형식을 사용합니다.
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
REST
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]
curl 명령어 예시는 다음과 같습니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
작업 취소
가져오기 또는 내보내기 작업을 취소하려면 작업 ID가 필요합니다. 이 ID는 가져오기 또는 내보내기 요청을 할 때 서비스에서 반환되며 다음 형식을 사용합니다.
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations cancel OPERATION_ID \
--location=LOCATION
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]
curl 명령어 예시는 다음과 같습니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
제한사항
다음과 같은 제한사항이 적용됩니다.
인스턴스당 하나의 전송 작업만 한 번에 활성화할 수 있습니다. 첫 번째 전송이 완료되기 전에 두 번째 전송을 시작하면 다음 오류가 반환됩니다.
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation