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

Container Compute Service:静的 CPFS ボリュームの使用

最終更新日:Mar 27, 2026

静的にプロビジョニングされた CPFS ボリュームをマウントします。

クラウド並列ファイルストレージ (CPFS) は、ハイパフォーマンスコンピューティングシナリオ向けの、フルマネージドで拡張可能な並列ファイルシステムです。CPFS は、何千ものサーバーからの同時アクセスを可能にし、ミリ秒未満のレイテンシーで、数十 GB/s のスループットと数百万の IOPS (1 秒あたりの入出力操作数) を提供します。Alibaba Cloud Container Service (ACS) で実行される AI および HPC ワークロードでは、複数の Pod から同時にアクセスできる、このような共有型の高スループットストレージが必要になることがよくあります。このトピックでは、静的にプロビジョニングされた CPFS ボリュームを ACS アプリケーションにマウントし、そのボリュームが共有ストレージと永続ストレージをサポートしていることを確認する方法について説明します。

事前準備

CPFS for LINGJUN は、AIGC や自動運転などのインテリジェントコンピューティングシナリオ向けに設計されています。次に進む前に、以下の制約にご注意ください。

  • CPFS for LINGJUN は、エンドツーエンドの RDMA ネットワークをサポートしており、現在招待制プレビュー段階です。サポートは特定のリージョンとゾーンに限られます。

  • RDMA を介して CPFS for LINGJUN にアクセスする場合、Pod の hpn-zone は CPFS for LINGJUN ファイルシステムの hpn-zone と一致する必要があります。

  • CPFS は共有ファイルシステムです。CPFS ボリュームを複数の Pod に同時にマウントできます。

  • CPFS ボリュームは、任意の CPU アクセラレーション対応の ACS Pod にマウントできます。GPU アクセラレーション対応の Pod については、特定の GPU モデルのみがサポートされています。対象かどうかを確認するには、チケットを送信してください。

前提条件

開始する前に、以下が完了していることを確認してください。

インストールを確認するには、ACS クラスター管理ページに移動し、左側のナビゲーションウィンドウで [操作] > [アドオン] を選択して、[ストレージ] タブを確認します。

静的プロビジョニングの仕組み

静的プロビジョニングには 3 つのステップが必要です。

  1. CPFS コンソールで CPFS ファイルシステムを作成し、そのファイルシステム ID を記録します。

  2. ご利用の ACS クラスターで、そのファイルシステムを参照する PersistentVolume (PV) と PersistentVolumeClaim (PVC) を作成します。

  3. PVC を参照する Deployment を作成します。Kubernetes は PVC を PV にバインドし、ファイルシステムを Pod にマウントします。

アクセス方法の選択

PV の設定は、Pod のタイプとネットワークアクセス方法によって異なります。ステップ 1 に進む前に、どのシナリオが適用されるかを確認してください。

シナリオ Pod タイプ ネットワーク CSI ドライバー
RDMA 経由の CPFS for LINGJUN GPU (特定モデルのみ) 直接 RDMA povplugin.csi.alibabacloud.com
VPC 経由の CPFS for LINGJUN CPU Pod または RDMA 非対応の GPU Pod VPC マウントターゲット nasplugin.csi.alibabacloud.com

ステップ 1:CPFS ファイルシステムの作成

  1. CPFS for LINGJUN ファイルシステムを作成し、ファイルシステム ID を記録します。

  2. (オプション) VPC マウントターゲットを作成します。Pod が RDMA をサポートしていない場合 (例えば、CPU Pod や RDMA 非対応の GPU Pod など) は、VPC マウントターゲットを作成します。マウントターゲットを作成する際は、ご利用の ACS クラスターの VPC と vSwitch を使用してください。マウントターゲットのドメイン名を記録します。ドメイン名は cpfs-*-vpc-*.<Region>.cpfs.aliyuncs.com の形式です。

    CPFS VPC mount target

ステップ 2:PV と PVC の作成

kubectl

  1. cpfs-pv-pvc.yaml という名前のファイルを作成します。「アクセス方法の選択」の表から、ご利用のアクセス方法に一致する YAML を選択します。CPFS for LINGJUN — RDMA ネットワーク

    重要

    RDMA をサポートしているのは、特定の GPU モデルを搭載した Pod のみです。サポートされているモデルについては、「ACS がサポートする GPU モデル」をご参照ください。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cpfs-test
      labels:
        alicloud-pvname: cpfs-test        # PVC セレクターがこの PV にバインドするために使用します
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti                     # 宣言された容量。PVC のリクエスト以上である必要があります
      csi:
        driver: povplugin.csi.alibabacloud.com
        volumeAttributes:
          filesystemId: bmcpfs-*****      # ご利用の CPFS for LINGJUN ファイルシステム ID に置き換えます
          path: /                         # ファイルシステム内のマウントパス。サブディレクトリは自動的に作成されます
        volumeHandle: bmcpfs-*****        # filesystemId と同じ
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cpfs-test
    spec:
      accessModes:
      - ReadWriteMany
      selector:
        matchLabels:
          alicloud-pvname: cpfs-test      # 上記の PV のラベルと一致させる必要があります
      resources:
        requests:
          storage: 10Ti                   # PV の容量を超えてはなりません

    CPFS for LINGJUN — VPC ネットワーク

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cpfs-test
      labels:
        alicloud-pvname: cpfs-test        # PVC セレクターがこの PV にバインドするために使用します
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti                     # 宣言された容量。PVC のリクエスト以上である必要があります
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeAttributes:
          mountProtocol: efc             # VPC ベースの CPFS アクセスのためのプロトコル
          server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com  # ご利用の VPC マウントターゲットドメイン名に置き換えます
          path: /                        # ファイルシステム内のマウントパス。サブディレクトリは自動的に作成されます
        volumeHandle: bmcpfs-*****       # ご利用の CPFS for LINGJUN ファイルシステム ID に置き換えます
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cpfs-test
    spec:
      accessModes:
      - ReadWriteMany
      selector:
        matchLabels:
          alicloud-pvname: cpfs-test     # 上記の PV のラベルと一致させる必要があります
      resources:
        requests:
          storage: 10Ti                  # PV の容量を超えてはなりません
  2. PV と PVC を作成します。

    kubectl create -f cpfs-pv-pvc.yaml
  3. PVC が PV にバインドされていることを確認します。

    kubectl get pvc cpfs-test

    期待される出力:

    NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS    VOLUMEATTRIBUTESCLASS   AGE
    cpfs-test   Bound    cpfs-test   10Ti       RWX            <unset>         <unset>                 10s

コンソール

現在、コンソールでは VPC マウントターゲットを介して CPFS for LINGJUN を CPU アプリケーションにマウントすることはサポートされていません。このシナリオでは kubectl を使用してください。
  1. ACS コンソールにログインします。

  2. [クラスター] ページで、クラスター名をクリックします。

  3. 左側のナビゲーションウィンドウで、[ボリューム][永続ボリューム要求] を選択します。

  4. [永続ボリューム要求]」ページで、[作成] をクリックします。

  5. パラメーターを設定し、[作成] をクリックします。

    パラメーター 説明
    PVC の種類 CPFS を選択します。 CPFS
    名前 PVC のカスタム名を指定します。 cpfs-test
    割り当てモード 既存の PV にバインドする場合は 既存ボリューム を、PV と PVC を同時に作成する場合は ボリュームの作成 を選択します。 ボリュームの作成
    CPFS の種類

    LINGJUN 向け CPFS を選択します。

    LINGJUN 向け CPFS
    アクセスモード ReadWriteMany または ReadWriteOnce を選択します。 ReadWriteMany
    ファイルシステム ID LINGJUN 向け CPFS ファイルシステムの ID です。 bmcpfs-0115\*\*\*\*\*\*13q5
  6. [永続ボリューム要求] ページおよび [永続ボリューム] ページで、新しく作成された PVC および PV が表示され、そのステータスが [バインド済み] と表示されることを確認します。

ステップ 3:CPFS ボリュームを使用したアプリケーションのデプロイ

kubectl

  1. cpfs-test.yaml という名前のファイルを作成します。ご利用の Pod タイプに一致するテンプレートを選択します。以下の例では、2 つのレプリカを持つ Deployment を作成します。両方の Pod は、ステップ 2 で作成した PVC を使用して、CPFS ファイルシステムを /data にマウントします。GPU アクセラレーション対応アプリケーション

    サポートされている GPU モデルとドライバーのバージョンについては、「ACS の GPU アクセラレーション対応 Pod の GPU モデルとドライバーのバージョンを指定する」をご参照ください。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-test
      labels:
        app: cpfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpfs-test
      template:
        metadata:
          labels:
            app: cpfs-test
            alibabacloud.com/compute-class: gpu       # GPU コンピュートリソースをリクエストします
            alibabacloud.com/gpu-model-series: T4     # GPU モデル (例:T4) を指定します。必要に応じて更新してください
            alibabacloud.com/compute-qos: default
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data                      # コンテナ内のマウントパス
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: cpfs-test                  # ステップ 2 の PVC 名と一致させる必要があります

    CPU アクセラレーション対応アプリケーション

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-test
      labels:
        app: cpfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpfs-test
      template:
        metadata:
          labels:
            app: cpfs-test
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data                      # コンテナ内のマウントパス
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: cpfs-test                  # ステップ 2 の PVC 名と一致させる必要があります
  2. Deployment を作成します。

    kubectl create -f cpfs-test.yaml
  3. 両方の Pod が実行中であることを確認します。

    kubectl get pod | grep cpfs-test

    期待される出力:

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  4. CPFS ファイルシステムが期待されるパスにマウントされていることを確認します。

    kubectl exec cpfs-test-****-***a -- ls /data

    データが書き込まれていない場合、デフォルトでディレクトリは空です。

コンソール

  1. クラスター管理ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  2. [デプロイメント] ページで、[イメージから作成] をクリックします。

  3. Deployment のパラメーターを設定します。以下に記載されていないパラメーターについては、デフォルト値を保持します。詳細については、「Deployment を使用してステートレスアプリケーションを作成する」をご参照ください。

    GPU アクセラレーション対応アプリケーション

    設定ページ パラメーター 説明
    基本情報 名前 Deployment のカスタム名。 cpfs-test
    レプリカ数 Pod レプリカの数。 2
    タイプ Pod の計算タイプ。サポートされている GPU モデルについては、「ACS の GPU アクセラレーション対応 Pod の GPU モデルとドライバーのバージョンを指定する」をご参照ください。 GPU, T4
    コンテナ イメージ名 コンテナイメージのアドレス。 registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
    必須リソース 割り当てる GPU、vCPU、およびメモリ。 GPU: 1, CPU: 2 vCPU, メモリ: 2 GiB
    ボリューム [PVC の追加] をクリックし、マウントソースとコンテナパスを設定します。 マウントソース: pvc-cpfs, コンテナパス: /data

    CPU アクセラレーション対応アプリケーション

    設定ページ パラメーター 説明
    基本情報 アプリケーション名 Deployment のカスタム名。 cpfs-test
    レプリカ数 Pod レプリカの数。 2
    タイプ Pod の計算タイプ。 CPU, 汎用
    コンテナ イメージ名 コンテナイメージのアドレス。 registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
    必須リソース 割り当てる vCPU とメモリ。 CPU: 0.25 vCPU, メモリ: 0.5 GiB
    ボリューム [PVC の追加] をクリックし、マウントソースとコンテナパスを設定します。 マウントソース: pvc-cpfs, コンテナパス: /data
  4. [デプロイメント]」ページでデプロイメント名をクリックします。「[Pod]」タブで、すべてのPodのステータスが「[実行中]」であることを確認します。

共有ストレージと永続ストレージの検証

上記で作成した Deployment には、同じ CPFS ファイルシステムをマウントする 2 つの Pod があります。以下の手順で、共有ストレージと永続ストレージが正しく機能することを確認します。

  1. Pod 名を取得します。

    kubectl get pod | grep cpfs-test

    期待される出力:

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  2. データを書き込む前に、マウントディレクトリが空であることを確認します。

    kubectl exec cpfs-test-****-***a -- ls /data

    何も出力が返されない場合、ディレクトリは空でテストの準備ができています。

  3. 共有ストレージを検証します。

    1. ある Pod にファイルを作成します。``shell kubectl exec cpfs-test-**-*a -- touch /data/test.txt ``

    2. 他の Pod でファイルが表示されることを確認します。 ``shell kubectl exec cpfs-test-**-*b -- ls /data ` 期待される出力 — 最初の Pod で作成されたファイルが 2 番目の Pod で表示されます: ` test.txt ``

  4. 永続ストレージを検証します。

    1. Deployment を再起動して、新しい Pod を作成します。 ``shell kubectl rollout restart deploy cpfs-test ``

    2. 新しい Pod が Running ステータスになるまで待ちます。``shell kubectl get pod | grep cpfs-test ` 出力例: ` cpfs-test-**-*c 1/1 Running 0 78s cpfs-test-**-*d 1/1 Running 0 52s ``

    3. 新しい Pod でデータが保持されることを確認します。``shell kubectl exec cpfs-test-**-*c -- ls /data ` 期待される出力 — Pod が再作成された後もファイルは存在し続ける: ` test.txt ``