全部产品
Search
文档中心

Object Storage Service:Kurangi Permintaan OSS dan Tingkatkan Kinerja Titik Pemasangan

更新时间:Nov 09, 2025

Saat menggunakan ossfs 2.0 untuk berinteraksi dengan OSS (Object Storage Service), mengoptimalkan jumlah permintaan metadata yang dikirim ke server OSS tidak hanya mengurangi biaya pemanggilan layanan tetapi juga meningkatkan kemampuan pemrosesan bersamaan sistem, serta kinerja baca/tulis titik pemasangan.

Prinsip dasar

ossfs 2.0 dibangun di atas kerangka FUSE (Filesystem in Userspace), yang mengubah operasi metadata sistem file menjadi permintaan OSS yang sesuai, memungkinkan akses ke sumber daya penyimpanan OSS melalui operasi sistem file.

Perintah

Aturan konversi antarmuka

lookup

Saat menjalankan operasi lookup atau stat dan cache metadata tidak valid, ossfs 2.0 akan terlebih dahulu mengirim permintaan GetObjectMeta ke OSS untuk mendapatkan informasi atribut objek dengan nama yang sama.

Jika permintaan GetObjectMeta mengembalikan respons 404 (menunjukkan objek tidak ada), maka akan mengirim permintaan ListObject(max-keys=1) lebih lanjut untuk menanyakan apakah objek folder virtual dengan nama yang sama ada.

stat

readdir

Saat menjalankan operasi readdir atau readdirplus, ossfs 2.0 akan mengirim permintaan ListObject berulang kali ke OSS.

Catatan bahwa ossfs 2.0 mengaktifkan fitur readdirplus secara default. Saat fitur ini diaktifkan, hasil dari permintaan ListObject akan digunakan untuk memperbarui informasi cache metadata untuk semua subitem dalam folder yang sesuai, sehingga secara efektif mengurangi jumlah permintaan metadata berikutnya untuk file anak.

readdirplus

Analisis skenario

Perbedaan signifikan terdapat antara mengakses file dalam sistem file dan mengakses objek dengan nama yang sama di OSS.

Metode akses file

OSS menggunakan metode akses top-down dari Direktori root untuk mengakses file. Sebagai contoh, untuk mendapatkan informasi atribut file objek yang terletak di jalur /dir/object, alur eksekusi perintah stat /dir/object adalah sebagai berikut:

  1. Pertama, lakukan operasi pada /dir, mengirim permintaan GetObjectMeta dir. Jika mengembalikan 404 Not Found, itu menunjukkan bahwa objek tidak ada, lalu permintaan ListObject (max-keys=1)dir/ dikirim. Jika mengembalikan 200 OK, itu menunjukkan bahwa folder virtual yang sesuai ada.

  2. Lakukan operasi pada /dir/object, mengirim permintaan GetObjectMeta dir/object. Jika mengembalikan 200 OK, informasi atribut objek berhasil diperoleh.

Berdasarkan analisis di atas, satu eksekusi perintah stat /dir/object akhirnya dikonversi menjadi dua permintaan GetObjectMeta dan satu permintaan ListObject. Selain itu, permintaan metadata sistem file dikonversi menjadi beberapa permintaan OSS, dan jumlahnya meningkat seiring kedalaman file, menyebabkan penurunan kinerja yang signifikan.

Dampak caching metadata file

Penting

ossfs 2.0 mengaktifkan caching metadata file secara default, dengan periode validitas cache metadata default selama 60 detik. Kapasitas cache metadata diimplementasikan berdasarkan API level rendah FUSE dan ditentukan oleh kernel sistem operasi kapan harus dievakuasi. Mesin dengan lebih banyak memori biasanya dapat menyimpan lebih banyak informasi metadata.

Berikut ini adalah contoh mendapatkan informasi atribut untuk 100 file anak di direktori /dir/ untuk menggambarkan dampak caching metadata file terhadap kinerja.

  • Tanpa caching metadata

    • Mengakses file dengan daftar file yang diketahui:

      Saat menjalankan perintah stat /dir/object-<i> dalam loop, setiap operasi stat akan dikonversi menjadi satu permintaan GetObjectMeta, akhirnya menghasilkan 100 permintaan GetObjectMeta yang dikirim ke OSS untuk mendapatkan atribut file, menghasilkan terlalu banyak permintaan metadata yang mempengaruhi kinerja.

    • Mengakses file dengan daftar file yang tidak diketahui:

      Saat menjalankan perintah ls, operasi ini akan dikonversi menjadi satu permintaan ListObject yang dikirim ke OSS untuk mendapatkan daftar file, lalu menjalankan perintah stat /dir/object-<i> dalam loop untuk mendapatkan atribut file berdasarkan daftar file yang diperoleh. Ini akan menghasilkan satu permintaan ListObject dan 100 permintaan GetObjectMeta yang dikirim ke OSS, menghasilkan terlalu banyak permintaan metadata yang mempengaruhi kinerja.

  • Dengan caching metadata

    • Mengakses file dengan daftar file yang diketahui:

      Saat menjalankan perintah stat /dir/object-<i> dalam loop, setiap operasi stat akan dikonversi menjadi satu permintaan GetObjectMeta, akhirnya menghasilkan 100 permintaan GetObjectMeta. Permintaan 100 ini akan langsung mengenai cache metadata lokal untuk mendapatkan atribut file dalam periode validitas cache, sehingga secara efektif mengurangi jumlah permintaan yang dikirim ke OSS.

    • Mengakses file dengan daftar file yang tidak diketahui:

      Saat menjalankan perintah ls, operasi ini akan dikonversi menjadi satu permintaan ListObject yang dikirim ke OSS sambil memperbarui cache metadata lokal. Setelah menyelesaikan pembaruan cache, saat menjalankan perintah stat /dir/object-<i> dalam loop, karena metadata sudah ada di cache lokal, tidak ada permintaan OSS tambahan yang akan dikirim.

Berdasarkan analisis di atas, mekanisme caching metadata dapat secara efektif mengurangi jumlah permintaan berulang yang dikirim ke OSS. Saat melintasi semua file dalam folder, menggunakan ls dapat memuat cache metadata terlebih dahulu, sehingga secara efektif mengurangi permintaan OSS berikutnya untuk file anak.

Metode optimisasi

Anda dapat mengurangi jumlah permintaan metadata yang dikirim ke OSS dan meningkatkan kinerja keseluruhan dengan cara-cara berikut:

Perpanjang waktu cache metadata

Jika data yang dibaca tidak akan dimodifikasi setelah diunggah ke OSS, atau jika interval modifikasi jauh lebih lama daripada waktu cache metadata, Anda dapat mengonfigurasi periode validitas cache metadata yang lebih lama melalui opsi pemasangan attr_timeout untuk mengurangi permintaan metadata berulang dan meningkatkan kinerja. Contoh konfigurasi opsi pemasangan adalah sebagai berikut.

  • Skema bisnis: Dalam skenario anotasi data, sistem membaca batch data mentah yang sebelumnya dikumpulkan, memprosesnya, lalu menghasilkan batch data baru. Dalam skenario ini, data mentah tidak akan dimodifikasi setelah diunggah ke OSS.

  • Konfigurasi pemasangan: Dalam file konfigurasi ossfs 2.0, konfigurasikan periode validitas cache metadata menjadi 7200 detik.

    # Bucket Endpoint (region node)
    --oss_endpoint=https://oss-cn-hangzhou-internal.aliyuncs.com
    
    # Nama Bucket
    --oss_bucket=bucketName
    
    # Periode validitas cache metadata
    --attr_timeout=7200
    
    # Access keys AccessKey ID dan AccessKey Secret (opsional untuk ossfs 2.0.1 dan versi berikutnya)
    --oss_access_key_id=LTAI******************
    --oss_access_key_secret=8CE4**********************

Operasikan setelah mendapatkan daftar file

Saat melintasi semua file dalam direktori, Anda dapat terlebih dahulu menggunakan perintah ls atau mengirim permintaan ListObject untuk memuat metadata semua file dalam folder target ke dalam cache metadata lokal, dikombinasikan dengan periode validitas cache yang lebih lama, untuk mengurangi permintaan metadata berulang dan pada akhirnya meningkatkan kinerja keseluruhan.

Perintah ls dapat diganti dengan program bahasa tingkat tinggi apa pun yang digunakan untuk membaca isi folder. Berikut ini adalah contoh umum untuk mendapatkan daftar file di direktori /mnt/data/.

Python

os.listdir('/mnt/data/')

Go

entries, err := os.ReadDir("/mnt/data/")

C

dir = opendir("/mnt/data/");
if (dir != NULL) {
  struct dirent *entry;
  while((entry = readdir(dir)) != NULL) {}
  closedir(dir);
}

Gunakan cache negatif untuk mempercepat pembuatan file

Untuk membuat file baru, sistem file menjalankan dua panggilan sistem secara berurutan: lookup dan create.

  1. Operasi lookup menentukan apakah file yang sesuai ada. Di ossfs 2.0, operasi ini diurai menjadi permintaan GetObjectMeta dan permintaan ListObjects.

  2. Jika kesalahan 404 Not Found dikembalikan, ossfs membuat file menggunakan operasi create. Saat ossfs 2.0 menjalankan create, ia juga mengirim permintaan GetObjectMeta dan permintaan ListObjects untuk menanyakan apakah file ada di OSS.

Oleh karena itu, proses pembuatan file baru melibatkan empat operasi kueri metadata OSS.

ossfs 2.0 mendukung caching permintaan `404` yang dikembalikan oleh OSS untuk mengurangi permintaan duplikat berikutnya. Untuk mengaktifkan fitur ini, tentukan opsi berikut saat Anda memasang sistem file:

  • --oss_negative_cache_timeout=30 (Nilai default adalah 0 detik. Kami sarankan Anda mengatur nilai ini kurang dari nilai attr_timeout.)

  • --oss_negative_cache_size=10000 (Nilai default: 10000)

Saat cache negatif OSS diaktifkan, permintaan 404 dari operasi lookup untuk file baru disimpan dalam cache. Akibatnya, kueri berikutnya selama operasi create mengenai cache negatif, dan tidak ada permintaan yang dikirim ke OSS. Ini mengurangi jumlah permintaan OSS untuk proses pembuatan file dari empat menjadi dua.

Penting

Setelah Anda mengaktifkan cache negatif OSS, jika entri cache 404 untuk file bernama object-A disimpan, file tersebut hanya akan terlihat di titik pemasangan setelah entri cache kedaluwarsa, meskipun Anda segera membuat object-A di OSS. Periode validitas cache ditentukan oleh oss_negative_cache_timeout. Kami tidak merekomendasikan Anda mengaktifkan fitur ini dalam skenario yang memerlukan konsistensi data tinggi.

Perbandingan kinerja

Metode pengujian: Di Instance ECS di wilayah yang sama dengan Bucket OSS target, gunakan alat ossfs 2.0 untuk memasang Bucket OSS melalui endpoint internal wilayah yang sama dengan caching metadata diaktifkan, lalu baca metadata dari 10.000 file di direktori Bucket yang dipasang.

Hasil Pengujian

Operasi

Waktu yang diperlukan

Tanpa memuat cache metadata terlebih dahulu (membaca metadata file dalam folder tanpa menjalankan perintah ls terlebih dahulu)

111 detik

Dengan memuat cache metadata terlebih dahulu (menjalankan perintah ls terlebih dahulu, lalu membaca metadata file dalam folder)

18 detik

Kesimpulan Pengujian: Dalam skenario dengan banyak pembacaan metadata file, memuat cache metadata terlebih dahulu dikombinasikan dengan periode validitas cache metadata yang masuk akal dapat secara signifikan mengurangi jumlah permintaan metadata yang dikirim ke OSS, sehingga meningkatkan kinerja keseluruhan.