Updated on 2025-08-12 GMT+08:00

SFS Turbo Volumes

CCI 2.0 allows you to mount SFS Turbo volumes to container paths. SFS Turbo volumes are fast, on-demand, and scalable. They are suitable for DevOps, containerized microservices, and enterprise office applications.

Constraints

  • SFS Turbo file systems are billed on a pay-per-use basis. For more information, see SFS Turbo Pricing.
  • The SFS Turbo file system must be in the same VPC as the workload. If they are in different VPCs, the workload cannot use the SFS Turbo file system for persistent storage.
  • If an SFS Turbo file system is in use, the VPC where the file system is deployed cannot be changed. Once the VPC is changed, the containers in CCI 2.0 will not be able to access the file system.
  • If an SFS Turbo file system is deleted, containers in CCI 2.0 will become unavailable.
  • SFS Turbo file systems do not involve AZs, so PVs of the SFS Turbo type do not support AZ affinity.
  • CCI 2.0 supports SFS Turbo only in the TR-Istanbul and AF-Johannesburg regions.

Importing SFS Turbo File Systems

Currently, SFS Turbo file systems can only be used by CCI 2.0 containers through static PVC binding.

  1. Create an SFS Turbo file system. For details, see Creating an SFS Turbo File System.
  2. Create a PV.

    1. Obtain the IAM token.
       curl -i -k -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' -X POST -d '{"auth": {"identity":{"methods": ["password"],"password":{"user": {"name": "$username","password": "$password","domain": {"name": "$domain"}}}},"scope": {"project":{"name": "$project"}}}}' https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens | grep "X-Subject-Token"|awk -F ": " '{print $2}'|sed "s/\r//"

    2. Call the API for creating a PV.
       curl -H "X-Auth-Token:$token" -H 'Content-Type: application/json' -X POST -d @pv.json  -k -v https://cci.cn-north-4.myhuaweicloud.com/apis/cci/v2/persistentvolumes

      In this command, $token is the IAM token obtained in 2.a, and pv.json is the information about the PV to be created. The following is an example:

      {
              "apiVersion": "cci/v2",
              "kind": "PersistentVolume",
              "metadata": {
                  "annotations": {
                  },
                  "name": "pv-sfs-test"
              },
              "spec": {
                  "accessModes": [
                      "ReadWriteMany"
                  ],
                  "capacity": {
                      "storage": "500Gi"
                  },
                  "csi": {
                      "driver": "sfsturbo.csi.everest.io",
                      "fsType": "nfs",
                      "volumeHandle": "**************", 
                      "volumeAttributes": {
                          "everest.io/share-export-location": "*******"
                      }
                  },
                  "persistentVolumeReclaimPolicy": "Retain",
                  "storageClassName": "csi-sfsturbo",
                  "mountOptions": [
                  ]
              }
          }
      Table 1 Key parameters

      Parameter

      Mandatory

      Type

      Description

      accessModes

      Yes

      List

      Description: Storage access mode.

      Constraint: The value must be ReadWriteMany for SFS Turbo volumes.

      driver

      Yes

      String

      Description: Storage driver that the volume depends on.

      Constraint: The value must be sfsturbo.csi.everest.io.

      fsType

      Yes

      String

      Description: Storage instance type.

      Constraint: The value must be nfs, which indicates file system volumes.

      volumeHandle

      Yes

      String

      Description: ID of the SFS Turbo file system.

      Constraint: The ID must be that of an existing SFS Turbo file system.

      persistentVolumeReclaimPolicy

      Yes

      String

      Description: PV reclaim policy.

      Constraint: Only the Retain policy is supported.

      Retain: When a PVC is deleted, both the PV and underlying storage are retained. You need to manually delete these resources. After the PVC is deleted, the PV is in the Released state and cannot be bound to a PVC again.

      storage

      Yes

      String

      Description: Storage capacity, in Gi.

      Constraint: Set it to the size of the SFS Turbo file system.

      storageClassName

      Yes

      String

      Description: Storage class name of the SFS Turbo volume.

      Constraint: The storage class name of SFS Turbo volumes is csi-sfsturbo.

      volumeHandle is the ID of the SFS Turbo file system created in 1, and everest.io/share-export-location is the shared path of the SFS Turbo file system.

      The following figure shows the response to the request for creating a PV.

  3. Create a PVC.

    1. Obtain the IAM token. For details, see 2.a.
    2. Call the API for creating a PVC and bind the created PV.
      curl -H "X-Auth-Token:$token" -H 'Content-Type: application/json' X POST -d @pvc.json  -k -v https://cci.cn-north-4.myhuaweicloud.com/apis/cci/v2/namespaces/${namespace}/persistentvolumeclaims

      pvc.json indicates the information about the PVC to be created. The following is an example:

      {
              "apiVersion": "cci/v2",
              "kind": "PersistentVolumeClaim",
              "metadata": {
                  "name": "pvc-sfs",
                  "annotations": {
                  }
              },
              "spec": {
                  "accessModes": [
                      "ReadWriteMany"
                  ],
                  "resources": {
                      "requests": {
                          "storage": "500Gi"
                      }
                  },
                  "storageClassName": "csi-sfsturbo",
                  "volumeName": "pv-sfs-test"
              }
          }
      Table 2 Key parameters

      Parameter

      Mandatory

      Type

      Description

      storage

      Yes

      String

      Description: PVC capacity, in Gi.

      Constraints

      • Set it to the size of the SFS Turbo file system.
      • The value is the same as the capacity set for the PV in Table 1.

      storageClassName

      Yes

      String

      Description: Storage class name.

      Constraints: The value must be the same as the storage class of the PV in Table 1. The storage class name of SFS Turbo volumes is csi-sfsturbo.

      volumeName

      Yes

      String

      Description: PV name.

      Constraint: The value must be the same as the PV name in Table 1.

      volumeName indicates the name of the PV created in 3.

      The following figure shows the response to the request for creating a PVC, and the PVC has been bound to the PV.

Using SFS Turbo Volumes

For details, see Deployments. Add the volume configuration to the workload YAML file.

kind: Deployment
apiVersion: cci/v2
metadata:
  name: nginx
  namespace: test-ns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      volumes:
        - name: my-storage
          persistentVolumeClaim:
            claimName: PVC name
      containers:
        - name: nginx
          image: nginx:latest
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 1Gi
          volumeMounts:
            - name: my-storage
              mountPath: mount path of a container
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: Default
      securityContext: {}
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  • When an SFS Turbo file system is being created, an independent VM will also be created, and this will take a long time. Therefore, you are advised to select existing SFS Turbo volumes.
  • subPath is a sub-directory in the root path of the SFS Turbo file system. If there is no sub-directory, a sub-directory is automatically created in the SFS Turbo file system. Note that subPath must be a relative path.
  • If SFS Turbo volumes are used, workloads can be created only using YAML or ccictl.