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.exportDatauntuk mentransfer dari Managed Lustre ke Cloud Storage.lustre.instances.importDatauntuk 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
Jalankan perintah
services identity create:gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_IDGanti 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.comSalin nilai identitas agen layanan untuk digunakan di langkah berikutnya.
Jika Anda sudah membuat instance Managed Lustre
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)"- Project ID adalah string unik yang dapat berupa kombinasi huruf, angka, dan tanda hubung. Anda menentukan project ID saat membuat
project. Contoh,
Salin nomor project yang ditampilkan ke dalam identitas agen layanan:
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.comSalin 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.objectUserdi bucket Cloud Storage. - Untuk hanya mentransfer dari Cloud Storage:
roles/storage.objectViewerdi 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.
--locationadalah zona instance Managed Lustre Anda. Contoh,us-central1-a.--gcs-path-urimenentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan formatgs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).--lustre-pathmenentukan 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-idmemungkinkan 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.--asyncsegera 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.
gcsPathberisi kunciuriyang nilainya menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan formatgs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).lustrePathberisi kuncipathyang 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
mtimefile ditetapkan berdasarkan metadata kustom objek. atimefile ditetapkan ke nilai yang sama denganmtime.
- UID, GID, mode, dan
- 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). atimedanmtimefile ditetapkan ke waktu pembuatan objek Cloud Storage.
- UID dan GID file ditetapkan ke 0 (
Dalam kedua kasus:
ctimeuntuk file disetel ke waktu file ditulis ke instance.atime,ctime, danmtimeuntuk 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.
--locationadalah zona instance Managed Lustre Anda. Contoh,us-central1-a.--gcs-path-urimenentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan formatgs://<bucket_name>/<optional_path_inside_bucket>/. Jika jalur di dalam bucket ditentukan, jalur tersebut harus diakhiri dengan garis miring (/).--lustre-pathmenentukan jalur direktori root ke sistem file Managed Lustre. Harus diawali dengan/. Defaultnya adalah/.
Parameter berikut bersifat opsional:
--request-idmemungkinkan 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.--asyncsegera 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. lustrePathberisi kuncipathyang nilainya menentukan jalur direktori root ke sistem file Managed Lustre. Harus diawali dengan/. Default-nya adalah/.gcsPathberisi kunciuriyang nilainya menentukan URI ke bucket Cloud Storage, atau jalur dalam bucket, menggunakan formatgs://<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. mtimefile disimpan dengan kuncigoog-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 setstripeataulfs setdirstripetidak dipertahankan. atimedanctimefile tidak dipertahankan.mtimedirektori 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