Cloud Storage FUSE

Halaman ini memberikan ringkasan tentang Cloud Storage FUSE, adaptor FUSE yang dapat Anda gunakan untuk memasang dan mengakses bucket Cloud Storage sebagai sistem file lokal, sehingga aplikasi dapat membaca dan menulis objek di dalam bucket dengan menggunakan semantik sistem file standar.

Dokumentasi ini selalu mencantumkan Cloud Storage FUSE versi terbaru. Untuk mengetahui detail versi terbaru, lihat rilis Cloud Storage FUSE di GitHub.

Ringkasan

Cloud Storage FUSE adalah produk open source yang didukung oleh Google. Cloud Storage FUSE menggunakan FUSE dan Cloud Storage API untuk mengekspos bucket secara transparan sebagai folder yang terpasang secara lokal di sistem file Anda.

Cloud Storage FUSE terintegrasi dengan layanan Google Cloud lainnya. Misalnya, dengan driver FUSE CSI Cloud Storage, Anda dapat menggunakan Google Kubernetes Engine (GKE) API untuk menggunakan bucket sebagai volume, sehingga Anda dapat membaca dari dan menulis ke Cloud Storage dari dalam pod Kubernetes Anda. Untuk informasi lebih lanjut mengenai integrasi lainnya, lihat Integrasi.

Cara kerja Cloud Storage FUSE

Cloud Storage FUSE berfungsi dengan menerjemahkan nama penyimpanan objek menjadi struktur mirip direktori, yang menafsirkan karakter garis miring (/) dalam nama objek sebagai pemisah direktori. Objek dengan awalan umum yang sama diperlakukan sebagai file di direktori yang sama, sehingga aplikasi dapat berinteraksi dengan bucket yang terpasang seperti sistem file. Objek juga dapat diatur ke dalam struktur sistem file logis menggunakan namespace hierarkis, yang memungkinkan Anda mengatur objek ke dalam folder.

Cloud Storage FUSE dapat dijalankan dari mana saja dengan konektivitas ke Cloud Storage, termasuk Google Kubernetes Engine, VM Compute Engine, atau sistem lokal.

Kasus penggunaan untuk Cloud Storage FUSE

Cloud Storage FUSE cocok untuk kasus penggunaan jika Cloud Storage memiliki karakteristik performa dan skalabilitas yang tepat untuk aplikasi yang membutuhkan semantik sistem file. Misalnya, Cloud Storage FUSE berguna untuk project machine learning (ML) karena menyediakan cara untuk menyimpan data, model, checkpoint, dan log langsung di Cloud Storage. Untuk informasi selengkapnya, lihat Cloud Storage FUSE untuk workload ML.

Cloud Storage FUSE untuk machine learning

Cloud Storage FUSE adalah pilihan umum bagi developer yang ingin menyimpan dan mengakses pelatihan dan data model ML sebagai objek di Cloud Storage. Cloud Storage FUSE memberikan beberapa manfaat untuk mengembangkan project ML:

  • Dengan Cloud Storage FUSE, Anda dapat memasang bucket Cloud Storage sebagai sistem file lokal sehingga aplikasi Anda dapat mengakses data pelatihan dan model menggunakan semantik sistem file standar. Dengan begitu, Anda dapat terhindar dari biaya penulisan ulang atau pemfaktoran ulang kode aplikasi saat menggunakan Cloud Storage untuk menyimpan data ML.

  • Mulai dari pelatihan hingga inferensi, dengan Cloud Storage FUSE, Anda dapat menggunakan skalabilitas, performa, dan efektivitas biaya bawaan dari Cloud Storage, sehingga Anda dapat menjalankan workload ML dalam skala besar.

  • Dengan Cloud Storage FUSE, Anda dapat memulai tugas pelatihan secara cepat dengan menyediakan resource komputasi dan akses langsung ke data di Cloud Storage, sehingga Anda tidak perlu mendownload data pelatihan ke resource komputasi.

Untuk mengetahui informasi selengkapnya, lihat Framework, sistem operasi, dan arsitektur yang didukung oleh Cloud Storage FUSE.

Framework, sistem operasi, dan arsitektur

Cloud Storage FUSE telah divalidasi dengan framework berikut:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

Cloud Storage FUSE mendukung sistem operasi dan arsitektur berikut:

  • Rocky Linux 8.9 atau yang lebih baru

  • Ubuntu 18.04 atau yang lebih baru

  • Debian 10 atau yang lebih baru

  • CentOS 7.9 atau yang lebih baru

  • RHEL 7.9 atau yang lebih baru

  • SLES 15 atau yang lebih baru

  • x86_64

  • ARM64

Integrasi Cloud Storage FUSE dengan produk Google Cloud

Cloud Storage FUSE terintegrasi dengan produk Google Cloud berikut:

Produk Cara integrasi Cloud Storage FUSE
Google Kubernetes Engine (GKE)

Driver CSI Cloud Storage FUSE mengelola integrasi Cloud Storage FUSE dengan Kubernetes API untuk menggunakan bucket Cloud Storage sebagai volume. Anda dapat menggunakan driver CSI Cloud Storage FUSE untuk memasang bucket sebagai sistem file pada node Google Kubernetes Engine.

Pelatihan Vertex AI

Anda dapat mengakses data dari bucket Cloud Storage sebagai sistem file yang terpasang saat melakukan pelatihan kustom di Vertex AI. Untuk informasi selengkapnya, lihat Menyiapkan kode pelatihan.

Vertex AI Workbench

Instance Vertex AI Workbench menyertakan integrasi Cloud Storage yang memungkinkan Anda menjelajahi bucket dan menggunakan file kompatibel yang berada di Cloud Storage dari dalam antarmuka JupyterLab. Integrasi Cloud Storage memungkinkan Anda mengakses semua bucket dan file Cloud Storage yang dapat diakses instance Anda dalam project yang sama dengan instance Vertex AI Workbench Anda. Untuk menyiapkan integrasi, lihat petunjuk Vertex AI Workbench tentang cara mengakses bucket dan file Cloud Storage di JupyterLab.

Deep Learning VM Image

Cloud Storage FUSE telah dilengkapi dengan Deep Learning VM Image.

Deep Learning Containers

Untuk memasang bucket Cloud Storage untuk Deep Learning Containers, Anda dapat menggunakan driver CSI Cloud Storage FUSE (direkomendasikan) atau menginstal Cloud Storage FUSE.

Batch

Cloud Storage FUSE memungkinkan Anda memasang bucket Cloud Storage sebagai volume penyimpanan saat membuat dan menjalankan tugas Batch. Anda dapat menentukan bucket dalam definisi tugas, dan bucket akan otomatis dipasang ke VM untuk tugas saat tugas berjalan.

Cloud Run

Cloud Run memungkinkan Anda memasang bucket Cloud Storage sebagai volume dan menampilkan konten bucket sebagai file dalam sistem file penampung. Untuk menyiapkan pemasangan volume, lihat Memasang volume Cloud Storage.

Cloud Composer

Saat Anda membuat lingkungan, Cloud Composer menyimpan kode sumber untuk alur kerja dan dependensinya di folder tertentu dalam bucket Cloud Storage. Cloud Composer menggunakan Cloud Storage FUSE untuk memetakan folder dalam bucket ke komponen Airflow di lingkungan Cloud Composer.

Untuk mengetahui daftar produk Google Cloud yang terintegrasi dengan Cloud Storage secara umum, lihat Integrasi dengan layanan dan alat Google Cloud.

Menyimpan data ke dalam cache

Cloud Storage FUSE menawarkan empat jenis caching untuk membantu meningkatkan performa dan mengurangi biaya: caching file, caching statistik, caching jenis, dan caching daftar. Untuk informasi selengkapnya tentang cache ini, lihat Ringkasan penyimpanan dalam cache.

Semantik direktori

Cloud Storage menawarkan bucket dengan namespace datar dan bucket dengan namespace hierarkis yang diaktifkan. Secara default, Cloud Storage FUSE dapat menyimpulkan direktori yang ditentukan secara eksplisit, yang juga dikenal sebagai folder, dalam bucket dengan namespace hierarkis yang diaktifkan, tetapi tidak dapat menyimpulkan direktori yang ditentukan secara implisit dalam bucket dengan namespace datar. Direktori yang ditentukan secara implisit mencakup folder simulasi dan folder terkelola.

Misalnya, Anda memasang bucket bernama my-bucket, yang berisi objek bernama my-directory/my-object.txt, dengan my-directory/ adalah folder simulasi. Saat Anda menjalankan ls di direktori pemasangan bucket, secara default, Cloud Storage FUSE tidak dapat mengakses direktori simulasi my-bucket/my-directory/ atau objek my-object.txt di dalamnya. Agar Cloud Storage FUSE dapat menyimpulkan folder simulasi dan objek di dalamnya, sertakan opsi --implicit-dirs sebagai bagian dari perintah gcsfuse mount saat memasang bucket namespace datar. Untuk informasi selengkapnya tentang opsi --implicit-dirs, lihat dokumentasi command line Cloud Storage FUSE.

Jika Anda perlu menyimpan dan mengakses data menggunakan sistem file, gunakan bucket dengan namespace hierarkis yang diaktifkan. Untuk mempelajari cara membuat bucket tersebut, lihat Membuat bucket dengan namespace hierarkis yang diaktifkan.

Untuk mengetahui informasi selengkapnya tentang semantik direktori, termasuk cara memasang bucket dengan direktori yang ditentukan secara implisit, lihat File dan Direktori di dokumentasi GitHub.

Strategi percobaan ulang

Secara default, permintaan yang gagal dari Cloud Storage FUSE ke Cloud Storage dicoba ulang dengan backoff eksponensial hingga durasi backoff maksimum tertentu, yang bernilai 30s (30 detik) secara default. Setelah durasi backoff melebihi durasi maksimum yang ditentukan, percobaan ulang akan dilanjutkan dengan durasi maksimum yang ditentukan. Anda dapat menggunakan opsi --max-retry-sleep sebagai bagian dari panggilan gcsfuse untuk menentukan durasi backoff.

Untuk mengetahui informasi selengkapnya tentang opsi --max-retry-sleep, lihat dokumentasi command line gcsfuse.

Operasi Cloud Storage FUSE yang terkait dengan operasi Cloud Storage

Saat menjalankan operasi menggunakan Cloud Storage FUSE, Anda juga menjalankan operasi Cloud Storage yang terkait dengan operasi Cloud Storage FUSE. Tabel berikut ini menjelaskan perintah umum Cloud Storage FUSE dan operasi Cloud Storage JSON API terkaitnya. Anda dapat menampilkan informasi tentang operasi Cloud Storage FUSE dengan menetapkan flag --log-severity ke TRACE dalam perintah gcsfuse.

Perintah Operasi JSON API
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (untuk memeriksa kredensial)
cd mp t/a
ls mp Objects.list("")
mkdir subdir

Objects.get("subdir")

Objects.get("subdir/")

Objects.insert("subdir/")

cp ~/local.txt subdir/

Objects.get("subdir/local.txt")

Objects.get("subdir/local.txt/")

Objects.insert("subdir/local.txt"), untuk membuat objek kosong

Objects.insert("subdir/local.txt"), saat menutup setelah selesai menulis

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

Objects.delete("subdir/local.txt")

Objects.list("subdir/")

Objects.delete("subdir/")

Harga untuk Cloud Storage FUSE

Cloud Storage FUSE tersedia secara gratis, tetapi penyimpanan, metadata, dan I/O jaringan yang dihasilkannya ke dan dari Cloud Storage dikenai biaya seperti antarmuka Cloud Storage lainnya. Dengan kata lain, semua operasi dan transfer data yang dilakukan oleh Cloud Storage FUSE dipetakan ke transfer dan operasi Cloud Storage, serta dikenai biaya yang sesuai. Untuk mengetahui informasi selengkapnya tentang operasi umum Cloud Storage FUSE dan cara pemetaannya ke operasi Cloud Storage, lihat pemetaan operasi.

Untuk menghindari hal yang tidak diinginkan, Anda harus memperkirakan pengaruh penggunaan Cloud Storage FUSE dalam biaya Cloud Storage. Misalnya, jika menggunakan Cloud Storage FUSE untuk menyimpan file log, Anda dapat dikenai biaya dengan cepat jika log dihapus secara agresif pada ratusan atau ribuan komputer secara bersamaan.

Lihat Harga Cloud Storage untuk mengetahui informasi tentang tagihan seperti penyimpanan, penggunaan jaringan, dan operasi.

Batasan

Meskipun Cloud Storage FUSE memiliki antarmuka sistem file, FUSE tidak seperti sistem file NFS atau CIFS di backend. Selain itu, Cloud Storage FUSE tidak mematuhi persyaratan POSIX. Untuk produk sistem file POSIX di Google Cloud, lihat Filestore.

Saat menggunakan Cloud Storage FUSE, perhatikan batasan dan semantik-nya, yang berbeda dengan sistem file POSIX. Cloud Storage FUSE hanya boleh digunakan dalam kemampuannya.

Keterbatasan dan perbedaan dari sistem file POSIX

Daftar berikut menjelaskan batasan Cloud Storage FUSE:

  • Metadata: Cloud Storage FUSE tidak mentransfer metadata objek saat mengupload file ke Cloud Storage, kecuali untuk target mtime dan symlink. Artinya, Anda tidak dapat menetapkan metadata objek saat mengupload file menggunakan Cloud Storage FUSE. Jika perlu mempertahankan metadata objek, pertimbangkan untuk mengupload file menggunakan Google Cloud CLI, JSON API, atau konsol Google Cloud.
  • Konkurensi: Cloud Storage FUSE tidak memberikan kontrol konkurensi untuk beberapa penulisan ke file yang sama. Jika beberapa operasi tulis mencoba mengganti sebuah file, operasi tulis terakhir yang menang dan semua operasi tulis sebelumnya akan hilang. Tidak ada penggabungan, kontrol versi, atau notifikasi pengguna untuk timpaan berikutnya.
  • Penautan: Cloud Storage FUSE tidak mendukung hard link.
  • Penguncian file dan patching file: Cloud Storage FUSE tidak mendukung penguncian file atau patching file. Dengan demikian, Anda tidak boleh menyimpan repositori sistem kontrol versi di direktori pemasangan Cloud Storage FUSE karena sistem kontrol versi mengandalkan penguncian dan patching file. Selain itu, Anda tidak boleh menggunakan Cloud Storage FUSE sebagai pengganti file.
  • Semantik: Semantik di Cloud Storage FUSE berbeda dengan semantik di sistem file konvensional. Misalnya, metadata seperti waktu akses terakhir tidak didukung, dan beberapa operasi metadata seperti penggantian nama direktori tidak bersifat atomik, kecuali jika Anda menggunakan bucket dengan namespace hierarkis diaktifkan. Untuk mengetahui daftar perbedaan antara semantik Cloud Storage FUSE dan semantik sistem file konvensional, lihat Semantik dalam dokumentasi GitHub Cloud Storage FUSE. Untuk mempelajari cara Cloud Storage FUSE menyimpulkan direktori di Cloud Storage, lihat semantik direktori.
  • Workload yang menerapkan patching file (atau menimpa secara langsung): Cloud Storage FUSE hanya dapat menulis seluruh objek pada satu waktu ke Cloud Storage dan tidak menyediakan mekanisme untuk patching. Jika Anda mencoba mem-patch file, Cloud Storage FUSE akan mengupload ulang seluruh file. Satu-satunya pengecualian untuk perilaku ini adalah Anda dapat menambahkan konten ke akhir file yang berukuran 2 MB atau lebih besar. Di sana, Cloud Storage FUSE hanya akan mengupload ulang konten yang ditambahkan.
  • Akses: Otorisasi untuk file diatur oleh izin Cloud Storage. Kontrol akses bergaya POSIX tidak berfungsi.
  • Performa: Cloud Storage FUSE memiliki latensi yang jauh lebih tinggi daripada sistem file lokal. Oleh karena itu, Cloud Storage tidak boleh digunakan sebagai backend untuk menyimpan database. Throughput dapat dikurangi saat membaca atau menulis satu file kecil pada satu waktu. Menggunakan file yang lebih besar atau mentransfer beberapa file sekaligus akan membantu meningkatkan throughput.
  • Ketersediaan: Error sementara terkadang dapat terjadi saat Anda menggunakan Cloud Storage FUSE untuk mengakses Cloud Storage. Sebaiknya Anda mencoba lagi operasi yang gagal menggunakan strategi coba lagi.
  • Pembuatan versi objek: Cloud Storage FUSE tidak secara resmi mendukung penggunaan dengan bucket yang mengaktifkan pembuatan versi objek. Mencoba menggunakan Cloud Storage FUSE dengan bucket yang mengaktifkan pembuatan versi objek dapat menghasilkan perilaku yang tidak dapat diprediksi.
  • Transcoding file:

    Objek dengan content-encoding: gzip dalam metadata: Setiap objek tersebut dalam direktori yang dipasang dengan Cloud Storage FUSE tidak akan mengalami transcoding dekompresif. Sebagai gantinya, objek tetap dikompresi dengan cara yang sama seperti yang disimpan di bucket.

    Misalnya, file berukuran 1.000 byte, yang diupload ke bucket menggunakan perintah gcloud storage cp dengan flag --gzip-local, mungkin menjadi 60 byte (ukuran terkompresi yang sebenarnya bergantung pada konten dan implementasi gzip yang digunakan oleh gcloud CLI) sebagai objek Cloud Storage. Jika bucket dipasang menggunakan gcsfuse, dan file yang terkait dicantumkan atau dibaca dari direktori pemasangan, ukurannya akan ditampilkan sebagai 60 byte, dan kontennya adalah versi terkompresi dari konten asli yang berukuran 1.000 byte.

    Ini berbeda dengan download yang menggunakan gcloud storage cp gs://bucket/path /local/path yang menjalani transcoding dekompresi: dalam perintah gcloud, konten akan otomatis didekompresi selama download, dan konten asli yang tidak dikompresi akan ditayangkan.

  • Kebijakan retensi: Cloud Storage FUSE tidak mendukung penulisan ke bucket dengan kebijakan retensi. Jika Anda mencoba menulis ke bucket dengan kebijakan retensi, operasi tulis akan gagal.

    Cloud Storage FUSE mendukung pembacaan objek dari bucket dengan kebijakan retensi, tetapi bucket harus dipasang sebagai Read-Only dengan meneruskan flag -o RO selama pemasangan bucket.

  • Penyimpanan lokal: Objek yang baru atau dimodifikasi disimpan secara keseluruhan dalam file lokal sementara sampai objek tersebut ditutup atau disinkronkan. Saat menangani file berukuran besar, pastikan Anda memiliki kapasitas penyimpanan lokal yang cukup untuk salinan file sementara, terutama jika Anda menggunakan instance Compute Engine. Untuk mengetahui informasi selengkapnya, lihat README dalam dokumentasi GitHub Cloud Storage FUSE.
  • Batas pengendali file: Kernel Linux memiliki batas default 1.024 pengendali file terbuka. Saat menggunakan Cloud Storage FUSE sebagai server untuk menangani beberapa koneksi serentak, Anda mungkin melebihi batas ini. Untuk menghindari masalah, pastikan jumlah koneksi serentak ke satu host tetap di bawah batas, dan pertimbangkan untuk meningkatkan batas. Skenario yang memerlukan hal ini mencakup penggunaan mount FUSE Cloud Storage untuk menayangkan konten web, menghosting penyimpanan terpasang jaringan (NAS), atau menghosting server file transfer protocol (FTP). Saat menayangkan konten web di Cloud Run dari pemasangan Cloud Storage FUSE, permintaan serentak maksimum per instance dibatasi hingga kurang dari 1.000.
  • Batasan rsync: Latensi sistem file Cloud Storage FUSE memengaruhi rsync, yang hanya membaca dan menulis satu file pada satu waktu. Untuk mentransfer beberapa file ke atau dari bucket Anda secara paralel, gunakan Google Cloud CLI dengan menjalankan gcloud storage rsync. Untuk informasi selengkapnya, lihat dokumentasi rsync.
  • Batasan operasi daftar: Saat Anda membuat daftar semua objek di bucket yang terpasang, misalnya, dengan menjalankan ls, Cloud Storage FUSE akan memanggil Objek: daftar API di Cloud Storage. API akan memberi nomor halaman hasilnya, yang berarti Cloud Storage FUSE mungkin perlu melakukan beberapa panggilan, bergantung pada jumlah objek yang ada di bucket Anda, yang dapat membuat operasi daftar menjadi mahal dan lambat.

Masalah umum

Untuk mengetahui daftar masalah umum di Cloud Storage FUSE, lihat GitHub.

Mendapatkan dukungan

Anda bisa mendapatkan dukungan, mengirimkan pertanyaan umum, dan meminta fitur baru dengan menggunakan salah satu saluran dukungan resmi Google Cloud. Anda juga bisa mendapatkan dukungan dengan melaporkan masalah di GitHub.

Untuk solusi masalah yang sering terjadi, lihat Pemecahan masalah dalam dokumentasi GitHub Cloud Storage FUSE.

Langkah selanjutnya