Mirror dari Cloud Storage

Mirror Cloud Storage menyediakan layanan sinkronisasi otomatis berbasis peristiwa yang terus mencerminkan file dari bucket Cloud Storage ke direktori Managed Lustre. Pencerminan hanya didukung dalam satu arah, dari Cloud Storage ke Managed Lustre.

Mirror Cloud Storage hanya tersedia berdasarkan permintaan. Untuk menunjukkan minat Anda, kirimkan formulir permintaan mirror Cloud Storage.

Untuk mendapatkan dukungan terkait mirror Cloud Storage yang aktif, hubungi google-cloud-managed-lustre-support@google.com.

Mirror Cloud Storage dibandingkan dengan transfer data on-demand

Managed Lustre mendukung dua mekanisme untuk memindahkan data dengan Cloud Storage:

Fitur Mirror Cloud Storage Transfer data on-demand
Arah Cloud Storage ke Managed Lustre Cloud Storage ke Managed Lustre

Managed Lustre ke Cloud Storage
Pemicu: Berbasis peristiwa; disinkronkan secara otomatis saat objek dibuat, diperbarui, dan dihapus Manual
Namespace hierarkis Tidak didukung Didukung dan direkomendasikan untuk kecepatan transfer yang dipercepat
Bucket Rapid Storage Tidak didukung Tidak didukung

Untuk mengetahui informasi tentang transfer on-demand, lihat Mentransfer data ke atau dari Cloud Storage.

Cara kerja pencerminan Cloud Storage

Mirror Cloud Storage menjalankan transfer berbasis peristiwa antara sumber Cloud Storage dan direktori Managed Lustre target. Sumber Cloud Storage dapat berupa bucket atau awalan objek tertentu dalam bucket. Pencerminan dilakukan dalam dua fase: sinkronisasi awal saat Anda membuat pencerminan, diikuti dengan replikasi berkelanjutan dari perubahan berikutnya.

Sinkronisasi awal

Saat Anda membuat pencerminan Cloud Storage, layanan akan melakukan sinkronisasi awal untuk menyalin semua objek yang ada dari jalur Cloud Storage sumber ke direktori Managed Lustre target.

Replikasi berkelanjutan berbasis peristiwa

Setelah sinkronisasi awal, layanan pencerminan akan memproses notifikasi bucket dan mereplikasi perubahan.

Sebagian besar objek dapat direplikasi dalam hitungan menit. Saat objek dibuat atau diubah, seluruh file akan disalin.

  • Membuat objek baru di Cloud Storage akan otomatis membuat file yang sesuai di Managed Lustre.

  • Mengubah objek yang ada di Cloud Storage akan menimpa file di Managed Lustre, sehingga menghapus semua perubahan lokal yang dibuat dalam sistem file.

  • Perubahan pada atribut metadata POSIX kustom pada objek Cloud Storage seperti UID, GID, mode, atau mtime diperbarui pada file Managed Lustre yang sesuai.

  • Menghapus objek di Cloud Storage akan menghapus file yang diduplikasi di Managed Lustre secara default. Anda dapat mengubah perilaku ini menggunakan flag --deleted-files-retained. Direktori induk yang kosong tetap ada di sistem file setelah file terakhir di bawahnya dihapus.

  • Perubahan yang dibuat di Managed Lustre pada file yang diduplikasi tidak disalin kembali ke bucket sumber. Jika objek sumber diperbarui nanti, file Managed Lustre akan ditimpa dengan konten objek sumber, sehingga perubahan lokal akan dihapus.

  • Menghapus file yang diduplikasi di Managed Lustre tidak akan menghapus objek yang sesuai di Cloud Storage.

Kecepatan transfer

Kecepatan transfer berikut berlaku untuk mirror Cloud Storage yang bucket dan instance-nya berada di region Google Cloud yang sama:

  • Sinkronisasi awal menyalin data yang ada hingga 100 GBps untuk file berukuran lebih dari 32 MB, dan hingga 10.000 objek per detik untuk file kecil.

  • Replikasi berkelanjutan otomatis menyinkronkan perubahan yang sedang berlangsung, dengan performa transfer yang bervariasi berdasarkan ukuran file:

    • File besar berukuran 10 MB atau lebih besar ditransfer dengan throughput puncak hingga 3,5 GBps.
    • File kecil berukuran 4 KB atau lebih kecil ditransfer hingga 4.900 objek per detik.

Jika data ditulis ke Cloud Storage lebih cepat daripada yang dapat disalin oleh pencerminan, peristiwa akan mengantre dalam backlog, sehingga meningkatkan waktu yang diperlukan agar perubahan muncul di Managed Lustre. Mirror akan otomatis mengejar setelah tingkat perubahan menurun.

Kecepatan transfer dibatasi oleh:

  • Throughput maksimum instance, yaitu kapasitas instance dikalikan dengan tingkat performa.

  • Bandwidth egress Cloud Storage, yang dibatasi hingga 200 Gbps, atau 25 GBps, per region per project. Untuk mendapatkan bandwidth egress yang lebih tinggi, minta penambahan kuota.

  • Latensi jaringan untuk transfer lintas region. Tempatkan bucket sumber dan instance di region yang sama untuk performa yang optimal.

Harga

Mirror Cloud Storage dikenai biaya Cloud Storage standar, yang ditagihkan ke project yang berisi bucket sumber:

  • Sinkronisasi awal menjalankan operasi daftar Kelas A dan operasi baca Kelas B di bucket sumber, dan replikasi berkelanjutan menjalankan operasi baca Kelas B, yang menimbulkan biaya operasi Cloud Storage.
  • Pencerminan data dari bucket sumber di region yang berbeda dari instance Managed Lustre Anda akan dikenai biaya transfer data lintas region.

Sebelum memulai

Untuk membuat pencerminan Cloud Storage, Anda memerlukan:

  • Instance Managed Lustre dalam status ACTIVE.
  • Bucket Cloud Storage yang ada untuk digunakan sebagai sumber pencerminan. Bucket dengan namespace hierarkis diaktifkan, bucket Rapid Storage, dan bucket dengan Requester Pays diaktifkan tidak didukung.

Izin, peran, dan resource yang diperlukan

Izin, peran, dan resource IAM berikut diperlukan untuk membuat dan mengelola pencerminan Cloud Storage.

Izin pengguna

Untuk membuat dan mengelola pencerminan, akun pengguna atau akun layanan Anda memerlukan peran Managed Lustre Admin, roles/lustre.admin.

Jika Anda menggunakan peran khusus, peran tersebut memerlukan izin berikut:

  • lustre.mirrors.create untuk membuat pencerminan.
  • lustre.mirrors.get untuk mendeskripsikan cermin.
  • lustre.mirrors.list untuk mencantumkan mirror.
  • lustre.mirrors.update untuk mengupdate mirror.
  • lustre.mirrors.delete untuk menghapus mirror.

Inisialisasi agen layanan Cloud Storage

Agen layanan Cloud Storage harus ada di project Anda agar dapat memublikasikan peristiwa notifikasi bucket:

gcloud storage service-agent --project=PROJECT_ID

Ganti PROJECT_ID dengan project ID Google Cloud Anda.

Izin agen layanan Managed Lustre

Agen layanan Managed Lustre yang dikelola Google memerlukan akses ke bucket Cloud Storage sumber Anda. Untuk mengetahui petunjuk tentang cara menemukan atau menginisialisasi identitas agen layanan Anda, lihat Agen layanan Managed Lustre.

Agen layanan memerlukan izin berikut pada bucket Cloud Storage sumber:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get
  • storage.objects.list

Buat peran khusus yang berisi izin berikut:

gcloud iam roles create lustreMirrorUser \
  --project=PROJECT_ID \
  --title="Lustre mirror user" \
  --permissions=storage.buckets.get,storage.buckets.update,storage.objects.get,storage.objects.list

Berikan peran khusus kepada agen layanan Managed Lustre di bucket sumber:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre." \
  --role="projects/PROJECT_ID/roles/lustreMirrorUser"

Ganti kode berikut:

  • PROJECT_ID: Project ID Google Cloud Anda.
  • BUCKET_NAME: Nama bucket Cloud Storage sumber Anda.
  • PROJECT_NUMBER: Nomor project Google Cloud Anda.

Membuat mirror Cloud Storage

Anda dapat membuat satu pencerminan Cloud Storage per instance Managed Lustre.

Mirror Cloud Storage tidak dapat dibuat saat operasi impor atau ekspor sedang berlangsung di instance.

gcloud

Jalankan perintah mirrors create:

gcloud lustre instances mirrors create MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION \
  --direction=from-cloud-storage \
  --gcs-path-uri="gs://BUCKET_NAME/PREFIX/" \
  --lustre-path="/LUSTRE_DIRECTORY"

Dengan:

  • MIRROR_NAME adalah nama untuk resource duplikasi ini. Harus terdiri dari 1 hingga 63 karakter, hanya berisi huruf kecil, angka, dan tanda hubung, diawali dengan huruf, dan diakhiri dengan huruf atau angka.
  • INSTANCE_ID adalah ID instance Managed Lustre Anda.
  • LOCATION adalah zona instance Anda. Contoh, us-central1-a.
  • --direction menentukan arah pencerminan. Harus berupa from-cloud-storage.
  • --gcs-path-uri adalah bucket Cloud Storage sumber dan awalan objek opsional. Jika Anda menentukan awalan objek, jalur harus diakhiri dengan garis miring: gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.
  • --lustre-path adalah direktori target pada sistem file Managed Lustre. Harus berupa jalur absolut yang dimulai dengan /, misalnya /data atau /data/subdir. Setelan defaultnya adalah direktori root, /. Jika direktori yang ditentukan tidak ada, direktori tersebut akan dibuat.

Parameter opsional berikut tersedia:

  • --deleted-files-retained atau --no-deleted-files-retained: Mengontrol apakah file yang dihapus di Cloud Storage dipertahankan di Managed Lustre. Jumlah defaultnya adalah --no-deleted-files-retained
  • --description=DESCRIPTION_TEXT: Deskripsi opsional untuk duplikasi.

REST

Kirim permintaan POST ke metode instances.mirrors.create:

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors?mirrorId=MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "gcsPath": {
    "uri": "gs://BUCKET_NAME/PREFIX/"
  },
  "lustrePath": {
    "path": "/LUSTRE_DIRECTORY"
  },
  "direction": "FROM_CLOUD_STORAGE"
}

Dengan:

  • PROJECT_ID adalah project ID Google Cloud Anda.
  • LOCATION adalah zona instance Managed Lustre Anda. Contoh, us-central1-a.
  • INSTANCE_ID adalah ID instance Anda.
  • MIRROR_NAME adalah nama untuk resource duplikasi ini. Harus terdiri dari 1 hingga 63 karakter, hanya berisi huruf kecil, angka, dan tanda hubung, diawali dengan huruf, dan diakhiri dengan huruf atau angka.
  • gcsPath berisi kolom uri dengan bucket Cloud Storage sumber dan awalan objek opsional. Jika Anda menentukan awalan objek, jalur harus diakhiri dengan garis miring: gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.
  • lustrePath adalah direktori target pada sistem file Managed Lustre. Harus berupa jalur absolut yang dimulai dengan /, misalnya /data atau /data/subdir. Setelan defaultnya adalah direktori root, /. Jika direktori yang ditentukan tidak ada, direktori tersebut akan dibuat.
  • direction menentukan arah pencerminan. Harus berupa FROM_CLOUD_STORAGE.

Isi permintaan juga mendukung kolom opsional berikut:

  • deletedFilesRetained: Tetapkan ke true untuk mempertahankan file di Managed Lustre setelah file yang sesuai dihapus dari Cloud Storage. Jumlah defaultnya adalah false
  • description: Deskripsi opsional untuk duplikasi.

Atribut file

Saat file disalin dari bucket Cloud Storage ke instance Managed Lustre, atribut file di instance Managed Lustre 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 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 tersebut:

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

Mengelola mirror Cloud Storage

Anda dapat mencantumkan, mendeskripsikan, mengupdate, dan menghapus mirror Cloud Storage menggunakan alat Google Cloud CLI atau REST API. Untuk mengubah jalur sumber atau target pencerminan yang ada, Anda harus menghapus pencerminan yang ada dan membuat yang baru.

Mencantumkan mirror

Untuk melihat mirror yang dikonfigurasi pada instance:

gcloud

gcloud lustre instances mirrors list \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Kirim permintaan GET ke metode instances.mirrors.list:

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors
Authorization: Bearer YOUR_ACCESS_TOKEN

Deskripsikan cermin

Untuk melihat konfigurasi dan status operasional duplikasi:

gcloud

gcloud lustre instances mirrors describe MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Kirim permintaan GET ke metode instances.mirrors.get:

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN

Status duplikasi

Kolom state yang ditampilkan oleh perintah list dan describe melaporkan di mana mirror berada dalam siklus prosesnya:

Negara bagian/Provinsi Deskripsi
CREATING Resource duplikasi sedang dibuat.
INITIAL_SYNC Sinkronisasi awal menyalin objek yang ada dari Cloud Storage.
ACTIVE Mirror menyinkronkan perubahan saat terjadi.
DELETING Mirror sedang dihapus.

Mengupdate mirror

Anda dapat memperbarui deskripsi, label, dan apakah akan mempertahankan file yang dihapus atau tidak.

Jalur Cloud Storage dan Managed Lustre tidak dapat diubah. Untuk mengarahkan mirror ke jalur yang berbeda, hapus mirror dan buat yang baru.

Memperbarui pencerminan tidak akan menjalankan ulang sinkronisasi awal.

gcloud

gcloud lustre instances mirrors update MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION \
  --description="DESCRIPTION_TEXT"

REST

Kirim permintaan PATCH ke metode instances.mirrors.patch dengan parameter kueri updateMask:

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME?updateMask=description
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "description": "DESCRIPTION_TEXT"
}

Menghapus mirror

Untuk menghapus mirror:

gcloud

gcloud lustre instances mirrors delete MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Kirim permintaan DELETE ke metode instances.mirrors.delete:

DELETE https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN

Menghapus pencerminan akan menghentikan sinkronisasi mendatang antara Cloud Storage dan Managed Lustre. File yang telah disalin ke Managed Lustre tidak akan dihapus saat pencerminan dihapus.

Transfer file yang sedang berlangsung saat pencerminan dihapus akan dibatalkan. Transfer yang tidak lengkap dapat meninggalkan file sementara dengan format nama FILENAME.cloud_transfer.UUID.NUMBER.tmp di direktori pencerminan setelah pencerminan dihapus. Anda dapat menghapus file ini.

Melihat log

Log pencerminan mengidentifikasi setiap file yang gagal disinkronkan.

Log dirutekan ke Cloud Logging terhadap resource lustre.googleapis.com/Instance, di bawah nama log mirror.

Untuk melihat log operasi pencerminan:

  1. Buka Logs Explorer.
  2. Masukkan kueri berikut:

    resource.type="lustre.googleapis.com/Instance"
    logName="projects/PROJECT_ID/logs/lustre.googleapis.com%2Fmirror"
    resource.labels.instance_id="INSTANCE_ID"
    

Pemecahan masalah

Error PERMISSION_DENIED pada bucket sumber

Jika pembuatan pencerminan gagal dengan error PERMISSION_DENIED, file tidak disinkronkan, atau ada log yang menampilkan error "PERMISSION_DENIED":

  1. Pastikan agen layanan Cloud Storage telah diinisialisasi:

    gcloud storage service-agent --project=PROJECT_ID
    
  2. Pastikan agen layanan Managed Lustre telah diberi izin yang diperlukan pada bucket sumber. Lihat Memberikan izin agen layanan untuk mengetahui detailnya.

Perubahan di Cloud Storage tidak direplikasi ke Managed Lustre

Jika status duplikasi adalah ACTIVE, tetapi objek baru atau yang diubah di Cloud Storage tidak muncul di Managed Lustre, pastikan konfigurasi notifikasi bucket ada di bucket sumber Anda.

  1. Cantumkan notifikasi bucket:

    gcloud storage buckets notifications list --bucket=BUCKET_NAME
    
  2. Jika output kosong, Anda harus menghapus mirror yang ada dan membuat yang baru:

    gcloud lustre instances mirrors delete MIRROR_NAME \
      --instance=INSTANCE_ID \
      --location=LOCATION
    

    Setelah penghapusan selesai, buat duplikasi baru.

Error konflik penamaan

Jika Anda melihat file yang hilang di Managed Lustre setelah menambahkannya ke Cloud Storage, periksa Cloud Logging untuk menemukan error konflik penamaan:

  • Jika objek yang dibuat di Cloud Storage memiliki nama yang sama dengan direktori yang ada di Managed Lustre, transfer akan gagal dengan error file exists dan direktori yang ada tidak akan ditimpa. Transfer yang gagal akan meninggalkan file sementara dengan format nama FILENAME.cloud_transfer.UUID.NUMBER.tmp di direktori induk.
  • Jika objek yang dibuat di Cloud Storage berisi awalan jalur yang cocok dengan file reguler yang ada di Managed Lustre, transfer akan gagal dengan error not a directory dan file yang ada tidak akan ditimpa. Misalnya, jika models adalah file yang ada di Managed Lustre, mentransfer objek bernama models/weights.bin dari Cloud Storage akan gagal karena direktori models/ tidak dapat dibuat.

Untuk menyelesaikan konflik ini, ganti nama atau hapus direktori atau file yang bertentangan di Managed Lustre, hapus file .tmp yang tersisa, dan upload ulang objek di Cloud Storage untuk memicu sinkronisasi.

ABORTED: unable to queue the operation

Jika Anda menerima error ABORTED: unable to queue the operation saat membuat pencerminan atau memulai tugas transfer on demand:

  • Pastikan tidak ada operasi import-data atau export-data yang sedang berjalan pada instance sebelum membuat pencerminan.
  • Tunggu hingga pembuatan duplikasi dan sinkronisasi awal selesai sebelum mencoba operasi data administratif lainnya pada instance.

FILESYSTEM_NO_SPACE_ON_DEVICE

Jika pencerminan berhenti dan log menunjukkan error ruang, sistem file Managed Lustre Anda mungkin kehabisan inode atau kapasitas disk. Anda dapat menghapus file yang tidak diperlukan untuk mengosongkan ruang, atau meningkatkan kapasitas penyimpanan untuk memperluas sistem file Anda.