全部产品
Search
文档中心

Container Service for Kubernetes:Fungsi baru ossfs 1.0 dan seterusnya serta pembandingan kinerja ossfs

更新时间:Jul 02, 2025

Seiring dengan peningkatan iteratif pada komponen Container Storage Interface (CSI), versi ossfs 1.0 perlu diperbarui ke versi tertentu untuk mendukung fitur baru. Jika klaster Anda menggunakan CSI 1.30.1 atau yang lebih baru, Anda dapat mengaktifkan gerbang fitur tertentu untuk meningkatkan ossfs ke versi 1.91 atau yang lebih baru demi peningkatan kinerja sistem file. Topik ini menjelaskan fitur baru dalam versi 1.91 dan seterusnya dari ossfs 1.0 serta memberikan perbandingan kinerja benchmark. Fitur baru tersebut mencakup optimasi operasi Antarmuka Sistem Operasi Portabel (POSIX), optimasi readdir, dan pembacaan langsung.

Catatan

Jika Anda memiliki persyaratan tinggi terhadap sistem file, kami menyarankan Anda memperbarui versi ossfs 1.0 menjadi 1.91 atau yang lebih baru. Untuk informasi lebih lanjut, lihat Ubah versi ossfs 1.0 menjadi 1.91 atau yang lebih baru.

Fungsi baru versi 1.91 dan seterusnya

Dibandingkan dengan versi 1.88.x dari ossfs 1.0, perubahan fitur berikut diterapkan pada versi 1.91 dan seterusnya. Bagian ini hanya memberikan deskripsi dasar tentang perubahan fitur. Untuk informasi lebih lanjut tentang perubahan fitur dan catatan rilis untuk versi 1.91 dan seterusnya, lihat changelog ossfs.

Penting

Fitur ossfs hanya tersedia pada node Elastic Compute Service (ECS).

Optimasi operasi dan perbaikan masalah untuk POSIX

  • Volume OSS dapat dipasang ke subpath yang tidak ada di Bucket OSS.

  • File berukuran nol byte tidak lagi dapat diunggah saat Anda membuat objek di OSS. Masalah bahwa kesalahan EntityTooSmall kadang-kadang terjadi saat menggunakan unggah multipart telah diperbaiki. Operasi tambahan juga ditingkatkan.

  • Nilai default parameter tertentu dimodifikasi berdasarkan versi sumber terbuka ossfs dan hasil pengujian kinerja.

    Parameter

    Deskripsi

    Nilai default untuk versi 1.88.x

    Nilai default untuk versi 1.91 dan seterusnya

    stat_cache_expire

    Masa berlaku metadata. Satuan: detik.

    -1 (Metadata tidak pernah kedaluwarsa)

    900

    multipart_threshold

    Ambang ukuran file yang dapat diunggah menggunakan unggah multipart. Satuan: MB.

    5 x 1024

    25

    max_dirty_data

    Ambang ukuran untuk memaksa menyimpan data kotor ke disk. Satuan: MB.

    -1 (Data kotor tidak dipaksa disimpan)

    5120

    Untuk memaksimalkan kinerja versi 1.91 dan seterusnya, parameter berikut kompatibel dengan versi 1.88.x dan memiliki nilai default berbeda dari ossfs sumber terbuka.

    Parameter

    Deskripsi

    Nilai default untuk versi sumber terbuka 1.91 dan seterusnya

    Nilai default untuk versi 1.91 dan seterusnya

    multipart_size

    Ukuran bagian saat menggunakan unggah multipart. Satuan: MB.

    10

    30

    parallel_count

    Jumlah bagian yang dapat diunggah secara bersamaan.

    5

    20

    Jika Anda ingin melakukan rollback atau memodifikasi parameter sebelumnya di versi 1.91 atau yang lebih baru dari ossfs 1.0, modifikasi parameter otherOpts di volume persisten (PV) yang dipasang.

Optimasi readdir

Fitur optimasi readdir diperkenalkan untuk meningkatkan efisiensi penelusuran sistem file.

Untuk mendukung operasi Antarmuka Sistem Operasi Portabel (POSIX) seperti autentikasi dan eksekusi perintah chmod saat memasang volume OSS, sistem memanggil banyak operasi HeadObject untuk menanyakan metadata semua objek di jalur pemasangan Bucket OSS, seperti izin, waktu modifikasi, pengenal pengguna (UID), dan pengenal grup (GID) dari objek. Jika ada sejumlah besar file di beberapa jalur, kinerja ossfs mungkin terpengaruh secara negatif.

Setelah Anda mengaktifkan fitur optimasi readdir, sistem mengabaikan metadata sebelumnya untuk mengoptimalkan kinerja readdir. Perhatikan hal-hal berikut:

  • Perintah chmod atau chown tidak berlaku.

  • Kesalahan mungkin terjadi saat Anda menggunakan tautan simbolis untuk mengakses objek. ossfs tidak mendukung tautan keras.

Tabel berikut menjelaskan parameter yang diperlukan untuk mengaktifkan fitur optimasi readdir.

Parameter

Deskripsi

Cara mengaktifkan

Nilai default untuk versi 1.91 dan seterusnya

readdir_optimize

Menentukan apakah akan mengaktifkan fitur optimasi readdir.

Anda dapat menentukan -o readdir_optimize untuk mengaktifkan fitur optimasi readdir tanpa menentukan nilai untuk parameter tersebut.

disable

symlink_in_meta

Menentukan apakah akan mengaktifkan pencatatan metadata untuk tautan simbolis. Jika Anda mengaktifkan fitur ini, metadata tautan simbolis dicatat untuk memastikan bahwa tautan simbolis ditampilkan sesuai harapan.

Anda dapat menentukan -o symlink_in_meta untuk mengaktifkan fitur ini tanpa menentukan nilai untuk parameter tersebut.

disable

Pembacaan langsung

Fitur pembacaan langsung diperkenalkan untuk meningkatkan kinerja pembacaan berurutan (skenario baca saja) yang dilakukan pada file besar.

Untuk mendukung penulisan dan pembacaan acak saat memasang volume OSS, ossfs mengunduh file dari server OSS ke disk lalu membaca data di disk. Dalam kasus ini, kinerja pembacaan ossfs dibatasi oleh I/O disk.

Fitur pembacaan langsung mempramuat data dari OSS ke memori dan data yang dipramuat tidak segera disimpan ke disk. Dengan cara ini, ossfs dapat langsung membaca data dari memori, yang meningkatkan kinerja pembacaan berurutan. Perhatikan hal-hal berikut:

  • Kami menyarankan Anda menggunakan fitur ini hanya untuk melakukan pembacaan berurutan (skenario baca saja). Jika Anda melakukan operasi lain, batasan berikut berlaku:

    • Jika Anda melakukan pembacaan acak, ossfs mempramuat data lagi. Sejumlah besar pembacaan acak dapat mengurangi kinerja pembacaan ossfs.

    • Jika Anda melakukan penulisan, data disimpan dari memori ke disk untuk memastikan konsistensi data.

  • Setelah Anda mengaktifkan fitur pembacaan langsung, parameter use_cache tidak berlaku.

  • Saat data dipramuat dari OSS ke memori, penggunaan memori mungkin meningkat. Anda dapat merujuk ke tabel berikut untuk mengonfigurasi parameter direct_read_prefetch_limit untuk membatasi penggunaan memori ossfs. Saat penggunaan memori ossfs mencapai batas atas, ossfs berhenti mempramuat data. Dalam kasus ini, kinerja pembacaan ossfs dibatasi oleh I/O jaringan.

Tabel berikut menjelaskan parameter yang diperlukan untuk mengaktifkan fitur pembacaan langsung.

Parameter

Deskripsi

Nilai default untuk versi 1.91 dan seterusnya

direct_read

Menentukan apakah akan mengaktifkan fitur pembacaan langsung. Anda dapat menentukan -o direct_read untuk mengaktifkan fitur pembacaan langsung tanpa menentukan nilai untuk parameter tersebut.

disable

direct_read_prefetch_limit

Ukuran maksimum memori yang dapat digunakan untuk menyimpan data yang dipramuat oleh proses ossfs. Satuan: MB.

1024 (Minimum: 128)

Jika Anda ingin meningkatkan kinerja pembacaan berurutan menggunakan metode selain pramuat, Anda dapat mengonfigurasi parameter -o direct_read_prefetch_chunks=0, yang memungkinkan ossfs membaca data dari server OSS. Dalam kasus ini, kinerja pembacaan ossfs dibatasi oleh I/O jaringan.

Praktik terbaik untuk mengubah ossfs 1.0 menjadi versi 1.91 atau yang lebih baru

  • Jika ada sejumlah besar objek di server OSS dan layanan Anda tidak memerlukan metadata objek, kami menyarankan Anda memperbarui ossfs 1.0 ke versi 1.91 atau yang lebih baru dan mengonfigurasi parameter -o readdir_optimize untuk ossfs. Jika versioning diaktifkan untuk Bucket OSS, kami menyarankan Anda juga mengonfigurasi parameter -o listobjectsv2 untuk ossfs.

  • Dalam skenario baca/tulis, kami menyarankan Anda merujuk Praktik terbaik untuk pemisahan baca/tulis OSS untuk memisahkan baca dan tulis untuk OSS. Jika Anda tidak memisahkan baca dan tulis, kami menyarankan Anda memperbarui ossfs menjadi versi 1.91 atau yang lebih baru untuk memperbaiki masalah bahwa kesalahan EntityTooSmall kadang-kadang terjadi saat Anda menggunakan unggah multipart. Untuk memastikan konsistensi data, kami menyarankan Anda juga mengonfigurasi parameter -o max_stat_cache_size=0 untuk ossfs.

  • Skema baca saja

    • Jika Anda tidak perlu melakukan pembacaan berurutan (skenario baca saja) pada file besar, kami menyarankan Anda mengonfigurasi parameter -o direct_read untuk mengaktifkan fitur pembacaan langsung.

    • Jika file dibaca secara sering, kami menyarankan Anda mengonfigurasi parameter berikut untuk menggunakan cache lokal untuk mempercepat pembacaan:

      • Konfigurasikan parameter -o kernel_cache untuk menggunakan page cache.

      • Konfigurasikan parameter -o use_cache=/path/to/cache untuk menggunakan disk cache.

Perbandingan kinerja antara versi 1.88.x dan versi 1.91 dan seterusnya

Penting

Hasil benchmarking mungkin bervariasi berdasarkan alat benchmarking yang digunakan. Dalam bagian ini, sysbench atau skrip kustom digunakan untuk benchmarking ossfs.

Perbandingan throughput

Dalam contoh ini, fitur optimasi readdir dan pembacaan langsung dinonaktifkan dan node tipe ecs.g7.xlarge digunakan. Tingkat performa (PL) disk sistem node adalah 0. Sysbench digunakan untuk membandingkan versi 1.91 dan seterusnya dengan versi 1.88.x dengan menguji kinerja pembacaan berurutan, penulisan berurutan, pembacaan acak, dan penulisan acak pada 128 file masing-masing berukuran 8 MiB. Gambar berikut menunjukkan hasil benchmarking.

Gambar tersebut menunjukkan hasil perbandingan berikut saat fitur optimasi readdir dan pembacaan langsung dinonaktifkan:

  • Versi 1.88.x memberikan throughput lebih tinggi untuk pembuatan file dan pembacaan berurutan.

  • Versi 1.91 dan seterusnya memberikan throughput lebih tinggi untuk pembacaan berurutan, pembacaan acak, dan penulisan acak.

Perbandingan kinerja perintah ls dan find setelah optimasi readdir diaktifkan

Aktifkan optimasi readdir, jalankan perintah ls dan find pada 1.000 file lalu catat latensi setiap eksekusi. Gambar berikut menunjukkan hasil benchmarking.

Gambar tersebut menunjukkan hasil perbandingan berikut antara versi 1.88.x, versi 1.91 dan seterusnya dengan optimasi readdir dinonaktifkan, dan versi 1.91 dan seterusnya dengan optimasi readdir diaktifkan:

  • Latensi pembacaan file perintah ls di versi 1.91 dan seterusnya dengan optimasi readdir diaktifkan, 74,8% lebih rendah daripada di versi 1.88.x, dan 74,3% lebih rendah daripada di versi 1.91 dan seterusnya dengan optimasi readdir dinonaktifkan. Kinerja telah meningkat menjadi 4,0 kali dan 3,9 kali dari semula, masing-masing.

  • Latensi pembacaan file perintah find di versi 1.91 dan seterusnya dengan optimasi readdir diaktifkan, 58,8% lebih rendah daripada di versi 1.88.x, dan juga 58,8% lebih rendah daripada di versi 1.91 dan seterusnya dengan optimasi readdir dinonaktifkan. Kinerja telah meningkat menjadi 2,4 kali dan 2,4 kali dari semula, masing-masing.

Perbandingan kinerja pembacaan berurutan file besar setelah pembacaan langsung diaktifkan

Gunakan ossfs dengan pembacaan langsung dinonaktifkan dan ossfs dengan pembacaan langsung diaktifkan untuk secara bersamaan melakukan pembacaan berurutan pada 10 file masing-masing berukuran 10 GB. Lalu, catat latensi, penggunaan ruang disk maksimum, dan penggunaan memori maksimum dari versi ossfs yang berbeda. Gambar berikut menunjukkan hasilnya.

Catatan

Penggunaan memori maksimum mengacu pada jumlah memori yang digunakan oleh semua proses ossfs, termasuk jumlah memori yang digunakan oleh data yang dipramuat dan memori yang digunakan oleh fitur langsung untuk tujuan lain.

Gambar tersebut menunjukkan hasil perbandingan berikut antara versi 1.88.x, versi 1.91 dan seterusnya dengan pembacaan langsung dinonaktifkan, dan versi 1.91 dan seterusnya dengan pembacaan langsung diaktifkan:

  • Latensi pembacaan file besar versi 1.91 dan seterusnya dengan pembacaan langsung diaktifkan 85,3% lebih sedikit daripada versi 1.88.x, dan 79% lebih sedikit daripada versi 1.91 dan seterusnya dengan pembacaan langsung dinonaktifkan.

  • Penggunaan ruang disk maksimum versi 1.91 dan seterusnya dengan pembacaan langsung diaktifkan adalah 0, yang lebih rendah daripada versi 1.88.x dan versi 1.91 dan seterusnya dengan pembacaan langsung dinonaktifkan.

  • Penggunaan memori maksimum versi 1.91 dan seterusnya dengan pembacaan langsung diaktifkan sedikit lebih besar daripada versi 1.88.x dan versi 1.91 dan seterusnya dengan pembacaan langsung dinonaktifkan. Peningkatan penggunaan memori ini memungkinkan versi 1.91 dan seterusnya dengan pembacaan langsung diaktifkan untuk memberikan penggunaan ruang disk maksimum sebesar 0.

Cara benchmarking ossfs 1.0

Benchmarking kinerja ossfs 1.0 dapat dilakukan di dalam kontainer atau pada Instance ECS. Contoh-contoh sebelumnya menggunakan sysbench atau skrip kustom untuk benchmarking ossfs. Anda dapat memperbarui ossfs 1.0 menjadi versi 1.91 atau yang lebih baru lalu benchmarking versi 1.91 atau yang lebih baru di lingkungan pengujian. Bagian ini menjelaskan cara benchmarking ossfs 1.0 di lingkungan pengujian berbasis kontainer.

Prosedur

  1. Buat volume OSS dan persistent volume claim (PVC). Kami menyarankan Anda membuat Bucket OSS baru dan subpath baru di bucket tersebut. Untuk informasi lebih lanjut, lihat Pasang volume ossfs 1.0 yang disediakan secara statis.

  2. Buat file sysbench.yaml berdasarkan blok kode berikut. File ini digunakan untuk membuat aplikasi sysbench tempat PVC yang dibuat pada langkah sebelumnya dipasang.

    Tampilkan kode sampel sysbench.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sysbench
      labels:
        app: sysbench
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sysbench
      template:
        metadata:
          labels:
            app: sysbench
        spec:
          containers:
          - name: sysbench
            image: registry.cn-beijing.aliyuncs.com/tool-sys/tf-train-demo:sysbench-sleep
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-oss
                mountPath: "/data"
            livenessProbe:
              exec:
                command:
                - sh
                - -c
                - cd /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                claimName: pvc-oss
  3. Jalankan perintah berikut untuk menerapkan aplikasi sysbench:

    kubectl apply -f sysbench.yaml
  4. Masuk ke kontainer sysbench, dan jalankan perintah yang tercantum dalam tabel berikut di jalur pemasangan untuk benchmarking throughput baca/tulis.

    Catatan
    • Modifikasi nilai parameter dalam perintah berdasarkan spesifikasi node aktual atau kebutuhan bisnis Anda.

    • Jika Anda ingin melakukan tes berturut-turut, kami menyarankan Anda menyiapkan file tes baru untuk tes baru untuk menghilangkan pengaruh cache data terhadap hasil tes.

    Operasi

    Perintah

    Siapkan file tes

    sysbench --num-threads=2 --max-requests=0 --max-time=120 --file-num=128 --file-block-size=16384 --test=fileio --file-total-size=1G --file-test-mode=rndrw prepare

    Uji I/O penulisan berurutan

    sysbench --num-threads=2 --max-requests=0 --max-time=120 --file-num=128 --file-block-size=16384 --test=fileio --file-total-size=1G --file-test-mode=seqwr --file-fsync-freq=0 run

    Uji I/O pembacaan berurutan

    sysbench --num-threads=2 --max-requests=0 --max-time=120 --file-num=128 --file-block-size=16384 --test=fileio --file-total-size=1G --file-test-mode=seqrd --file-fsync-freq=0 run

    Uji I/O pembacaan/tulisan acak

    sysbench --num-threads=2 --max-requests=0 --max-time=120 --file-num=128 --file-block-size=16384 --test=fileio --file-total-size=1G --file-test-mode=rndrw --file-fsync-freq=0 run

    Hapus file tes

    sysbench --test=fileio --file-total-size=1G cleanup 

Apa yang harus dilakukan selanjutnya

  • Anda dapat melakukan benchmarking berbagai versi ossfs menggunakan alat benchmarking MySQL yang disediakan oleh sysbench.

  • Anda juga dapat menguji fitur optimasi readdir dan pembacaan langsung di lingkungan pengujian sebelumnya dengan menjalankan perintah ls dan find atau dengan secara bersamaan melakukan pembacaan berurutan.