Mentransfer data ke atau dari Cloud Storage

Google Cloud Managed Lustre dapat mengimpor data dari, dan mengekspor data ke, Cloud Storage. Transfer data bersifat inkremental; transfer hanya menyalin file yang belum ada di tujuan, atau yang telah berubah sejak ditransfer.

Bucket Cloud Storage dengan namespace hierarkis yang diaktifkan memberikan kecepatan transfer yang lebih tinggi ke dan dari Managed Lustre dibandingkan dengan bucket standar.

Batasan

Hanya satu operasi transfer per instance yang dapat aktif dalam satu waktu. Mencoba memulai operasi transfer kedua saat operasi sebelumnya masih berjalan akan menghasilkan error seperti:

ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation

Pertimbangan bandwidth keluar Cloud Storage

Cloud Storage menyediakan bandwidth traffic keluar default hingga 200 Gbps per region per project. Jika workload Anda memerlukan kecepatan transfer data yang lebih tinggi, Anda dapat meminta peningkatan batas bandwidth keluar. Untuk mengetahui informasi selengkapnya, lihat kuota bandwidth Cloud Storage.

Izin yang diperlukan

Izin untuk memulai transfer

Pengguna atau akun layanan yang digunakan untuk memulai transfer memerlukan izin berikut:

  • lustre.instances.exportData untuk mentransfer dari Managed Lustre ke Cloud Storage.
  • lustre.instances.importData untuk mentransfer dari Cloud Storage.

Kedua izin ini diberikan dengan peran roles/lustre.admin. Anda dapat membuat peran khusus untuk memberikan izin secara terpisah.

Izin untuk agen layanan Managed Lustre

Mendapatkan agen layanan Managed Lustre

Agen layanan Managed Lustre dibuat saat Anda pertama kali membuat instance Managed Lustre dalam project. Identitas agen layanan memiliki bentuk service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com.

Jika Anda belum memiliki agen layanan Managed Lustre
  1. Jalankan perintah services identity create:

    gcloud beta services identity create \
      --service=lustre.googleapis.com \
      --project=PROJECT_NUMBER_OR_ID
    

    Ganti PROJECT_NUMBER_OR_ID dengan nomor atau ID project tempat Anda ingin membuat instance Managed Lustre. Outputnya mirip dengan hal berikut ini:

    Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com
    
  2. Salin nilai identitas agen layanan untuk digunakan di langkah berikutnya.

Jika Anda sudah membuat instance Managed Lustre
  1. Untuk membuat identitas agen layanan, dapatkan nomor project Anda. PROJECT_NUMBER tidak sama dengan project ID:

    • Project ID adalah string unik yang dapat berupa kombinasi huruf, angka, dan tanda hubung. Anda menentukan project ID saat membuat project. Contoh, example-project-123.
    • Nomor project adalah ID unik yang dibuat secara otomatis untuk project Anda yang hanya terdiri dari angka. Contoh, 1234567890.

    Untuk mendapatkan PROJECT_NUMBER untuk project ID tertentu, gunakan perintah gcloud projects describe:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Salin nomor project yang ditampilkan ke dalam identitas agen layanan:

    service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com
    
  3. Salin identitas agen layanan untuk digunakan di langkah berikutnya.

Memberikan izin

Agen layanan Managed Lustre memerlukan salah satu peran Cloud Storage berikut:

  • Untuk mentransfer data ke dan dari Cloud Storage: roles/storage.objectUser di bucket Cloud Storage.
  • Untuk hanya mentransfer dari Cloud Storage: roles/storage.objectViewer di bucket Cloud Storage.

Untuk memberikan salah satu peran ini, jalankan perintah gcloud berikut:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:SERVICE_AGENT_IDENTITY \
  --role=roles/storage.objectViewer_OR_objectUser

SERVICE_AGENT_IDENTITY adalah identitas agen layanan Managed Lustre dari langkah sebelumnya.

Mengimpor data ke Managed Lustre

Anda dapat mengimpor data dari bucket Cloud Storage. Bucket dapat berada di project yang sama atau berbeda. Bucket dapat berada di zona atau region yang berbeda dari instance Managed Lustre Anda, tetapi transfer antar-region
mungkin lebih lambat daripada transfer dalam region.

gcloud

gcloud lustre instances import-data INSTANCE_ID \
  --location=LOCATION \
  --gcs-path-uri=gs://BUCKET_NAME/ \
  --lustre-path=PS_PATH

Dengan:

  • INSTANCE_ID adalah nama instance Managed Lustre Anda.
  • --location adalah zona instance Managed Lustre Anda. Contoh, us-central1-a.
  • --gcs-path-uri menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan format gs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).
  • --lustre-path menentukan jalur direktori root ke sistem file Managed Lustre. Harus diawali dengan /. Defaultnya adalah /. Jika menentukan nilai selain default, direktori harus sudah ada di sistem file.

Parameter berikut bersifat opsional:

  • --request-id memungkinkan Anda menetapkan ID unik untuk permintaan ini. Jika Anda mencoba lagi permintaan ini menggunakan ID permintaan yang sama, server akan mengabaikan permintaan jika sudah selesai. Harus berupa UUID yang valid dan tidak semuanya nol.
  • --async segera menampilkan respons, tanpa menunggu operasi selesai.

Untuk mengetahui detail selengkapnya, lihat dokumentasi 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"
  }
}

Dengan:

  • PROJECT_ID adalah nama project Google Cloud Anda.
  • LOCATION adalah zona instance Managed Lustre Anda. Contoh, us-central1-a.
  • INSTANCE_ID adalah nama instance Managed Lustre Anda.
  • gcsPath berisi kunci uri yang nilainya menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan format gs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).
  • lustrePath berisi kunci path yang nilainya menentukan jalur direktori root ke sistem file Managed Lustre. Harus dimulai dengan /. Default-nya adalah /. Jika menentukan nilai selain default, direktori harus sudah ada di sistem file.

Untuk menggunakan akun layanan Anda sendiri, bukan agen layanan yang dikelola Google, permintaan mendukung kolom serviceAccount dalam objek JSON:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Contoh perintah curl terlihat seperti:

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":"/"}}'

Atribut file

Saat Anda mengimpor data dari bucket Cloud Storage ke instance Lustre Terkelola, atribut file di instance Lustre Terkelola akan ditetapkan dengan salah satu dari dua cara:

  • Jika objek Cloud Storage memiliki metadata kustom seperti yang dijelaskan untuk mengekspor data, maka:
    • UID, GID, mode, dan mtime file ditetapkan berdasarkan metadata kustom objek.
    • atime file ditetapkan ke nilai yang sama dengan mtime.
  • Jika objek Cloud Storage tidak memiliki metadata kustom, maka:
    • UID dan GID file ditetapkan ke 0 (root).
    • Mode file ditetapkan ke rwxr-xr-x (755).
    • atime dan mtime file ditetapkan ke waktu pembuatan objek Cloud Storage.

Dalam kedua kasus:

  • ctime untuk file disetel ke waktu file ditulis ke instance.
  • atime, ctime, dan mtime untuk direktori ditetapkan ke waktu saat direktori dibuat di instance.

Mengekspor data

Anda dapat mengekspor data dari instance Managed Lustre ke bucket Cloud Storage di project yang sama atau berbeda. Bucket dapat berada di zona atau region yang berbeda dengan instance Managed Lustre Anda, tetapi transfer antar-region mungkin lebih lambat daripada transfer dalam region.

gcloud

gcloud lustre instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --gcs-path-uri="gs://BUCKET_NAME/" \
  --lustre-path="/"

Dengan:

  • INSTANCE_ID adalah nama instance Managed Lustre Anda.
  • --location adalah zona instance Managed Lustre Anda. Contoh, us-central1-a.
  • --gcs-path-uri menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan format gs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).
  • --lustre-path menentukan jalur direktori root ke sistem file Managed Lustre. Harus diawali dengan /. Defaultnya adalah /.

Parameter berikut bersifat opsional:

  • --request-id memungkinkan Anda menetapkan ID unik untuk permintaan ini. Jika Anda mencoba lagi permintaan ini menggunakan ID permintaan yang sama, server akan mengabaikan permintaan jika sudah selesai. Harus berupa UUID yang valid dan tidak semuanya nol.
  • --async segera menampilkan respons, tanpa menunggu operasi selesai.

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/"
  }
}

Dengan:

  • PROJECT_ID adalah nama project Google Cloud Anda.
  • INSTANCE_ID adalah nama instance Managed Lustre Anda.
  • LOCATION adalah zona instance Managed Lustre Anda. Contoh, us-central1-a.
  • lustrePath berisi kunci path yang nilainya menentukan jalur direktori root ke sistem file Managed Lustre. Harus diawali dengan /. Default-nya adalah /.
  • gcsPath berisi kunci uri yang nilainya menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan format gs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).

Untuk menggunakan akun layanan Anda sendiri, bukan agen layanan yang dikelola Google, permintaan mendukung kolom serviceAccount dalam objek JSON:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Contoh perintah curl terlihat seperti:

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/"}}'

Atribut file

Saat Anda mengekspor data dari instance Managed Lustre ke bucket Cloud Storage, atribut file berikut dipertahankan sebagai metadata kustom di Cloud Storage:

  • UID file disimpan dengan kunci goog-reserved-posix-uid.
  • GID file disimpan dengan kunci goog-reserved-posix-gid.
  • Mode numerik file disimpan dengan kunci goog-reserved-posix-mode.
  • mtime file disimpan dengan kunci goog-reserved-file-mtime.

Nama kunci metadata kustom ini sama dengan yang digunakan oleh Storage Transfer Service untuk transfer dengan sistem file POSIX.

Atribut file berikut tidak dipertahankan:

  • Link simbolis tidak dipertahankan.
  • Link keras diekspor sebagai objek Cloud Storage terpisah, sehingga menghasilkan beberapa salinan.
  • Striping kilau yang ditetapkan secara eksplisit menggunakan lfs setstripe atau lfs setdirstripe tidak dipertahankan.
  • atime dan ctime file tidak dipertahankan.
  • mtime direktori tidak dipertahankan.
  • Direktori kosong tidak dipertahankan.

Mendapatkan operasi

Untuk melihat status operasi impor atau ekspor, Anda memerlukan ID operasi. ID ini ditampilkan oleh layanan saat Anda membuat permintaan impor atau ekspor, dan menggunakan format berikut:

  • 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]

Contoh perintah curl terlihat seperti:

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

Batalkan operasi

Untuk membatalkan operasi impor atau ekspor, Anda memerlukan ID operasi. ID ini ditampilkan oleh layanan saat Anda membuat permintaan impor atau ekspor, dan menggunakan format berikut:

  • 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]

Contoh perintah curl terlihat seperti:

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