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 cepat 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, hingga 100 GBps. Kecepatan transfer di batasi oleh throughput maksimum instance (kapasitas instance dikalikan dengan tingkat performa).
Pertimbangan bandwidth keluar Cloud Storage
Cloud Storage menyediakan bandwidth 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
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 kustom untuk
memberikan izin secara independen.
Izin untuk agen layanan Managed Lustre
Mendapatkan agen layanan Managed Lustre
Agen layanan Managed Lustre dibuat saat Anda pertama kali membuat instance Managed Lustre di 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 project 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 telah membuat instance Managed Lustre
Untuk membuat identitas agen layanan, dapatkan nomor project Anda. A 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. Misalnya,
example-project-123. - Nomor project adalah ID unik yang dibuat secara otomatis untuk project Anda yang hanya terdiri dari angka. Misalnya,
1234567890.
Untuk mendapatkan PROJECT_NUMBER untuk project ID tertentu, gunakan
gcloud projects describeperintah: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. Misalnya,
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 Storageberikut:
- 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 intra-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. Misalnya,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 dimulai dengan/. Default-nya adalah/. Jika menentukan nilai selain default, direktori harus sudah ada di sistem file.
Parameter berikut bersifat opsional:
--request-idmemungkinkan Anda menetapkan ID unik ke 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.--asyncmenampilkan respons segera, 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 projectAnda. Google Cloud
- LOCATION adalah zona instance Managed Lustre
Anda. Misalnya,
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 terkelola Google, permintaan mendukung kolom serviceAccount dalam objek JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Contoh perintah curl terlihat seperti berikut:
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 berikut:
- 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 ditetapkan ke waktu file ditulis ke instance.atime,ctime, danmtimeuntuk direktori ditetapkan ke waktu 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 dari instance Managed Lustre Anda, tetapi transfer antar-region mungkin lebih lambat daripada transfer intra-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. Misalnya,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 dimulai dengan/. Default-nya adalah/.
Parameter berikut bersifat opsional:
--request-idmemungkinkan Anda menetapkan ID unik ke 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.--asyncmenampilkan respons segera, 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 projectAnda. Google Cloud
- INSTANCE_ID adalah nama instance Managed Lustre Anda.
- LOCATION adalah zona instance Managed Lustre
Anda. Misalnya,
us-central1-a. lustrePathberisi kuncipathyang nilainya menentukan jalur direktori root ke sistem file Managed Lustre. Harus dimulai 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 terkelola Google, permintaan mendukung kolom serviceAccount dalam objek JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Contoh perintah curl terlihat seperti berikut:
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 akan 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. - File
mtimedisimpan 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:
- Symlink tidak dipertahankan.
- Hard link diekspor sebagai objek Cloud Storage terpisah, sehingga menghasilkan beberapa salinan.
- Lustre striping 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 berikut:
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
Membatalkan 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 berikut:
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