Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:New features of ossfs 1.0 and later and ossfs performance benchmarking

Son Güncelleme:Oct 06, 2026

ossfs 1.91 ve sonraki sürümler, 1.88.x sürümüne kıyasla üç performans iyileştirmesi sunar: POSIX işlemi optimizasyonları, dizin okuma (readdir) optimizasyonu ve doğrudan okuma (direct read). Kümenizde Container Storage Interface (CSI) 1.30.1 veya sonraki bir sürüm kullanılıyorsa ilgili özellik kapılarını (feature gates) etkinleştirerek ossfs'i yükseltebilirsiniz.

ossfs özellikleri yalnızca Elastic Compute Service (ECS) düğümlerinde kullanılabilir.

Yükseltme için bkz. ossfs 1.91 veya sonraki bir sürüme geçiş.

1.88.x'ten 1.91'e yapılan değişiklikler

Aşağıdaki bölümlerde ossfs 1.91 ve sonraki sürümlerdeki özellik değişiklikleri açıklanmaktadır. Tam sürüm notları için bkz. ossfs değişiklik günlüğü.

POSIX işlemi düzeltmeleri ve varsayılan parametreler

ossfs 1.91 çeşitli düzeltmeler ve varsayılan değer güncellemeleri içerir:

  • OSS paketleri artık OSS paketlerinde bulunmayan alt yollara bağlanabilir.

  • Nesne oluştururken sıfır baytlık dosyalar artık yüklenmez. Çok parçalı yükleme sırasında zaman zaman ortaya çıkan EntityTooSmall hatası giderilmiştir. Ekleme işlemleri iyileştirilmiştir.

  • Varsayılan parametre değerleri upstream ossfs ve performans karşılaştırma sonuçlarına göre güncellenmiştir.

Aşağıdaki tabloda 1.88.x ile 1.91 arasında değişen varsayılan parametreler gösterilmektedir:

Parametre Açıklama 1.88.x'teki Varsayılan Değer 1.91+ Sürümündeki Varsayılan Değer
stat_cache_expire Meta veri önbelleği TTL'si. Birim: saniye. -1 (süresiz) 900
multipart_threshold Çok parçalı yükleme için dosya boyutu eşiği. Birim: MB. 5 x 1024 25
max_dirty_data Diskte zorunlu flush işlemi için kirli veri boyutu eşiği. Birim: MB. -1 (asla flush edilmez) 5120

Aşağıdaki parametreler aynı performans seviyesini korumak amacıyla açık kaynaklı ossfs 1.91 sürümünden farklı olarak 1.88.x ile aynı varsayılan değerleri korur:

Parametre Açıklama Açık Kaynaklı 1.91+ Sürümündeki Varsayılan Değer Alibaba Cloud 1.91+ Sürümündeki Varsayılan Değer
multipart_size Çok parçalı yükleme için parça boyutu. Birim: MB. 10 30
parallel_count Eş zamanlı olarak yüklenen parça sayısı. 5 20

Bu parametrelerden herhangi birini değiştirmek için PV'nizdeki otherOpts alanını güncelleyin.

Dizin okuma (readdir) optimizasyonu

Bir OSS paketini bağlarken ossfs izinler, değiştirilme zamanı, UID'ler ve GID'ler gibi meta verileri almak için bağlı yoldaki her nesne için HeadObject çağrısı yapar. Çok sayıda nesne içeren yollarda bu HeadObject çağrıları ls ve find gibi dizin tarama işlemlerini önemli ölçüde yavaşlatabilir.

Dizin okuma optimizasyonu özelliği bu HeadObject çağrılarını atlayarak dizin işlemlerindeki gecikme süresini azaltır. Bu özelliği etkinleştirmeden önce aşağıdaki ödünleşimleri göz önünde bulundurun:

  • chmod ve chown komutları etkisiz hale gelir.

  • Sembolik bağlantılar beklenen şekilde çalışmayabilir. Sabit bağlantılar desteklenmez.

Aşağıdaki tabloda dizin okuma optimizasyonu özelliğine ait parametreler açıklanmaktadır:

Parametre Açıklama Varsayılan
readdir_optimize Dizin okuma optimizasyonu özelliğini etkinleştirir. -o readdir_optimize ile etkinleştirin (değer gerekmez). Devre dışı
symlink_in_meta Sembolik bağlantıların doğru görüntülenmesi için sembolik bağlantı meta verilerini kaydeder. -o symlink_in_meta ile etkinleştirin (değer gerekmez). Devre dışı

Doğrudan okuma (Direct read)

Doğrudan okuma özelliği büyük dosyalardaki ardışık okuma iş yükleri için tasarlanmıştır. Doğrudan okuma olmadan ossfs dosyaları okumadan önce OSS'den diske indirir; bu nedenle okuma aktarım hızı disk G/Ç ile sınırlıdır. Doğrudan okuma ile ossfs verileri OSS'den doğrudan belleğe önceden getirir (prefetch) ve buradan okur; böylece disk G/Ç darboğazı ortadan kalkar.

Doğrudan okumayı etkinleştirmeden önce aşağıdaki sınırlamaları dikkate alın:

  • Yalnızca ardışık okumalar için kullanın. Rastgele okumalar ossfs'in önceden getirme penceresini yeniden başlatmasına neden olur ve bu durum aktarım hızını düşürür.

  • Yazma işlemleri veri tutarlılığını korumak için belleği diske flush eder.

  • Doğrudan okumayı etkinleştirdikten sonra use_cache parametresi etkisiz hale gelir.

Aşağıdaki tabloda doğrudan okuma özelliğine ait parametreler açıklanmaktadır:

Parametre Açıklama Varsayılan
direct_read Doğrudan okuma özelliğini etkinleştirir. -o direct_read ile etkinleştirin (değer gerekmez). Devre dışı
direct_read_prefetch_limit Tüm ossfs süreçlerinde önceden getirilen veriler için maksimum bellek. Birim: MB. 1024 (minimum: 128)

Önceden getirilen veriler direct_read_prefetch_limit sınırına ulaştığında ossfs önceden getirmeyi durdurur ve okuma aktarım hızı ağ G/Ç hızına geri döner. Bellek önceden getirmeyi tamamen devre dışı bırakmak ve doğrudan OSS'den okumak için -o direct_read_prefetch_chunks=0 ayarlayın.

Okuma yapılandırması seçimi

İş yükünüz için doğru yapılandırmayı seçmek üzere aşağıdaki tabloyu kullanın:

İş Yükü Önerilen Yapılandırma Neden
Büyük dosyalarda tek seferlik ardışık okuma direct_read özelliğini etkinleştirin (-o direct_read) Verileri belleğe önceden getirir, disk G/Ç'yi ortadan kaldırır
Aynı düğümden tekrar tekrar okunan küçük veya orta boyutlu dosyalar Kernel sayfa önbelleğini etkinleştirin (-o kernel_cache) Okumalar arasında OS sayfa önbelleğini yeniden kullanır
Önbelleğin süreç yeniden başlatmalarında kalıcı olması gereken, tekrar tekrar okunan dosyalar Disk önbelleğini etkinleştirin (-o use_cache=/path/to/cache) Yeniden başlatmalarda kalıcıdır; sayfa önbelleğinden daha büyük kapasite sunar
Çok sayıda nesne içeren ve hizmetlerin nesne meta verilerine ihtiyaç duymadığı durumlar readdir_optimize özelliğini etkinleştirin (-o readdir_optimize) Dizin taramasından nesne başına HeadObject çağrılarını kaldırır
direct_read ve use_cache birbirini dışlar. direct_read etkinleştirildiğinde use_cache etkisiz hale gelir.

En iyi uygulamalar

Okuma/yazma senaryoları

En iyi performans için okuma ve yazma işlemlerini ayrı OSS uç noktalarında ayırın. Bkz. OSS okuma/yazma ayrımı için en iyi uygulamalar.

Ayırma mümkün değilse EntityTooSmall çok parçalı yükleme hatasını gidermek için ossfs 1.91 veya sonraki bir sürüme yükseltin. Veri tutarlılığını sağlamak için otherOpts alanına -o max_stat_cache_size=0 ekleyin.

Salt okunur senaryolar

Bir önbellekleme stratejisi seçmek için aşağıdaki kılavuzu kullanın:

  • Doğrudan okuma (-o direct_read): Verilerin tekrar erişilmediği, büyük dosyalarda tek seferlik ardışık okumalar için kullanın. Verileri belleğe önceden getirerek disk G/Ç'yi ortadan kaldırır.

  • Kernel sayfa önbelleği (-o kernel_cache): Aynı düğümden tekrar tekrar okunan dosyalar için kullanın. Disk yazma ek yükü olmadan okumalar arasında önbelleğe alınan verileri yeniden kullanır.

  • Disk önbelleği (-o use_cache=/path/to/cache): Önbelleğin süreç yeniden başlatmalarında kalıcı olması gerektiği veya mevcut belleği aşan durumlar için tekrar tekrar okunan dosyalarda kullanın.

Dizin ağırlıklı iş yükleri

OSS paketinde çok sayıda nesne varsa ve hizmetleriniz nesne meta verilerine ihtiyaç duymuyorsa -o readdir_optimize özelliğini etkinleştirin. OSS paketi için sürüm oluşturma etkinleştirilmişse ayrıca -o listobjectsv2 ekleyin.

Performans karşılaştırmaları

Aşağıdaki sonuçlar Sysbench veya özel betikler kullanılarak elde edilmiştir. Sonuçlar kullanılan araca ve ortama göre değişebilir.

Önemli

Tüm karşılaştırmalar PL0 sistem diskine sahip bir ecs.g7.xlarge düğümü kullanılarak gerçekleştirilmiştir.

Aktarım hızı (dizin okuma optimizasyonu ve doğrudan okuma devre dışı)

Sysbench 128 adet 8 MiB'lik dosya üzerinde ardışık okuma, ardışık yazma, rastgele okuma ve rastgele yazma testleri gerçekleştirir. 1.88.x ile karşılaştırıldığında:

  • ossfs 1.88.x dosya oluşturma ve ardışık okuma işlemlerinde daha yüksek aktarım hızı sağlar.

  • ossfs 1.91 ve sonraki sürümler ardışık okuma, rastgele okuma ve rastgele yazma işlemlerinde daha yüksek aktarım hızı sağlar.

image

Dizin okuma optimizasyonu etkinleştirildikten sonra dizin tarama gecikme süresi

Test 1.000 dosya üzerinde ls ve find komutlarını çalıştırır ve her çalıştırma için gecikme süresini kaydeder. ossfs 1.88.x ve dizin okuma optimizasyonu devre dışı olan ossfs 1.91 ile karşılaştırıldığında:

  • ls gecikme süresi 1.88.x'e göre %74,8 ve dizin okuma optimizasyonu devre dışı olan 1.91'e göre %74,3 daha düşüktür; bu da sırasıyla 4,0 kat ve 3,9 kat iyileştirme anlamına gelir.

  • find gecikme süresi hem 1.88.x hem de dizin okuma optimizasyonu devre dışı olan 1.91'e göre %58,8 daha düşüktür; her iki durumda da 2,4 kat iyileştirme sağlar.

image

Doğrudan okuma etkinleştirildikten sonra büyük dosya ardışık okuma gecikme süresi

Test eş zamanlı olarak 10 adet 10 GiB'lik dosyayı okur ve gecikme süresini, peak disk kullanımını ve peak bellek kullanımını kaydeder.

Peak bellek kullanımı önceden getirilen veriler ve diğer doğrudan okuma ek yükleri dahil olmak üzere tüm ossfs süreçlerini kapsar.

1.88.x ve doğrudan okuma özelliği devre dışı olan 1.91 ile karşılaştırıldığında:

  • Gecikme süresi 1.88.x'e göre %85,3 ve doğrudan okuma özelliği devre dışı olan 1.91'e göre %79 daha düşüktür.

  • Peak disk kullanımı 0'dır — diske geçici dosya yazılmaz.

  • Peak bellek kullanımı biraz daha yüksektir; bu durum yukarıdaki sıfır disk kullanımını mümkün kılar.

image

Kendi karşılaştırmalarınızı çalıştırma

ossfs'i konteynerlerde veya doğrudan ECS örneklerinde karşılaştırabilirsiniz. Aşağıdaki adımlar konteynerleştirilmiş bir Sysbench ortamı kullanır.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

Sysbench test ortamını dağıtma

  1. Aşağıdaki içeriğe sahip sysbench.yaml adlı bir dosya oluşturun. Bu dosya PVC'nin /data yoluna bağlandığı bir Sysbench konteyneri dağıtır.

    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
  2. Sysbench uygulamasını dağıtın:

    kubectl apply -f sysbench.yaml
  3. Sysbench konteynerinde oturum açın ardından okuma/yazma aktarım hızını karşılaştırmak için bağlama yolunda aşağıdaki komutları çalıştırın.

    Parametre değerlerini düğümünüzün teknik özelliklerine göre ayarlayın. Ardışık testler için önbellek etkileşimini önlemek amacıyla her seferinde yeni test dosyaları hazırlayın.
    İşlem Komut
    Test dosyalarını hazırlama 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
    Ardışık yazma G/Ç'sini test etme 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
    Ardışık okuma G/Ç'sini test etme 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
    Rastgele okuma/yazma G/Ç'sini test etme 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
    Test dosyalarını silme sysbench --test=fileio --file-total-size=1G cleanup

Sonraki adımlar

  • Sysbench tarafından sağlanan MySQL karşılaştırma aracını kullanarak ossfs'in çeşitli sürümlerini karşılaştırabilirsiniz.

  • Bağlama yolunda ls ve find komutlarını çalıştırarak dizin okuma optimizasyonunu test edin.

  • PV'nizin otherOpts alanına -o direct_read ekleyerek ve eş zamanlı ardışık okumalar çalıştırarak doğrudan okumayı test edin.