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

File Storage NAS:NAS NFSボリュームのサブディレクトリにクォータを設定する

最終更新日:Jul 30, 2024

Container Service for Kubernetes (ACK) が提供するContainer Storage Interface (CSI) プラグインを使用すると、Apsara File Storage NAS (NAS) ボリュームのサブディレクトリにクォータを設定できます。 リソース割り当てを管理し、全体的なリソース使用率を改善するためにクォータを設定できます。 クォータに達すると、ボリュームがマウントされているサービスを中断することなく、動的ボリューム拡張を手動で実行できます。

前提条件

  • csi-pluginのイメージバージョンは1.18.8.45以降です。 csi-pluginのバージョンの詳細については、「csi-plugin」をご参照ください。

  • NASボリュームがサブディレクトリにマウントされます。

制限事項

  • キャパシティNASファイルシステムのみがクォータ制限をサポートしています。 NASファイルシステムの種類の詳細については、「NASファイルシステムの種類」をご参照ください。

  • 静的にプロビジョニングされたNASボリュームは拡張できません。

  • サブディレクトリを使用してマウントされたボリュームに対してのみ、クォータを設定できます。

  • ファイルシステムごとに、最大500ディレクトリのクォータを作成できます。

    • ディレクトリに施行クォータを設定できます。 クォータを超えると、ディレクトリにデータを書き込むことができず、フロントエンドでIOErrorエラーが表示されます。 書き込み操作には、ファイルの長さを増やし、ファイルを作成し、サブディレクトリを作成し、特殊ファイルを作成し、ファイルを別のディレクトリに移動するために使用される操作が含まれます。

    • 潜在的なセキュリティリスクを防ぐために、コアビジネス関連ディレクトリの制限付きクォータを作成する前に、制限付きクォータを評価してテストすることをお勧めします。

    • バックエンドでの非同期実行により、強制クォータが有効または無効になるまでには、特定の期間が必要です。 ほとんどの場合、時間は5〜15分の範囲です。

例:

  1. 次のYAMLテンプレートを使用してStorageClassを作成し、クォータ機能と動的拡張機能が有効になっているNASボリュームをプロビジョニングします。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-quota-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      server: "xxx.cn-hangzhou.nas.aliyuncs.com:/"
      archiveOnDelete: "false"
      path: "/abc"
      volumeCapacity: "true" # The quota feature is enabled for a volume that is dynamically provisioned based on the StorageClass. 
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true # Enable dynamic volume expansion.

    パラメーター

    説明

    mountOptions

    NASファイルシステムのマウントオプションmountOptionsフィールドに設定します。 たとえば、使用するNFSバージョンを指定できます。

    volumeAs

    [サブパス] または [ファイルシステム] を選択できます。 サブパスは、サブディレクトリがクラスターにマウントされていることを示します。 filesystemは、ファイルシステムがクラスターにマウントされていることを示します。

    サーバー

    NASファイルシステムのサブディレクトリを永続ボリューム (PV) としてマウントする場合、NASファイルシステムのマウント先を指定します。

    archiveOnDelete

    このパラメーターは、reclaimPolicyDeleteに設定されている場合のバックエンドストレージのreclaimポリシーを指定します。 NASは共有ストレージサービスです。 データのセキュリティを確保するには、reclaimPolicyとarchiveOnDeleteの両方を設定する必要があります。 デフォルト値: true

    パス

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

    volumeCapacity

    このパラメーターは、クォータを設定するかどうかを指定します。 有効な値は truefalse です。

    provisioner

    ACKによって提供されるPVの提供者。

    reclaimPolicy

    PVを再利用するために使用されるポリシー。 有効な値:

    • Retain: PVとPVCが削除されたときにバックエンドストレージを保持します。 バックエンドストレージは、クラウドディスクであってもよい。

    • 削除: PVCが削除されると、バックエンドストレージとPVが自動的に削除されます。

    allowVolumeExpansion

    ボリューム拡張をサポートするかどうかを指定します。

    説明

    NASファイルシステムのサブディレクトリにクォータを設定するStorageClassを作成するには、volumeCapacityパラメーターをtrueに設定する必要があります。

  2. 次のYAMLテンプレートを使用して、StatefulSetを作成します。 StatefulSetは、20 GiBのストレージを要求するPVCを使用します。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nas-sts
    spec:
      selector:
        matchLabels:
          app: busybox
      serviceName: "busybox"
      replicas: 1
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox
            command:
            - sleep
            - "3600"
            volumeMounts:
            - name: nas-pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: nas-pvc
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: "alicloud-nas-quota-sc"
          resources:
            requests:
              storage: 20Gi

結果の検証

  1. 次のコマンドを実行して、ステップ2のStatefulSetを使用してマウントされた /dataディレクトリに10 GiBのデータを書き込みます。

    dd if=/dev/zero of=10G.txt bs=1M count=10000
  2. 5〜15分待ってから、サブディレクトリのクォータの詳細を確認します。

    1. NAS コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、ファイルシステム > ファイルシステム一覧を選択します。

    3. ファイルシステムを検索し、[操作] 列の图标アイコンをクリックします。 次に、[クォータ管理] をクリックします。

    4. クォータ管理ページで、アクション列のクォータの管理をクリックします。

      次の図は、サブディレクトリのクォータ制限が20 GiBであることを示しています。 使用されるストレージは9 GiBです。配额管理

      20 GiBのストレージが使い果たされ、サブディレクトリにさらにデータを書き込もうとすると、[ディスククォータ超過] エラーが表示されます。磁盘配额

  3. クォータに達した場合は、手動で動的ボリューム拡張を実行できます。

    1. 次のコマンドを実行して、ボリュームを動的に拡張します。

      説明

      動的ボリューム拡張は、ボリュームがマウントされているサービスを中断しません。

      kubectl patch pvc nas-pvc-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
    2. 次のコマンドを実行して、PVに関する情報を照会します。

      kubectl get pv

      期待される出力:

      NAME                              CAPACITY  ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM               STORAGECLASS         REASON     AGE
      nas-63c37cc2-b21e-4b56-b26f-****   30Gi          RWX          Delete        Bound    default/nas-pvc-0   alicloud-nas-quota-sc           25m23s
    3. 次のコマンドを実行して、永続ボリュームクレーム (PVC) に関する情報を照会します。

      kubectl get pvc

      期待される出力:

      NAME       STATUS   VOLUME                         CAPACITY  ACCESS MODES   STORAGECLASS            AGE
      nas-pvc-0  Bound   nas-63c37cc2-b21e-4b56-b26f-****   30Gi      RWX        alicloud-nas-quota-sc   25m10s