Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Set directory quotas for dynamically provisioned NAS volumes

Son Güncelleme:Oct 15, 2026

Container Storage Interface (CSI) eklentisi, Genel Amaçlı NAS birimlerinin alt dizinlerinde dizin kotalarını destekler. NAS alt dizinlerini subPath yöntemiyle bağladığınızda, dizin kotaları her alt dizinin kapasitesini bağımsız olarak sınırlandırır; böylece bir uygulama başka bir uygulamaya ayrılan depolama alanını tüketemez. Bir alt dizin kota sınırına ulaştığında, PVC'yi güncelleyerek çevrimiçi olarak genişletebilirsiniz. Yeniden başlatma veya hizmet kesintisi gerekmez.

NAS yönetimi için CNFS kullanıyorsanız, dizin kotası özelliği varsayılan olarak etkindir. Daha fazla bilgi için bkz. NAS birimlerini otomatik olarak genişletmek için CNFS kullanma .

Sınırlamalar

Dizin kotaları yalnızca aşağıdaki tüm koşulları karşılayan dinamik olarak sağlanan NAS birimleri için desteklenir:

  • Protokol: NFS

  • NAS türü: Genel Amaçlı NAS

  • Bağlama yöntemi: subPath

Statik olarak sağlanan NAS birimleri ve sharepath veya filesystem yöntemiyle bağlanan dinamik olarak sağlanan NAS birimleri dizin kotalarını desteklemez.

Dizin kotası sınırlamalarının tam listesi için bkz. Dizin kotaları .

Kullanım senaryoları

Varsayılan olarak, bir ACK kümesinde bir NAS birimi bağladığınızda, kalıcı birim talebinde (PVC) belirtilen depolama değeri etkili olmaz. Pod, NAS dosya sisteminin tam kapasitesine erişebilir. NAS dosya sistemi birden çok uygulama arasında paylaşılıyorsa, dizin kotalarını şu amaçlarla kullanın:

  • Her uygulama alt dizini için bir kapasite sınırı belirleme

  • Çalışan hizmetleri kesintiye uğratmadan bir alt dizinin kotasını çevrimiçi olarak genişletme

  • Kaynak kullanımını iyileştirme ve depolama maliyetlerini kontrol etme

Farklı NAS türlerinin farklı kapasite sınırları vardır. Daha fazla bilgi için bkz. Genel Amaçlı NAS ve Extreme NAS .

Ön koşullar

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

Dizin kotalarıyla dinamik olarak sağlanan NAS birimlerini kullanma

1. Adım: Dizin kotaları etkinleştirilmiş bir StorageClass oluşturma

  1. Aşağıdaki YAML içeriğini alicloud-nas-quota-sc.yaml olarak kaydedin. server değerini NAS dosya sisteminizin bağlama hedefi adresiyle değiştirin.

    Dizin kotası özelliğini etkinleştirmek için allowVolumeExpansion veya volumeCapacity parametresini true olarak ayarlayın. allowVolumeExpansion değeri true ise, volumeCapacity parametresi etkili olmaz ancak dizin kotası özelliği etkin kalır.
    Parametre Açıklama
    volumeAs subpath olarak ayarlanmalıdır. Bir NAS alt dizinini PV olarak bağlar.
    server NAS dosya sisteminin bağlama hedefi adresi. Bkz. Bağlama hedeflerini yönetme.
    path Bağlanacak NAS alt dizini. Varsayılan değer / şeklindedir. Extreme NAS için /share ile başlamalıdır.
    volumeCapacity Dizin kotalarını etkinleştirmek için "true" olarak ayarlayın. allowVolumeExpansion değeri true ise, bu parametre etkili olmaz ancak kota etkin kalır.
    allowVolumeExpansion Dizin kotalarını etkinleştirmek ve çevrimiçi PVC genişletmeye izin vermek için true olarak ayarlayın. Yalnızca Genel Amaçlı NAS için kullanılabilir.
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-quota-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath         # Mount a subdirectory as a persistent volume (PV). Required for directory quotas.
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com"  # Mount target address
      archiveOnDelete: "false"
      path: "/test"             # Root subdirectory. Default: /. For Extreme NAS, must start with /share.
      volumeCapacity: "true"    # Enables the directory quota feature.
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true  # Allows online PVC expansion. When set to true, volumeCapacity has no effect but directory quotas remain enabled.

    Temel parametreler: Tüm parametreler için bkz. Dinamik olarak sağlanan NAS birimlerini kullanma.

  2. StorageClass'ı oluşturun.

    kubectl apply -f alicloud-nas-quota-sc.yaml

2. Adım: NAS birimli bir uygulama dağıtma

  1. Aşağıdaki YAML içeriğini nas-sts.yaml olarak kaydedin. Aşağıdaki StatefulSet, dizin kotaları etkinleştirilmiş StorageClass tarafından desteklenen, 20 GiB boyutunda dinamik olarak sağlanmış bir NAS birimine sahip tek bir pod oluşturur.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nas-sts
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
            - name: nas-pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: nas-pvc
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: "alicloud-nas-quota-sc"
          resources:
            requests:
              storage: 20Gi
  2. StatefulSet'i oluşturun.

    kubectl apply -f nas-sts.yaml
  3. Pod'un çalıştığını doğrulayın.

    kubectl get pod -l app=nginx

    Beklenen çıktı:

    NAME          READY   STATUS    RESTARTS   AGE
    nas-sts-0     1/1     Running   0          24s
  4. PV'nin oluşturulduğunu ve dizin kotasının etkin olduğunu doğrulayın.

    1. PV'yi kontrol edin.

      kubectl get pv

      Beklenen çıktı (PV'nin kapasitesi 20 GiB'dir):

      NAME                             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                       STORAGECLASS            VOLUMEATTRIBUTESCLASS   REASON   AGE
      nas-****-c72c-497f-ab13-******   20Gi       RWX            Delete           Bound    default/nas-pvc-nas-sts-0   alicloud-nas-quota-sc   <unset>                          15m
    2. NAS konsolunda dizin kotasını onaylayın. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management öğesini tıklayın. Ayrıntıları görüntülemek için Manage Quotas öğesini tıklayın. Dizin kotası 20 GiB olarak ayarlanır. nas目录配额

Dizin kotası sınırını doğrulama

Birimin 20 GiB kotası olduğu için, bağlı dizine 20 GiB üzerindeki yazma işlemleri Disk quota exceeded hatasına neden olur.

  1. Bağlı /data dizinine 20.000 MiB (yaklaşık 19,53 GiB) veri yazın.

    kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/20G.txt bs=1M count=20000
  2. 5 ila 15 dakika bekleyin, ardından NAS konsolunda dizin kotasını kontrol edin. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management öğesini tıklayın. Mevcut kullanımı görüntülemek için Manage Quotas öğesini tıklayın. Dizinde artık yaklaşık 19 GiB kullanılan alan gösterilir.

    nas目录配额2

  3. Kota aşmak için 1 GiB daha yazmayı deneyin.

    kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/1G.txt bs=1M count=1024

    Aşağıdaki hata, kotanın uygulandığını doğrular:

    dd: closing output file '/data/1G.txt': Disk quota exceeded

Dizin kotalı dinamik olarak sağlanan bir NAS birimini genişletme

Birim kapasitesini, PVC depolama değerini yamalayarak genişletin. Bu işlem çalışan hizmetleri kesintiye uğratmaz.

Önemli

NAS dizininin kotası GiB cinsinden ölçülür. PVC'yi değiştirdikten sonra, CSI eklentisi bağlı NAS dizininin kotasını PVC tarafından belirtilen yeni birim kapasitesine göre ayarlar. Ayarlama sırasında, CSI eklentisi kapasite değerini en yakın tam sayıya yukarı yuvarlar.

  1. Mevcut PVC boyutunu kontrol edin.

    kubectl get pvc

    Beklenen çıktı:

    NAME                STATUS   VOLUME                           CAPACITY   ACCESS MODES   STORAGECLASS            VOLUMEATTRIBUTESCLASS   AGE
    nas-pvc-nas-sts-0   Bound    nas-****-c72c-497f-ab13-******   20Gi       RWX            alicloud-nas-quota-sc   <unset>                 23m
  2. PVC'yi 20 GiB'den 30 GiB'ye genişletin.

    kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
  3. PV ve PVC'yi kontrol ederek genişletmeyi doğrulayın.

    1. PV'yi kontrol edin.

      kubectl get pv

      Beklenen çıktı (kapasite artık 30 GiB'dir):

      NAME                             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                       STORAGECLASS            VOLUMEATTRIBUTESCLASS   REASON   AGE
      nas-****-c72c-497f-ab13-******   30Gi       RWX            Delete           Bound    default/nas-pvc-nas-sts-0   alicloud-nas-quota-sc   <unset>                          25m
    2. PVC'yi kontrol edin.

      kubectl get pvc

      Beklenen çıktı:

      NAME                STATUS   VOLUME                           CAPACITY   ACCESS MODES   STORAGECLASS            VOLUMEATTRIBUTESCLASS   AGE
      nas-pvc-nas-sts-0   Bound    nas-****-c72c-497f-ab13-******   30Gi       RWX            alicloud-nas-quota-sc   <unset>                 26m
  4. NAS konsolunda güncellenen kotaları onaylayın. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management öğesini tıklayın. Dizin kotasının artık 30 GiB olduğunu onaylamak için Manage Quotas öğesini tıklayın.

    nas目录配额3

SSS

NAS birimlerini bağlarken veya kullanırken sorunlarla karşılaşırsanız, aşağıdaki kaynaklara bakın:

Sonraki adımlar