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

Container Service for Kubernetes:CNFS を使用して EFC クライアントで NAS ファイルシステムをマウント

最終更新日:Jun 18, 2026

Elastic File Client (EFC) は、高同時実行ワークロードと大規模データセットの並列アクセスをサポートしており、ビッグデータ分析や AI トレーニングと推論などのデータ集約型で高同時実行のコンテナ化されたアプリケーションに適しています。 デフォルトの NFS プロトコルを使用して NAS ファイルシステムをマウントする場合と比較して、EFC を使用するとファイルアクセスが高速化され、読み取りおよび書き込みパフォーマンスが向上します。 このトピックでは、CNFS を使用して EFC クライアントで NAS ファイルシステムをマウントする方法について説明します。

EFC の概要

EFC は、Alibaba Cloud が提供する、FUSE ベースのユーザー空間 POSIX クライアントです。従来のカーネル空間 NFS クライアントを置き換えることができ、マルチリンクアクセス、メタデータキャッシングなどの高速化機能を提供します。また、Managed Service for Prometheus と統合して、クライアント側のパフォーマンスモニタリングを提供します。

カーネル空間 NFS クライアントおよびその他のオープンソース FUSE ベースのクライアントと比較して、EFC クライアントには次のメリットがあります。

  • データ一貫性:分散ロックメカニズムを使用して、ファイルおよびディレクトリの強力な一貫性を確保します。あるクライアントが書き込んだデータは、他のクライアントから即座に読み取れます。新しいファイルも、他のすべてのクライアントから直ちにアクセスできるため、複数ノード間でのデータ管理が簡素化されます。

  • 単一ノードの読み書きキャッシング:FUSE のキャッシュロジックを最適化し、コンピュートノード上の最小限のメモリでデータをキャッシュします。これにより、小規模ファイルの読み書きパフォーマンスが向上し、従来の NFS クライアントと比較して 50% 以上の性能向上が得られます。

  • 小規模ファイルのプリフェッチ:ホットなディレクトリとファイルを自動的に識別してプリフェッチし、データ取得のオーバーヘッドを削減します。

  • ホットアップグレードとフェイルオーバー:アプリケーションを再起動せずにホットアップグレードできます。クライアント障害が発生した場合でも、サービスに影響を与えることなく自動的にフェイルオーバーします。

前提条件

  • クラスターに cnfs-nas-daemon アドオンがインストールされており、csi-plugin コンポーネントの FeatureGate に AlinasMountProxy=true が追加されて cnfs-nas-daemon が有効になっていること。詳細については、「Manage the cnfs-nas-daemon add-on」をご参照ください。

  • ノード OS が Alibaba Cloud Linux 3 または ContainerOS であり、カーネルバージョンが 5.10.134-17.2 以降であること。

    重要

    ノード OS またはカーネルバージョンが要件を満たさない場合、システムはマウント時に自動的に NFS プロトコルにフォールバックします。

EFC クライアントを使用するための CNFS の設定

  1. CNFS リソースを作成し、EFC クライアントを指定します。

    1. 次の内容を cnfs-efc.yaml として保存します。

      説明

      この例では、既存の NAS ファイルシステムを CNFS で設定して EFC クライアントを有効にする方法を示します。CNFS を使用して新しい NAS ファイルシステムを作成する場合も、ContainerNetworkFileSystem リソースの parametersuseClient: EFCClient を追加することで、EFC クライアントを有効にできます。CNFS を使用して NAS ファイルシステムを作成する方法の詳細については、「Manage NAS file systems by using CNFS」をご参照ください。

      apiVersion: storage.alibabacloud.com/v1beta1
      kind: ContainerNetworkFileSystem
      metadata:
        name: cnfs-efc-test
      spec:
        description: "cnfs"
        type: nas
        reclaimPolicy: Retain
        parameters:
          server: 17f7e4****-h****.cn-beijing.nas.aliyuncs.com
          useClient: EFCClient

      パラメーター

      説明

      description

      ファイルシステムの説明です。

      type

      作成するボリュームのタイプです。

      reclaimPolicy

      サポートされている reclaimPolicy は Retain のみです。これは、CNFS を削除しても NAS ファイルシステムは削除されないことを意味します。

      parameters

      server

      NAS マウントターゲットのアドレスです。マウントターゲットは、次の要件を満たす必要があります。

      • マウントターゲットは、クラスターの Pod と同じ VPC に存在する必要があります。そうでない場合、マウントに失敗します。

      • 最適なパフォーマンスを得るために、マウントターゲットとクラスターの Pod には同じ vSwitch を使用することを推奨します。

      • マウントターゲットのステータスは [Available] である必要があります。

      要件を満たす既存のマウントターゲットがない場合は、新しく作成できます。詳細については、「Manage mount targets」をご参照ください。

      useClient

      EFCClient に設定すると、EFC クライアントが有効になります。

    2. CNFS リソースを作成します。

      kubectl create -f cnfs-efc.yaml
  2. CNFS を使用して、対応するボリュームを作成します。

    kubectl create -f cnfs-pv-pvc.yaml

    次に cnfs-pv-pvc.yaml の例を示します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efc-pv
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 50Gi
      claimRef:
        name: efc-pvc
        namespace: default
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeAttributes:
          containerNetworkFileSystem: cnfs-efc-test
          path: /
        volumeHandle: efc-pv
      volumeMode: Filesystem
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: efc-pvc
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 50Gi
      storageClassName: ""
      volumeMode: Filesystem
      volumeName: efc-pv

ワークロードの作成と NAS のマウント

  1. Deployment を作成し、NAS ファイルシステムをマウントします。

    kubectl create -f cnfs-deployment.yaml

    次のコードは cnfs-deployment.yaml の例です。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: efc-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: efc-test
      template:
        metadata:
          labels:
            app: efc-test
        spec:
          containers:
          - command:
            - sh
            - -c
            - |
              sleep infinity
            image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
            name: test
            volumeMounts:
            - mountPath: /mnt
              name: pvc
          volumes:
          - name: pvc
            persistentVolumeClaim:
              claimName: efc-pvc
  2. Deployment 内の Pod のステータスを確認します。

    kubectl get pod -l app=efc-test

    想定される出力:

    NAME                       READY   STATUS    RESTARTS   AGE
    efc-test-f545b86d6-spr7p   1/1     Running   0          29m
  3. Pod が実行中になったら、Pod 内の EFC マウントポイントを確認します。

    kubectl exec <pod-name> -- mount -t fuse.aliyun-alinas-efc

    想定される出力:

    bindroot-3889a-8TzEY5mc:3d2804****-w****.cn-shanghai.nas.aliyuncs.com:/ on /mnt type fuse.aliyun-alinas-efc (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=1048576)