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; 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.

Performa

Transfer antara Managed Lustre dan Cloud Storage dapat mencapai kecepatan berikut:

  • Untuk file berukuran lebih dari 32 MB, kecepatan hingga 100 GBps. Kecepatan transfer dibatasi oleh throughput maksimum instance (kapasitas instance dikalikan dengan tingkat performa).

Pertimbangan bandwidth keluar Cloud Storage

Cloud Storage menyediakan bandwidth traffic keluar default hingga 200 Gbps per region per project. Jika memiliki beberapa instance Managed Lustre dalam project dan region yang sama, Anda dapat meminta peningkatan batas bandwidth keluar. Untuk mengetahui informasi selengkapnya, lihat kuota bandwidth Cloud Storage.

Izin yang diperlukan

Izin untuk memulai transfer

Akun 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 Managed Lustre, atribut file di instance Managed Lustre 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.

Ekspor 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 permanen 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

Batasan

Batasan berikut berlaku:

  • Hanya satu operasi transfer per instance yang dapat aktif dalam satu waktu. Memulai transfer kedua sebelum transfer pertama selesai akan menampilkan error berikut:

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

Pemecahan masalah

Saat mengimpor data dari atau mengekspor data ke Cloud Storage, Anda mungkin mengalami jeda transfer, masalah izin, atau file yang dilewati. Ikuti langkah-langkah berikut untuk mendiagnosis dan menyelesaikan masalah umum transfer data.

Transfer terhenti atau kecepatan keluar lambat

Jika operasi impor atau ekspor terhenti atau berjalan jauh lebih lambat dari yang diharapkan, periksa hal berikut:

  • Batas bandwidth traffic keluar Cloud Storage: Cloud Storage menerapkan kuota bandwidth traffic keluar default hingga 200 Gbps per region per project. Jika beberapa instance atau workload dengan throughput tinggi mentransfer data secara bersamaan, Anda mungkin mengalami hambatan karena kuota ini. Lihat Kuota bandwidth Cloud Storage untuk meminta penambahan kuota.
  • Batas throughput instance: Kecepatan transfer dibatasi oleh kapasitas throughput maksimum instance Anda (kapasitas instance dikalikan dengan tingkat performanya). Verifikasi tingkat performa instance Anda untuk memastikan tingkat tersebut sesuai dengan ekspektasi performa Anda.

Error izin selama inisiasi transfer

Jika memulai transfer gagal karena error otorisasi atau izin ditolak, verifikasi peran IAM berikut:

  • Izin akun pengguna dan akun layanan: Identitas yang memulai perintah transfer harus memiliki lustre.instances.importData (untuk mengimpor) atau lustre.instances.exportData (untuk mengekspor). Izin ini disertakan dalam peran roles/lustre.admin.
  • Izin agen layanan: Agen layanan Managed Lustre yang dikelola Google (service-<PROJECT_NUMBER>@gcp-sa-lustre...) harus memiliki roles/storage.objectViewer (untuk impor) atau roles/storage.objectUser (untuk ekspor) di bucket Cloud Storage target. Lihat Memberikan izin kepada agen layanan untuk mengetahui petunjuk penyiapan mendetail.

File yang dilewati atau atribut yang tidak ada

Transfer data Lustre terkelola bersifat inkremental; hanya menyalin file yang tidak ada di tujuan atau telah berubah sejak transfer terakhir.

  • Jika file tampak dilewati, verifikasi apakah file tersebut sudah berhasil ditransfer sebelumnya dan belum dimodifikasi.
  • Saat mengekspor data ke Cloud Storage, metadata POSIX (UID, GID, mode, mtime) dipertahankan menggunakan kunci metadata kustom (misalnya, goog-reserved-posix-uid). Perhatikan bahwa symlink, direktori kosong, dan tata letak striping PFL eksplisit tidak dipertahankan selama ekspor. Lihat Atribut file data transfer untuk mengetahui detail selengkapnya.

Memeriksa operasi transfer yang gagal

Jika operasi transfer gagal, ambil pesan error mendetail dan alasan kegagalan menggunakan ID operasi:

gcloud lustre operations describe OPERATION_ID \
  --location=LOCATION

Tinjau kolom error dalam output operasi untuk menentukan apakah kegagalan disebabkan oleh objek yang tidak ada, waktu tunggu jaringan habis, atau autentikasi.

Tidak dapat mengantrekan operasi

Jika Anda melihat error yang mirip dengan salah satu error berikut saat mencoba memulai operasi:

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

Error ini terjadi saat Anda mencoba memulai operasi sementara operasi lain dengan jenis yang sama sudah berlangsung di instance yang sama.

  • Impor/ekspor: Managed Lustre hanya mendukung satu operasi transfer aktif per instance dalam satu waktu. Pengantrean tidak didukung untuk operasi transfer.
  • Update instance: Managed Lustre memungkinkan satu update aktif per instance dalam satu waktu, dan memungkinkan operasi update tambahan diantrekan.

Untuk mengatasi masalah ini, tunggu hingga operasi saat ini selesai sebelum memulai operasi baru.

FILESYSTEM_NO_SPACE_ON_DEVICE error

Jika transfer Anda menampilkan error FILESYSTEM_NO_SPACE_ON_DEVICE, meskipun alat pemantauan menunjukkan bahwa ruang kosong gabungan masih tersedia, Anda mungkin mengalami ketidakseimbangan OST, pemberian ruang klien, atau kehabisan inode. Lihat error No space left on device untuk mengetahui detail dan strategi mitigasi.