All Products
Search
Document Center

Cloud Parallel File Storage:Memasang sistem file CPFS AI Edition pada ACK

Last Updated:Jul 30, 2026

CPFS AI Edition mendukung beberapa Pod memasang sistem file yang sama secara bersamaan dalam mode ReadWriteMany, sehingga memungkinkan akses bersama ke data pelatihan dan model. Topik ini menjelaskan cara memasang sistem file CPFS AI Edition sebagai volume penyimpanan statis di dalam kontainer menggunakan plugin ACK CSI.

Prasyarat

  • Kluster managed ACK Lingjun telah dibuat, menjalankan Kubernetes 1.26 atau versi lebih baru, dengan Alibaba Cloud Linux 3 sebagai sistem operasi node.

  • Sistem file CPFS AI Edition telah dibuat. Catat ID sistem file tersebut. Untuk informasi selengkapnya, lihat Create a CPFS AI Edition file system.

  • Komponen penyimpanan berikut telah dipasang di kluster ACK. Anda dapat memeriksa versinya di halaman Manajemen Komponen kluster atau Manage CSI components:

    Component

    Required version

    csi-plugin / csi-provisioner

    ≥ v1.33.1

    cnfs-nas-daemon

    ≥ 0.1.2

    bmcpfs-csi-controller / bmcpfs-csi-node

    Dikelola oleh ACK. Tidak perlu instalasi manual.

  • Jika sebuah Pod dijadwalkan ke node non-Lingjun atau node Lingjun di zona afinitas komputasi-penyimpanan yang berbeda, Anda harus terlebih dahulu membuat titik pemasangan VPC dan mencatat nama domain titik pemasangan tersebut (dalam format cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com). VPC tempat titik pemasangan VPC berada harus sama dengan VPC kluster ACK. Untuk informasi selengkapnya, lihat Manage VPC mount points.

Pertimbangan

  • Saat memasang sistem file CPFS menggunakan VSC, node tempat Pod berjalan harus berada di zona afinitas komputasi-penyimpanan yang sama dengan instans sistem file CPFS AI Edition.

  • Jika menggunakan pemasangan berbasis kontainer CSI untuk CPFS, Anda harus memilih opsi untuk mendukung akses penyimpanan file berkinerja tinggi saat membuat kelompok node Lingjun.

  • Sebelum node Lingjun dinonaktifkan karena gangguan, Anda harus terlebih dahulu mengosongkan Pod dari node tersebut. Jika tidak, metadata kluster menjadi tidak konsisten, sehingga sumber daya Pod tetap tersisa dan tidak dapat diklaim ulang dengan benar.

  • Tidak didukung memasang subdirektori berbeda dari instans CPFS yang sama melalui beberapa PV dalam satu Pod. Karena keterbatasan driver dasar, konfigurasi ini menyebabkan Pod gagal memulai.

    Disarankan hanya membuat satu PV/PVC untuk instans CPFS, lalu menggunakan bidang subPath dalam konfigurasi volumeMounts Pod untuk memasang subdirektori yang diperlukan secara terpisah.

    subPath diimplementasikan berdasarkan mekanisme bind mount ringan dan tidak menimbulkan overhead kinerja tambahan.

Saluran akses dan penjadwalan

Dalam kluster ACK Lingjun, saluran jaringan yang digunakan Pod untuk mengakses CPFS AI Edition ditentukan oleh lokasi penjadwalan Pod. Plugin CSI secara otomatis memilih saluran optimal:

Lokasi penjadwalan Pod

Saluran akses

Skenario khas

Node GPU Lingjun di zona afinitas komputasi-penyimpanan yang sama

VSC + RDMA (kinerja optimal)

Tugas pelatihan GPU

Node Lingjun di zona afinitas komputasi-penyimpanan yang berbeda

Otomatis beralih ke titik pemasangan VPC (TCP)

Tugas pelatihan atau inferensi lintas zona

Node non-Lingjun (kelompok node CPU)

Titik pemasangan VPC (TCP)

Pod CPU: pra-pemrosesan data, layanan inferensi, manajemen penjadwalan, dll.

Untuk mengaktifkan pengalihan saluran otomatis, Anda harus mengonfigurasi mountpointAutoSwitch: "true" dan vpcMountTarget (nama domain titik pemasangan VPC) dalam volumeAttributes PV. Untuk detail konfigurasi, lihat Langkah 1: Buat PV dan PVC di bawah.

Untuk menentukan apakah node Lingjun dan sistem file CPFS berada di zona afinitas komputasi-penyimpanan yang sama, lihat Overview of mount access.

Langkah 1: Buat PV dan PVC

  1. Simpan templat berikut sebagai bmcpfs-pv-pvc.yaml, lalu ganti placeholder dengan ID sistem file Anda dan (jika diperlukan) titik pemasangan VPC.

    Parameter PV

    Parameter

    Description

    Required

    accessModes

    Mode akses untuk PV.

    Ya

    capacity.storage

    Kapasitas penyimpanan yang dideklarasikan. Tidak memengaruhi kapasitas aktual.

    Ya

    csi.driver

    Jenis driver. Untuk CPFS for Lingjun, gunakan bmcpfsplugin.csi.alibabacloud.com.

    Ya

    csi.volumeHandle

    ID sistem file CPFS for Lingjun.

    Ya

    csi.volumeAttributes.vpcMountTarget

    Nama domain titik pemasangan VPC. Diperlukan untuk node non-Lingjun; abaikan jika Pod hanya dijadwalkan ke node Lingjun.

    Bersyarat

    csi.volumeAttributes.mountpointAutoSwitch

    Mengaktifkan pengalihan otomatis antara titik pemasangan VSC dan VPC. Gunakan bersama vpcMountTarget.

    Tidak

    mountOptions

    Opsi pemasangan.

    Tidak

    Parameter PVC

    Parameter

    Description

    Required

    accessModes

    Mode akses yang diminta oleh PVC. Harus sesuai dengan PV.

    Ya

    resources.requests.storage

    Kapasitas penyimpanan yang dialokasikan ke Pod. Tidak boleh melebihi kapasitas PV.

    Ya

    volumeMode

    Mode pemasangan. Atur ke Filesystem.

    Ya

    volumeName

    Nama PV yang akan di-bind ke PVC ini.

    Ya

    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:
          # Diperlukan jika Pod dijadwalkan ke node non-Lingjun atau pengalihan otomatis lintas zona diaktifkan.
          # Abaikan jika Pod hanya dijadwalkan ke node Lingjun.
          vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com
          # Mengaktifkan pengalihan otomatis antara titik pemasangan VSC dan VPC.
          # Gunakan bersama vpcMountTarget.
          mountpointAutoSwitch: "true"
        # Ganti dengan ID sistem file CPFS for Lingjun Anda.
        volumeHandle: bmcpfs-*****
      mountOptions: []
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Ti
      volumeMode: Filesystem
      volumeName: bmcpfs
  2. Terapkan konfigurasi.

    kubectl apply -f bmcpfs-pv-pvc.yaml
  3. Konfirmasi bahwa PVC telah di-bind ke PV.

    kubectl get pvc bmcpfs

    Output yang diharapkan:

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

    STATUS bernilai Bound, yang mengonfirmasi bahwa PVC telah di-bind ke PV.

Langkah 2: Buat aplikasi dan pasang CPFS

Skenario 1: Memasang seluruh sistem file CPFS

Gunakan pendekatan ini ketika semua kontainer membutuhkan akses penuh ke sistem file CPFS.

  1. Simpan templat YAML berikut sebagai cpfs-test.yaml.

    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. Buat Deployment.

    kubectl create -f cpfs-test.yaml
  3. Verifikasi kedua Pod sedang berjalan.

    kubectl get pod -l app=cpfs-test

    Output yang diharapkan:

    NAME                         READY   STATUS    RESTARTS   AGE
    cpfs-test-76b77d64b5-2hw96   1/1     Running   0          42s
    cpfs-test-76b77d64b5-dnwdx   1/1     Running   0          42s
  4. Verifikasi pemasangan volume CPFS di dalam Pod.

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

    Output yang diharapkan:

    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)

    Jenis pemasangan fuse.aliyun-alinas-efc di /data mengonfirmasi bahwa volume CPFS telah dipasang.

Skenario 2: Memasang subdirektori untuk isolasi data

Dalam skenario penyimpanan bersama seperti pengaturan multi-penyewa atau multitasking, beberapa kontainer dapat berbagi satu volume CPFS sekaligus mengisolasi data di direktori terpisah. Gunakan volumeMounts.subPath untuk memasang subdirektori berbeda ke kontainer berbeda dari PVC yang sama.

Jika direktori subPath (misalnya, workspace/alpha) belum ada, direktori tersebut akan dibuat secara otomatis.
  1. Simpan templat YAML berikut sebagai pod.yaml. Pod ini menjalankan dua kontainer, masing-masing memasang subdirektori berbeda dari PVC yang sama (bmcpfs).

    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        # Jalur pemasangan di dalam kontainer
              subPath: workspace/alpha          # Hanya memasang subdirektori workspace/alpha
    
        - name: task-beta-container
          image: busybox:1.35
          command: ["/bin/sh", "-c", "sleep 3600"]
          volumeMounts:
            - name: cpfs-storage
              mountPath: /data/workspace        # Jalur pemasangan bisa identik di berbagai kontainer
              subPath: workspace/beta           # Hanya memasang subdirektori workspace/beta
      volumes:
        - name: cpfs-storage
          persistentVolumeClaim:
            claimName: bmcpfs                  # Referensi ke PVC yang dibuat sebelumnya
  2. Deploy Pod.

    kubectl apply -f pod.yaml
  3. Verifikasi pemasangan dan izin tulis untuk task-alpha-container.

    1. Koneksikan ke kontainer.

      kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh
    2. Konfirmasi bahwa volume CPFS telah dipasang.

      df -h

      Output yang diharapkan (direktori bersama dipasang di /data/workspace):

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

      Entri filesystem di /data/workspace mengonfirmasi bahwa subdirektori CPFS telah dipasang.

    3. Periksa struktur direktori induk.

      ls -l /data/

      Output yang diharapkan:

      total 4
      drwxr-xr-x    2 root     root          4096 Aug 15 10:00 workspace
    4. Tulis file uji dan keluar.

      echo "hello from alpha" > /data/workspace/alpha.log
      exit
  4. Verifikasi pemasangan dan isolasi data untuk task-beta-container.

    1. Koneksikan ke kontainer.

      kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh
    2. Tulis file uji.

      echo "hello from beta" > /data/workspace/beta.log
    3. Daftar file di titik pemasangan.

      ls -l /data/workspace/

      Output yang diharapkan:

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

      beta.log ada, tetapi alpha.log tidak ada, yang mengonfirmasi isolasi data antar kontainer.

Langkah 3: Verifikasi pemasangan

kubectl exec -it <pod-name> -- mount | grep /data
# Output yang diharapkan berisi fuse.aliyun-alinas-efc, yang menunjukkan protokol EFC + FUSE sedang digunakan