全部产品
Search
文档中心

:Aktifkan fitur caching terdistribusi klien CNFS

更新时间:Nov 09, 2025

Klien Container Network File System (CNFS) memungkinkan Anda mengakses data melalui beberapa koneksi, menyimpan metadata dalam cache, dan mendistribusikan penyimpanan data untuk meningkatkan kecepatan baca. Klien CNFS juga mendukung pemantauan performa dan kualitas layanan (QoS). Topik ini menjelaskan cara mengaktifkan fitur caching terdistribusi klien CNFS serta cara menggunakan fitur tersebut untuk meningkatkan kecepatan baca.

Prasyarat

  • Gunakan Alibaba Cloud Linux 2 dengan versi kernel 4.19.91-23 hingga 4.19.91-26. Fitur caching terdistribusi didukung pada Alibaba Cloud Linux 2.

  • Buat kluster Container Service for Kubernetes (ACK) yang menjalankan Kubernetes 1.20 atau lebih baru. Gunakan plug-in Container Storage Interface (CSI) sebagai plug-in volume. Untuk informasi lebih lanjut, lihat Buat kluster ACK yang dikelola.

  • Versi csi-plugin dan csi-provisioner adalah v1.22.11-abbb810e-aliyun atau lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui csi-plugin dan csi-provisioner, lihat Instal dan perbarui plug-in CSI.

  • Versi storage-operator adalah v1.22.86-041b094-aliyun atau lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui storage-operator, lihat Kelola komponen.

  • Pastikan klien kubectl terhubung ke kluster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.

Indikator kinerja utama fitur caching terdistribusi

Indikator

Skenario benchmarking

Caching terdistribusi dinonaktifkan

Caching terdistribusi diaktifkan

Kinerja baca dan tulis pada metadata

Durasi penelusuran satu juta direktori

18 menit

< 60 detik

Durasi pembuatan file berukuran 4 KB

3.000 mikrodetik

< 200 mikrodetik

Durasi membaca file berukuran 4 KB untuk kedua kalinya

400 mikrodetik

< 100 mikrodetik

Throughput baca dan tulis

Throughput baca dan tulis node tunggal

200 hingga 500 MB/s

> 800 MB/s

Kinerja keseluruhan dalam skenario komprehensif

Durasi ekstraksi 5.000 gambar yang masing-masing berukuran 150 KB

52 detik

Sekitar 15 detik

Durasi pembuatan proyek Redis

27 detik

Sekitar 21 detik

Penting

Nilai yang disediakan dalam tabel di atas hanya nilai teoretis (nilai referensi). Nilai aktual bergantung pada lingkungan operasi Anda.

  • Catatan ①: Jenis Instance Elastic Compute Service (ECS) yang digunakan untuk menjalankan pengujian benchmark adalah ecs.hfg6.4xlarge. Data benchmark dapat bervariasi berdasarkan lingkungan.

  • Catatan ②: Bandwidth instance ECS dan jenis sistem file File Storage NAS (NAS) memengaruhi throughput baca dan tulis node.

Langkah 1: Mount sistem file NAS yang memiliki caching terdistribusi diaktifkan

  1. Jalankan perintah berikut untuk membuat dan menerapkan ConfigMap csi-plugin di kluster serta instal klien CNFS:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: csi-plugin
      namespace: kube-system
    data:
      cnfs-client-properties: |
        nas-efc=true
      nas-efc-cache: |
        enable=true
        container-number=3
        volume-type=memory
        volume-size=15Gi
      node-selector: |
        cache=true
    EOF

    Parameter

    Deskripsi

    cnfs-client-properties

    Menentukan apakah akan mengaktifkan caching terdistribusi. Jika Anda menentukan nas-efc=true, fitur caching terdistribusi diaktifkan untuk meningkatkan kecepatan baca.

    nfs-efc-cache.

    container-number

    Parameter ini diperlukan jika Anda mengaktifkan caching terdistribusi.

    Parameter ini menentukan jumlah kontainer yang DaemonSet buat untuk fitur caching. Jika fitur caching mencapai batas performa, Anda dapat meningkatkan nilai parameter ini.

    nfs-efc-cache.

    volume-type

    Parameter ini diperlukan jika Anda mengaktifkan caching terdistribusi.

    Media yang digunakan oleh volume emptyDir pod yang dibuat oleh DaemonSet. Nilai valid:

    • disk

    • memory

    nfs-efc-cache.

    volume-size

    Parameter ini diperlukan jika Anda mengaktifkan caching terdistribusi. Ukuran volume yang ingin Anda cache. Unit: GiB.

    node-selector

    Pod yang dibuat oleh DaemonSet untuk fitur caching terdistribusi dijadwalkan berdasarkan label. Jika Anda tidak menentukan parameter ini, DaemonSet dijadwalkan ke setiap node di kluster.

    Penting
    • Setelah menetapkan medium ke disk atau memory, sumber daya disk data atau memori node akan digunakan. Pastikan hal ini tidak memengaruhi beban kerja Anda secara negatif.

    • Dalam contoh ini, DaemonSet untuk fitur caching terdistribusi membuat tiga kontainer yang masing-masing dipasang dengan volume tmpfs berukuran 5 GiB. Kontainer hanya dapat dijadwalkan ke node yang memiliki label cache=true.

    Setelah ConfigMap dikonfigurasi, sistem secara otomatis menerapkan DaemonSet dan Layanan berdasarkan ConfigMap.

  2. Jalankan perintah berikut untuk me-restart CSI-Plugin dan instal dependensi:

    kubectl get pod -nkube-system -owide | grep csi-plugin | awk '{print $1}' | xargs kubectl -nkube-system delete pod
  3. Jalankan perintah berikut untuk mengaktifkan fitur caching terdistribusi klien CNFS:

    Buat sistem file NAS yang dikelola oleh CNFS. StatefulSet memasang volume NAS yang dipercepat oleh CNFS sebagai volume yang diatur secara dinamis. Gambar busybox digunakan dalam contoh ini. Setelah pod diluncurkan, sistem menjalankan perintah dd untuk menulis file berukuran 1 GB ke jalur /data. File tersebut digunakan untuk memeriksa apakah fitur caching terdistribusi berfungsi.

    Tampilkan konten YAML:

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nas-filesystem
    spec:
      description: "cnfs"
      type: nas
      reclaimPolicy: Retain
      parameters:
        filesystemType: standard
        storageType: Capacity
        protocolType: NFS
        encryptType: None
        enableTrashCan: "true"
        trashCanReservedDays: "5"
        useClient: "EFCClient" # Gunakan klien EFC untuk memasang sistem file NAS yang memiliki caching terdistribusi diaktifkan.
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-nas-sc
    mountOptions:
      - g_tier_EnableClusterCache=true              # Konfigurasikan pengaturan caching saat memasang volume.
      - g_tier_EnableClusterCachePrefetch=true      # Konfigurasikan prefetching saat memasang volume.
    parameters:
      volumeAs: subpath
      containerNetworkFileSystem: cnfs-nas-filesystem
      path: "/"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    allowVolumeExpansion: true
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-nas-sts
      labels:
        app: busybox
    spec:
      serviceName: "busybox"
      replicas: 1
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["/bin/sh"]
            args: ["-c", "dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;sleep 3600;"]
            volumeMounts:
            - mountPath: "/data"
              name: www
      volumeClaimTemplates:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "alibabacloud-cnfs-nas-sc"
          resources:
            requests:
              storage: 50Gi
    EOF
  4. Jalankan perintah berikut untuk memeriksa apakah volume NAS dengan caching terdistribusi diaktifkan telah dimount:

    kubectl exec cnfs-nas-sts-0   -- mount | grep /data

    Output yang diharapkan:

    xxx.cn-xxx.nas.aliyuncs.com:/nas-6b9d1397-6542-4410-816b-4dfd0633****:2fMaQdxU on /data type alifuse.aliyun-alinas-eac (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

    Target mount ditampilkan dalam output. Ini menunjukkan bahwa volume NAS dengan caching terdistribusi diaktifkan telah dimount.

  5. Jalankan perintah berikut untuk memeriksa apakah DaemonSet untuk fitur caching terdistribusi telah diluncurkan:

    kubectl get ds/cnfs-cache-ds -n kube-system -owide

    Output yang diharapkan:

    NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS              IMAGES                                                         SELECTOR
    cnfs-cache-ds   3         3         3       3            3           <none>          19d   alinas-dadi-container   registry-vpc.cn-shenzhen.aliyuncs.com/acs/nas-cache:20220420   app=cnfs-cache-ds

    Dalam contoh ini, kluster berisi tiga node. Tiga pod yang dibuat oleh DaemonSet siap. Ini menunjukkan bahwa DaemonSet untuk fitur caching terdistribusi telah diluncurkan.

  6. Jalankan perintah berikut untuk memeriksa apakah Layanan caching terdistribusi dapat menemukan pod backend:

    kubectl get ep cnfs-cache-ds-service  -n kube-system -owide

    Output yang diharapkan:

    NAME                     ENDPOINTS                                          AGE
    cnfs-cache-ds-service   10.19.1.130:6500,10.19.1.40:6500,10.19.1.66:6500   19d

    Output menunjukkan bahwa Layanan telah menemukan pod backend. Endpoint pod adalah 10.19.1.130, 10.19.1.40, dan 10.19.1.66. Portnya adalah 6500.

Langkah 2: Verifikasi fitur caching

  1. Jalankan perintah berikut untuk menyalin tmpfile di direktori /data ke direktori / dan periksa jumlah waktu yang dikonsumsi. Ukuran file adalah 1 GB.

    kubectl exec cnfs-nas-sts-0 -- time cp /data/1G.tmpfile /

    Output yang diharapkan:

    real    0m 5.66s
    user    0m 0.00s
    sys     0m 0.75s

    Output menunjukkan bahwa jumlah waktu yang diperlukan untuk menyalin file adalah sekitar lima detik ketika fitur caching terdistribusi dinonaktifkan.

  2. Jalankan perintah berikut beberapa kali untuk memeriksa jumlah waktu yang diperlukan untuk menyalin file:

    kubectl exec cnfs-nas-sts-0 -- time cp /data/1G.tmpfile /

    Output yang diharapkan:

    real    0m 0.79s
    user    0m 0.00s
    sys     0m 0.58s

    Output menunjukkan bahwa jumlah waktu yang diperlukan untuk menyalin file berkurang enam hingga tujuh kali jika file diakses lebih dari satu kali.