Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Defina cotas de diretório para volumes NAS provisionados dinamicamente

Última atualização: Oct 15, 2026

O plug-in do Container Storage Interface (CSI) oferece suporte a cotas de diretório em subdiretórios de volumes NAS de uso geral. Ao montar subdiretórios NAS usando o método subPath, as cotas de diretório limitam a capacidade de cada subdiretório de forma independente, impedindo que um aplicativo consuma o armazenamento alocado para outro. Quando um subdiretório atinge seu limite de cota, expanda-o online atualizando o PVC — sem necessidade de reinicializações ou interrupções de service.

Se você usar o CNFS para gerenciar o NAS, o recurso de cota de diretório é ativado por padrão. Para mais informações, consulte Use o CNFS para expandir automaticamente os volumes NAS .

Limitações

As cotas de diretório são suportadas apenas para volumes NAS provisionados dinamicamente que atendem a todas as seguintes condições:

  • Protocolo: NFS

  • Tipo de NAS: NAS de uso geral

  • Método de montagem: subPath

Volumes NAS provisionados estaticamente e volumes NAS provisionados dinamicamente montados usando o método sharepath ou filesystem não suportam cotas de diretório.

Para a lista completa de limitações de cotas de diretório, consulte Directory quotas .

Casos de uso

Por padrão, ao montar um volume NAS em um cluster ACK, o valor de armazenamento declarado na persistent volume claim (PVC) não tem efeito — o pod pode acessar a capacidade total do sistema de arquivos NAS. Se o sistema de arquivos NAS for compartilhado entre vários aplicativos, use cotas de diretório para:

  • Definir um limite de capacidade por subdiretório de aplicativo

  • Expandir a cota de um subdiretório online sem interromper os services em execução

  • Melhorar a utilização de recursos e controlar os custos de armazenamento

Diferentes tipos de NAS possuem limites de capacidade distintos. Para mais informações, consulte General-purpose NAS e Extreme NAS .

Pré-requisitos

Antes de começar, certifique-se de ter:

Use volumes NAS provisionados dinamicamente com cotas de diretório

Etapa 1: Crie uma StorageClass com cotas de diretório ativadas

  1. Salve o seguinte YAML como alicloud-nas-quota-sc.yaml. Substitua o valor de server pelo endereço do destino de montagem do seu sistema de arquivos NAS.

    Para ativar o recurso de cota de diretório, defina allowVolumeExpansion ou volumeCapacity como true . Se allowVolumeExpansion estiver definido como true , o parâmetro volumeCapacity não terá efeito e o recurso de cota de diretório permanecerá ativado.

    Parâmetro

    Descrição

    volumeAs

    Deve ser subpath. Monta um subdiretório NAS como um PV.

    server

    Endereço do destino de montagem do sistema de arquivos NAS. Consulte Manage mount targets.

    path

    Subdiretório NAS a ser montado. O padrão é /. Para o Extreme NAS, deve começar com /share.

    volumeCapacity

    Defina como "true" para ativar as cotas de diretório. Se allowVolumeExpansion for true, este parâmetro não terá efeito, mas a cota permanecerá ativada.

    allowVolumeExpansion

    Defina como true para ativar as cotas de diretório e permitir a expansão online do PVC. Disponível apenas para NAS de uso geral.

    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.

    Parâmetros principais: Para todos os parâmetros, consulte Use volumes NAS provisionados dinamicamente.

  2. Crie a StorageClass.

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

Etapa 2: Implante um aplicativo com um volume NAS

  1. Salve o seguinte YAML como nas-sts.yaml. O StatefulSet abaixo cria um pod com um volume NAS provisionado dinamicamente de 20 GiB, baseado na StorageClass com cotas de diretório ativadas.

    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. Crie o StatefulSet.

    kubectl apply -f nas-sts.yaml
  3. Verifique se o pod está em execução.

    kubectl get pod -l app=nginx

    Saída esperada:

    NAME          READY   STATUS    RESTARTS   AGE
    nas-sts-0     1/1     Running   0          24s
  4. Verifique se o PV foi criado e se a cota de diretório está ativa.

    1. Verifique o PV.

      kubectl get pv

      Saída esperada (o PV tem uma capacidade de 20 GiB):

      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. Confirme a cota de diretório no console do NAS. No console do NAS, acesse a página File System List. Na coluna Actions do sistema de arquivos de destino, clique em ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management. Clique em Manage Quotas para visualizar os detalhes. A cota de diretório está definida como 20 GiB. nas目录配额

Verifique o limite de cota de diretório

Como o volume possui uma cota de 20 GiB, qualquer gravação que ultrapasse 20 GiB no diretório montado resultará em um erro de Disk quota exceeded.

  1. Grave 20.000 MiB (aproximadamente 19,53 GiB) no diretório montado /data.

    kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/20G.txt bs=1M count=20000
  2. Aguarde de 5 a 15 minutos e, em seguida, verifique a cota de diretório no console do NAS. No console do NAS, acesse File System List. Na coluna Actions do sistema de arquivos de destino, clique em ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management. Clique em Manage Quotas para visualizar o uso atual. O diretório agora mostra aproximadamente 19 GiB usados.

    nas目录配额2

  3. Tente gravar mais 1 GiB para exceder a cota.

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

    O erro a seguir confirma que a cota está sendo aplicada:

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

Expanda um volume NAS provisionado dinamicamente com cotas de diretório

Expanda o volume aplicando um patch no valor de armazenamento do PVC. Esta operação não interrompe os services em execução.

Importante

A cota de um diretório NAS é medida em GiB. Após modificar o PVC, o plug-in do CSI ajusta a cota do diretório NAS montado para a nova capacidade do volume especificada pelo PVC. Durante o ajuste, o plug-in do CSI arredonda o valor da capacidade para o número inteiro mais próximo.

  1. Verifique o tamanho atual do PVC.

    kubectl get pvc

    Saída esperada:

    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. Expanda o PVC de 20 GiB para 30 GiB.

    kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
  3. Verifique a expansão conferindo o PV e o PVC.

    1. Verifique o PV.

      kubectl get pv

      Saída esperada (a capacidade agora é de 30 GiB):

      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. Verifique o PVC.

      kubectl get pvc

      Saída esperada:

      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. Confirme a cota atualizada no console do NAS. No console do NAS, acesse File System List. Na coluna Actions do sistema de arquivos de destino, clique em ![icon](https://help-static-aliyun-doc.aliyuncs.com/assets/img/en-US/5892161761/p537429.png) > Quota Management. Clique em Manage Quotas para confirmar que a cota de diretório agora é de 30 GiB.

    nas目录配额3

Perguntas frequentes

Se você encontrar problemas ao montar ou usar volumes NAS, consulte:

Próximos passos