すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:動的にプロビジョニングされた NAS ボリュームのディレクトリクォータを設定する

最終更新日:Nov 09, 2025

Container Storage Interface (CSI) プラグインは、汎用型 NAS ボリュームのサブディレクトリに対するクォータ制限の設定をサポートしています。subPath メソッドを使用して NAS サブディレクトリをマウントする際に、ディレクトリクォータ機能を有効にすることで、サブディレクトリの容量を制限し、リソース使用率を向上させることができます。サブディレクトリボリュームがクォータ制限に達した場合、サービスを中断することなく、PVC のストレージ値を更新することでオンラインで拡張できます。

シナリオ

デフォルトでは、ACK クラスターに NAS ボリュームをマウントする際、PVC で宣言されたストレージ値は有効になりません。PV で実際に利用可能な容量は、NAS ファイルシステム全体の容量になります。NAS ボリュームの実際に利用可能な容量は、NAS ファイルシステムの容量制限に基づいて確認できます。

説明

NAS の種類によって容量制限は異なります。詳細については、「汎用型 NAS」および「超高速型 NAS」をご参照ください。

NAS ファイルシステムが複数のアプリケーションによって共有およびマウントされている場合は、subPath メソッドを使用してサブディレクトリをマウントし、ディレクトリクォータ機能を有効にすることをお勧めします。この機能を有効にすると、動的に作成されたサブディレクトリ PV の容量は、PVC で宣言されたストレージ値によって制限されます。容量が制限に達した場合、サービスを中断することなく、PVC のストレージ値を更新することでオンラインでボリュームを拡張できます。 ディレクトリクォータ機能を使用すると、異なるアプリケーション用に個別のサブディレクトリをマウントして容量制限を設定できます。これにより、NAS ファイルシステム内のリソース割り当てをより適切に管理し、管理効率とリソース使用率を向上させ、ストレージコストを効果的に管理できます。

説明

CNFS を使用して NAS を管理する場合、ディレクトリクォータ機能はデフォルトで有効になっています。詳細については、「CNFS を使用して NAS ボリュームを自動的に拡張する」をご参照ください。

前提条件

  • CSI コンポーネントがクラスターにインストールされており、バージョンが v1.18.8.45 以降であること。コンポーネントをアップグレードするには、「csi-plugin と csi-provisioner を更新する」をご参照ください。

  • NAS ファイルシステムとマウントポイントが作成されており、次の条件を満たしていること:

    • NAS のタイプが汎用型 NAS で、プロトコルタイプが NFS であること。そうでない場合は、「汎用型 NAS ファイルシステムを作成する」を再度実行してください。

    • マウントポイントとクラスターノードが同じ VPC 内にあり、[ステータス][アクティブ] であること。そうでない場合は、新しいマウントポイントを作成してください。詳細については、「マウントポイントの管理」をご参照ください。

制限事項

ディレクトリクォータ機能は、汎用型 NAS で NFS プロトコルを使用し、subpath メソッドでマウントされた、動的にプロビジョニングされた NAS ボリュームでのみサポートされます。静的にプロビジョニングされた NAS ボリューム、および sharepath または filesystem メソッドでマウントされた動的にプロビジョニングされた NAS ボリュームでは、この機能はサポートされません。

説明

ディレクトリクォータ機能の制限事項の詳細については、「ディレクトリクォータ」をご参照ください。

ディレクトリクォータを持つ動的にプロビジョニングされた NAS ボリュームを使用する

ステップ 1: サブディレクトリクォータ機能を有効にする StorageClass を作成する

  1. 次の YAML コンテンツを修正し、alicloud-nas-quota-sc.yaml として保存します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-quota-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath  # 値を subpath に設定します。
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com"  # NFS プロトコルを使用する汎用型 NAS ファイルシステムのマウントポイント。
      archiveOnDelete: "false"
      path: "/test"
      volumeCapacity: "true" # 動的にプロビジョニングされたボリュームは、ディレクトリクォータ機能をサポートします。
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true # ディレクトリクォータ機能を有効にして、動的にプロビジョニングされたボリュームの拡張を許可します。
    説明

    ディレクトリクォータ機能を有効にするには、allowVolumeExpansion または volumeCapacitytrue に設定します。allowVolumeExpansiontrue に設定されている場合、volumeCapacity パラメーターは効果がなく、ディレクトリクォータ機能は有効のままです。

    次のパラメーターに注意してください。詳細については、「動的にプロビジョニングされた NAS ボリュームを使用する」をご参照ください。

    パラメーター

    説明

    parameters

    volumeAs

    ディレクトリクォータ機能を使用する場合、このパラメーターを subpath に設定する必要があります。これは、NAS ファイルシステムのサブディレクトリが PV としてマウントされることを示します。

    server

    NAS ファイルシステムのマウントポイント。マウントポイントアドレスの表示方法の詳細については、「マウントポイントの管理」をご参照ください。

    path

    マウントされる NAS ファイルシステムのサブディレクトリ。デフォルト値は / です。超高速型 NAS ファイルシステムの場合、パスは /share で始まる必要があります。

    volumeCapacity

    ディレクトリクォータ機能を有効にするかどうかを指定します。

    allowVolumeExpansiontrue に設定されている場合、このパラメーターは効果がなく、クォータ機能は有効のままです。

    allowVolumeExpansion

    このパラメーターは、汎用型 NAS ファイルシステムでのみ使用できます。このパラメーターを true に設定すると、StorageClass を使用して動的にプロビジョニングされる PV にクォータが設定されます。

  2. StorageClass を作成します。

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

ステップ 2: アプリケーションを作成し、NAS ボリュームをマウントする

  1. 次の YAML コンテンツを使用して、nas-sts.yaml という名前のファイルを作成します。

    次の YAML は、1 つの Pod を持つ StatefulSet を作成します。Pod は、ディレクトリクォータ機能が有効になっている StorageClass に関連付けられています。システムは、対応する動的にプロビジョニングされた NAS ボリュームを自動的に作成し、それを Pod にマウントします。NAS ボリュームの容量は 20 GiB です。

    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 を作成します。

    kubectl apply -f nas-sts.yaml
  3. StatefulSet によってプロビジョニングされた Pod がデプロイされているかどうかを確認します。

    kubectl get pod -l app=nginx

    次のコマンド出力が返されることが想定されます:

    NAME          READY   STATUS    RESTARTS   AGE
    nas-sts-0     1/1     Running   0          24s
  4. PV を確認し、ディレクトリクォータが有効であることを確認します。

    1. PV を確認します。

      kubectl get pv

      次の出力が返され、容量が 20 GiB の PV が動的に作成されたことが示されます。

      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 コンソールでディレクトリクォータの詳細を確認します。

      NAS コンソールで、[ファイルシステムリスト] ページに移動します。ターゲットファイルシステムの [アクション] 列で、icon アイコンをクリックし、次に [クォータ管理] をクリックします。[クォータ管理] ページで、対応するディレクトリクォータが自動的に生成されていることを確認できます。[クォータの管理] をクリックして詳細を表示します。

      次の例は、ディレクトリの容量制限が 20 GiB であることを示しています。

      nas目录配额

ディレクトリクォータ制限の確認

subpath メソッドを使用してマウントされた動的にプロビジョニングされた NAS ボリュームは、宣言された容量が 20 GiB のディレクトリクォータ機能が有効になっているため、マウントされたディレクトリに書き込まれたデータが 20 GiB を超えると、システムはディスククォータを超えたことを示すプロンプトを表示します。

  1. マウントされたディレクトリにデータを書き込みます。

    次のコマンド例では、20000 MiB (約 19.53 GiB) のデータをマウントされたディレクトリ /data に書き込みます。

    kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/20G.txt bs=1M count=20000
  2. 5〜15 分待ってから、NAS コンソールでディレクトリクォータの詳細を確認します。

    NAS コンソール[ファイルシステムリスト] ページで、対象のファイルシステムの [操作] 列にある icon アイコンをクリックし、次に [クォータ管理] をクリックします。[クォータ管理] ページで、ディレクトリの [クォータの管理] をクリックして詳細を表示します。

    次の例は、ディレクトリの現在の容量が 19 GiB であることを示しています。

    nas目录配额2

  3. マウントされたディレクトリにさらにデータを書き込んでディレクトリクォータ制限に達すると、ディスククォータ超過エラーがトリガーされます。

    次のコマンド例では、1 GiB のデータをマウントされたディレクトリ /data に書き込もうとしますが、これはディレクトリクォータ制限を超えます。

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

    次の出力が返され、ディスククォータを超えたことを示します:

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

    ボリュームを拡張するには、「ディレクトリクォータを持つ動的にプロビジョニングされた NAS ボリュームを拡張する」をご参照ください。

ディレクトリクォータを持つ動的にプロビジョニングされた NAS ボリュームを拡張する

PVC のストレージ値を更新することで、動的に作成された PV の容量を拡張し、ディレクトリクォータを確認して NAS ボリュームの容量が正常に拡張されたかどうかを確認できます。この拡張操作はオンラインサービスに影響を与えず、ビジネスを中断することもありません。

  1. 拡張前の PVC を確認します。

    kubectl get pvc

    次の出力が返されます:

    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 を変更して NAS ボリュームの容量を拡張します。

    kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
    重要

    NAS ディレクトリのクォータは GiB 単位で測定されます。PVC を変更すると、CSI プラグインはマウントされた NAS ディレクトリのクォータを PVC で指定された新しいボリューム容量に調整します。調整中、CSI プラグインは容量値を最も近い整数に切り上げます。

  3. 拡張後の PV と PVC を確認します。

    返された情報の CAPACITY フィールドから、NAS ボリュームのディレクトリクォータが 20 GiB から 30 GiB に拡張されたことを確認できます。

    1. PV を確認します。

      kubectl get pv

      次の出力が返されます: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

      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 を確認します。

      kubectl get pvc

      次の出力が返されます:

      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 コンソールでディレクトリクォータの詳細を確認します。

    NAS コンソール[ファイルシステムリスト]ページで、対象のファイルシステムの[操作]列にあるicon アイコンをクリックし、次に[クォータ管理]をクリックします。[クォータ管理]ページで、ディレクトリの[クォータの管理]をクリックして詳細を表示します。

    次の例は、ディレクトリの容量制限が 30 GiB に拡張されたことを示しています。

    nas目录配额3

よくある質問

NAS ボリュームのマウントまたは使用中に問題が発生した場合は、以下をご参照ください:

関連資料

  • NAS ディレクトリクォータの詳細については、「ディレクトリクォータ」をご参照ください。

  • NAS ディレクトリにクォータを設定した後、node_volume_capacity_bytes_used メトリックを使用して NAS ボリュームの使用状況を監視できます。ボリューム容量監視のアラートルールの設定方法の詳細については、「Prometheus インスタンスのアラートルールを作成する」をご参照ください。