Google Cloud Managed Lustre는 Cloud Storage에서 데이터를 가져오고 Cloud Storage로 데이터를 내보낼 수 있습니다. Cloud Storage. 데이터 전송은 증분식입니다. 즉, 대상에 아직 없거나 전송된 후 변경된 파일만 복사합니다.
계층적 네임스페이스가 사용 설정된 Cloud Storage 버킷은 표준 버킷에 비해 Managed Lustre 간의 전송 속도가 더 빠릅니다.
성능
Managed Lustre와 Cloud Storage 간의 전송은 다음 속도에 도달할 수 있습니다.
- 32MB 초과 파일의 경우 최대 100GBps입니다. 전송 속도는 인스턴스의 최대 처리량 (인스턴스 용량에 성능 등급을 곱한 값)에 의해 제한됩니다.
Cloud Storage 이그레스 대역폭 고려사항
Cloud Storage는 리전별 프로젝트당 최대 200Gbps의 기본 이그레스 대역폭을 제공합니다. 동일한 프로젝트 및 리전에 여러 Managed Lustre 인스턴스가 있는 경우 이그레스 대역폭 한도 상향 조정을 요청할 수 있습니다. 자세한 내용은 Cloud Storage 대역폭 할당량을 참조하세요.
필수 권한
전송을 시작할 권한
전송을 시작하는 데 사용되는 사용자 또는 서비스 계정에는 다음 권한이 필요합니다.
- Managed Lustre에서 Cloud Storage로 전송하려면
lustre.instances.exportData - 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를 구성하려면 프로젝트 번호를 가져옵니다. A 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 버킷에서 데이터를 가져올 수 있습니다. 버킷은 동일한 프로젝트 또는 다른 프로젝트에 있을 수 있습니다. 버킷은 Managed 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는 Cloud Storage 버킷의 URI를 지정합니다. 또는 버킷 내 경로를 지정합니다.gs://<bucket_name>/<optional_path_inside_bucket>/형식을 사용합니다. 버킷 내 경로가 지정된 경우 슬래시 (/)로 끝나야 합니다.--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는 0 (
root)으로 설정됩니다. - 파일의 모드는
rwxr-xr-x(755)로 설정됩니다. - 파일의
atime및mtime은 Cloud Storage 객체의 생성 시간으로 설정됩니다.
어떤 경우든 다음이 적용됩니다.
- 파일의
ctime은 파일이 인스턴스에 작성된 시간으로 설정됩니다. - 디렉터리의
atime,ctime,mtime은 디렉터리가 인스턴스에서 생성된 시간으로 설정됩니다.
데이터 내보내기
Managed 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를 사용하여 명시적으로 설정된 Lustre 스트라이핑은 보존되지 않습니다.- 파일의
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