Tüm Ürünler
Search
Belge Merkezi

Cloud Parallel File Storage:ACK'de CPFS AI Edition dosya sistemlerini bağlama

Son Güncelleme:Oct 07, 2026

CPFS AI Edition, birden çok pod'un aynı dosya sistemini ReadWriteMany modunda eş zamanlı olarak bağlamasını destekler; bu sayede eğitim verilerine ve modellere ortak erişim sağlanır. Bu konuda, ACK CSI eklentisini kullanarak bir CPFS AI Edition dosya sisteminin konteynerlere statik depolama birimi olarak nasıl bağlanacağı açıklanır.

Ön koşullar

  • Bir ACK Lingjun yönetilen küme oluşturun. Küme Kubernetes 1.26 veya sonraki bir sürümü çalıştırmalı ve düğüm işletim sistemi olarak Alibaba Cloud Linux 3 kullanmalıdır.

  • Bir CPFS AI Edition dosya sistemi oluşturun. Dosya sistemi kimliğini not edin. Daha fazla bilgi için bkz. CPFS AI Edition dosya sistemi oluşturma.

  • ACK kümesinde aşağıdaki depolama bileşenlerinin yüklü olduğundan emin olun. Sürümleri kümenin Bileşen Yönetimi sayfasından kontrol edebilir veya CSI bileşenlerini yönetme konusuna bakabilirsiniz:


    Bileşen


    Gerekli sürüm


    csi-plugin / csi-provisioner


    ≥ v1.33.1


    cnfs-nas-daemon


    ≥ 0.1.2


    bmcpfs-csi-controller / bmcpfs-csi-node


    ACK tarafından yönetilir. Manuel kurulum gerekmez.

  • Bir pod, Lingjun olmayan bir düğüme veya farklı bir hesaplama-depolama yakınlık alanındaki bir Lingjun düğümüne planlanıyorsa önceden bir VPC bağlama hedefi oluşturun ve bağlama hedefi etki alanı adını (cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com biçiminde) kaydedin. VPC bağlama hedefinin ait olduğu VPC, ACK kümesinin VPC'si ile aynı olmalıdır. Daha fazla bilgi için bkz. VPC bağlama noktalarını yönetme.

Dikkat edilmesi gerekenler

  • VSC kullanarak bir CPFS dosya sistemi bağladığınızda pod'un çalıştığı düğüm, CPFS AI Edition dosya sistemi örneğiyle aynı hesaplama-depolama yakınlık alanında olmalıdır.

  • CPFS için CSI konteyner tabanlı bağlama kullanıyorsanız bir Lingjun düğüm grubu oluştururken yüksek performanslı dosya depolama erişimini destekleme seçeneğini belirleyin.

  • Bir Lingjun düğümünü arıza nedeniyle çevrimdışı duruma getirmeden önce pod'ları bu düğümden boşaltın. Aksi takdirde küme meta verileri tutarsız hale gelir; bu durum pod kaynaklarının kalmasına ve düzgün şekilde geri alınamamasına neden olur.

  • Tek bir pod içinde birden fazla PV aracılığıyla aynı CPFS örneğinden farklı alt dizinlerin bağlanması desteklenmez. Alt düzey sürücü sınırlamaları nedeniyle bu yapılandırma pod'un başlatılamamasına neden olur.

    CPFS örneği için yalnızca bir PV/PVC oluşturun ve ardından pod volumeMounts yapılandırmasındaki subPath alanını kullanarak gerekli alt dizinleri ayrı ayrı bağlayın.

    subPath , hafif bir bind mount mekanizmasına dayanır ve ek performans yükü getirmez.

Erişim kanalları ve planlama

ACK Lingjun kümesinde bir pod'un CPFS AI Edition'a eriştiği ağ kanalı, pod planlama konumuna göre belirlenir. CSI eklentisi en uygun kanalı otomatik olarak seçer:


Pod planlama konumu


Erişim kanalı


Tipik senaryo


Aynı hesaplama-depolama yakınlık alanındaki Lingjun GPU düğümü


VSC + RDMA (en iyi performans)


GPU eğitim görevleri


Farklı bir hesaplama-depolama yakınlık alanındaki Lingjun düğümü


Otomatik olarak VPC bağlama hedefine (TCP) geçer


Alanlar arası eğitim veya çıkarım görevleri


Lingjun olmayan düğüm (CPU düğüm havuzu)


VPC bağlama hedefi (TCP)


CPU pod'ları: veri ön işleme, çıkarım hizmetleri, planlama yönetimi vb.

Otomatik kanal değiştirmeyi etkinleştirmek için PV'nin volumeAttributes bölümünde hem mountpointAutoSwitch: "true" hem de vpcMountTarget (VPC bağlama hedefi etki alanı adı) değerlerini yapılandırın. Yapılandırma ayrıntıları için aşağıdaki Adım 1: PV ve PVC oluşturma bölümüne bakın.

Bir Lingjun düğümü ile bir CPFS dosya sisteminin aynı hesaplama-depolama yakınlık alanında olup olmadığını belirlemek için bkz. Bağlama erişimine genel bakış.

Adım 1: PV ve PVC oluşturma

  1. Aşağıdaki şablonu bmcpfs-pv-pvc.yaml olarak kaydedin; yer tutucuları dosya sistemi kimliğinizle ve (gerekiyorsa) VPC bağlama hedefinizle değiştirin.

    PV parametreleri


    Parametre


    Açıklama


    Gerekli


    accessModes


    PV için erişim modu.


    Evet


    capacity.storage


    Bildirilen depolama kapasitesi. Gerçek kapasiteyi etkilemez.


    Evet


    csi.driver


    Sürücü türü. Lingjun için CPFS kullanırken bmcpfsplugin.csi.alibabacloud.com kullanın.


    Evet


    csi.volumeHandle


    Lingjun için CPFS dosya sisteminin kimliği.


    Evet


    csi.volumeAttributes.vpcMountTarget


    VPC bağlama hedefi etki alanı adı. Lingjun olmayan düğümler için gereklidir; pod'lar yalnızca Lingjun düğümlerine planlanıyorsa atlayın.


    Koşullu


    csi.volumeAttributes.mountpointAutoSwitch


    VSC ve VPC bağlama noktaları arasında otomatik geçişi etkinleştirir. vpcMountTarget ile birlikte kullanın.


    Hayır


    mountOptions


    Bağlama seçenekleri.


    Hayır

    PVC parametreleri


    Parametre


    Açıklama


    Gerekli


    accessModes


    PVC tarafından istenen erişim modu. PV ile eşleşmelidir.


    Evet


    resources.requests.storage


    Pod'a ayrılan depolama kapasitesi. PV kapasitesini aşmamalıdır.


    Evet


    volumeMode


    Bağlama modu. Filesystem olarak ayarlayın.


    Evet


    volumeName


    Bu PVC'ye bağlanacak PV'nin adı.


    Evet

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: bmcpfs
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti
      claimRef:
        name: bmcpfs
        namespace: default
      csi:
        driver: bmcpfsplugin.csi.alibabacloud.com
        volumeAttributes:
          # Required if pods schedule to non-Lingjun nodes or cross-zone automatic VPC switching is enabled.
          # Omit if pods schedule only to Lingjun nodes.
          vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com
          # Enables automatic switching between VSC and VPC mount points.
          # Use together with vpcMountTarget.
          mountpointAutoSwitch: "true"
        # Replace with your CPFS for Lingjun file system ID.
        volumeHandle: bmcpfs-*****
      mountOptions: []
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Ti
      volumeMode: Filesystem
      volumeName: bmcpfs
  2. Yapılandırmayı uygulayın.

    kubectl apply -f bmcpfs-pv-pvc.yaml
  3. PVC'nin PV'ye bağlı olduğunu doğrulayın.

    kubectl get pvc bmcpfs

    Beklenen çıktı:

    NAME     STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    bmcpfs   Bound    bmcpfs   10Ti       RWX                           <unset>                 51s

    STATUS değeri Bound olarak görünür; bu da PVC'nin PV'ye bağlı olduğunu doğrular.

Adım 2: Uygulama oluşturma ve CPFS bağlama

Senaryo 1: Tüm CPFS dosya sistemini bağlama

Tüm konteynerlerin CPFS dosya sistemine tam erişime ihtiyacı duyduğunda bu yaklaşımı kullanın.

  1. Aşağıdaki YAML şablonunu cpfs-test.yaml olarak kaydedin.

    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: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: bmcpfs
  2. Deployment'ı oluşturun.

    kubectl create -f cpfs-test.yaml
  3. Her iki pod'un da çalıştığını doğrulayın.

    kubectl get pod -l app=cpfs-test

    Beklenen çıktı:

    NAME                         READY   STATUS    RESTARTS   AGE
    cpfs-test-76b77d64b5-2hw96   1/1     Running   0          42s
    cpfs-test-76b77d64b5-dnwdx   1/1     Running   0          42s
  4. Bir pod içindeki CPFS birimi bağlantısını doğrulayın.

    kubectl exec -it <pod-name> -- mount | grep /data

    Beklenen çıktı:

    bindroot-f0a5c-******:cpfs-*******-vpc-****.cn-shanghai.cpfs.aliyuncs.com:/ on /data type fuse.aliyun-alinas-efc (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=1048576)

    /data konumundaki fuse.aliyun-alinas-efc bağlama türü, CPFS biriminin bağlandığını doğrular.

Senaryo 2: Veri yalıtımı için alt dizinleri bağlama

Çok kiracılı veya çok görevli kurulumlar gibi paylaşılan depolama senaryolarında birden çok konteyner tek bir CPFS birimini paylaşırken verileri ayrı dizinlerde yalıtabilir. Aynı PVC'den farklı alt dizinleri farklı konteynerlere bağlamak için volumeMounts.subPath kullanın.

Bir subPath dizini (örneğin, workspace/alpha ) yoksa otomatik olarak oluşturulur.
  1. Aşağıdaki YAML şablonunu pod.yaml olarak kaydedin. Bu pod, aynı PVC'nin (bmcpfs) farklı alt dizinlerini bağlayan iki konteyner çalıştırır.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cpfs-subpath-demo-pod
    spec:
      containers:
        - name: task-alpha-container
          image: busybox:1.35
          command: ["/bin/sh", "-c", "sleep 3600"]
          volumeMounts:
            - name: cpfs-storage
              mountPath: /data/workspace        # Mount path inside the container
              subPath: workspace/alpha          # Mount the workspace/alpha subdirectory only
    
        - name: task-beta-container
          image: busybox:1.35
          command: ["/bin/sh", "-c", "sleep 3600"]
          volumeMounts:
            - name: cpfs-storage
              mountPath: /data/workspace        # Mount paths can be identical across containers
              subPath: workspace/beta           # Mount the workspace/beta subdirectory only
      volumes:
        - name: cpfs-storage
          persistentVolumeClaim:
            claimName: bmcpfs                  # Reference the PVC created earlier
  2. Pod'u dağıtın.

    kubectl apply -f pod.yaml
  3. task-alpha-container için bağlamayı ve yazma izinlerini doğrulayın.

    1. Konteynere bağlanın.

      kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh
    2. CPFS biriminin bağlandığını onaylayın.

      df -h

      Beklenen çıktı (paylaşılan dizin /data/workspace konumuna bağlanır):

      Filesystem                Size      Used Available Use% Mounted on
      ...
      192.XX.XX.0:/share          10.0T     1.0G     10.0T   0% /data/workspace
      ...

      /data/workspace konumundaki dosya sistemi girişi, CPFS alt dizininin bağlandığını doğrular.

    3. Üst dizin yapısını kontrol edin.

      ls -l /data/

      Beklenen çıktı:

      total 4
      drwxr-xr-x    2 root     root          4096 Aug 15 10:00 workspace
    4. Bir test dosyası yazın ve çıkın.

      echo "hello from alpha" > /data/workspace/alpha.log
      exit
  4. task-beta-container bağlantısını ve veri yalıtımını doğrulayın.

    1. Konteynere bağlanın.

      kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh
    2. Bir test dosyası yazın.

      echo "hello from beta" > /data/workspace/beta.log
    3. Bağlama noktasındaki dosyaları listeleyin.

      ls -l /data/workspace/

      Beklenen çıktı:

      total 4
      -rw-r--r--    1 root     root            16 Aug 15 10:05 beta.log

      beta.log mevcut ancak alpha.log yok; bu da konteynerler arasındaki veri yalıtımını doğrular.

Adım 3: Bağlamayı doğrulama

kubectl exec -it <pod-name> -- mount | grep /data
# Expected output contains fuse.aliyun-alinas-efc, indicating the EFC + FUSE protocol is in use