# 设置文件存储挂载参数
本章节主要介绍如何设置文件存储的挂载参数。您可以在PV中设置挂载参数，然后通过PVC绑定PV，也可以在StorageClass中设置挂载参数，然后使用StorageClass创建PVC，动态创建出的PV会默认带有StorageClass中设置的挂载参数。
![](https://support.huaweicloud.com/usermanual-cce-autopilot/public_sys-resources/caution_3.0-zh-cn.png)
目前，只有部分区域支持使用文件存储，具体请以控制台为准。使用通用文件系统（原SFS3.0）需要提前配置的VPC终端节点，具体配置操作请参见[配置VPC终端节点](https://support.huaweicloud.com/usermanual-sfs/sfs_01_0134.html)。
 #### 文件存储挂载参数
CCE Autopilot在挂载文件存储时默认设置了如[表1]所示的参数。
 表1文件存储挂载参数 
| 参数                     | 参数值    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| keep-original-ownership | 无需填写  | 表示是否保留文件挂载点的ownership。 - 默认为不添加该参数，此时挂载文件存储时将会默认把挂载点的ownership修改为root:root。    - 如添加该参数，挂载文件存储时将保持文件系统原有的ownership。   |
| vers                   | 3     | 文件系统版本，目前只支持NFSv3。取值：3                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| nolock                 | 无需填写  | 选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时，锁对于同一主机的应用有效，对不同主机不受锁的影响。                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| timeo                 | 600   | NFS客户端重传请求前的等待时间(单位为0.1秒)。建议值：600。                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| hard/soft            | 无需填写 | 挂载方式类型。 - 取值为hard，即使用硬连接方式，若NFS请求超时，则客户端一直重新请求直至成功。  - 取值为soft，即软挂载方式挂载系统，若NFS请求超时，则客户端向调用程序返回错误。   默认为hard。                  |
| sharecache/nosharecache                            | 无需填写                               | 设置客户端并发挂载同一文件系统时数据缓存和属性缓存的共享方式。设置为sharecache时，多个挂载共享共享同一缓存。设为nosharecache时，每个挂载各有一个缓存。默认为sharecache。 说明： 设置nosharecache禁用共享缓存会对性能产生一定影响。每次挂载都会重新获取挂载信息，会增加与NFS服务器的通信开销和NFS客户端的内存消耗，同时同客户端设置nosharecache存在cache不一致的风险。因此，应该根据具体情况进行权衡，以确定是否需要使用nosharecache选项。                                                                                                                                                                                                                                 |
   
除了以上参数外，您还可以设置其他的文件存储挂载参数，具体请参见[挂载通用文件系统到Linux云服务器](https://support.huaweicloud.com/usermanual-sfs/zh-cn_topic_0034428728.html)。
#### 配置挂载参数
您可以通过以下两种方式进行配置：
- [在PV中设置挂载参数]
  在PV中设置挂载参数可以通过mountOptions字段实现，如下所示，mountOptions支持挂载的字段请参见[文件存储挂载参数]。
  1. 使用kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0107.html)。
  
  2. 在PV中设置挂载参数，示例如下： 
     ```
     apiVersion: v1
     kind: PersistentVolume
     metadata:
       annotations:
         pv.kubernetes.io/provisioned-by: everest-csi-provisioner
         everest.io/reclaim-policy: retain-volume-only      # 可选字段，删除PV，保留底层存储卷
       name: pv-sfs
     spec:
       accessModes:
       - ReadWriteMany      # 访问模式，文件存储必须为ReadWriteMany
       capacity:
         storage: 1Gi       # 文件存储容量大小
       csi:
         driver: nas.csi.everest.io    # 挂载依赖的存储驱动
         fsType: nfs
         volumeHandle: <your_volume_id>   # 使用通用文件系统（原SFS 3.0 容量型）时填写文件存储名称
         volumeAttributes:
           everest.io/share-export-location: <your_location>  # 文件存储的共享路径
           storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
           everest.io/sfs-version: sfs3.0       # 使用通用文件系统（原SFS 3.0 容量型）
       persistentVolumeReclaimPolicy: Retain    # 回收策略
       storageClassName: csi-sfs                # 存储类名称：csi-sfs表示使用通用文件系统（原SFS 3.0 容量型）
       mountOptions:                            # 挂载参数
       - vers=3
       - nolock
       - timeo=600
       - hard
     ```
     
     
  
  3. PV创建后，可以创建PVC关联PV，然后在工作负载的容器中挂载，具体操作步骤请参见[通过静态存储卷使用已有文件存储](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0619.html)。
  
  4. 验证挂载参数是否生效。 
     本例中将PVC挂载至使用nginx:latest镜像的工作负载，并通过**mount -l** 命令查看挂载参数是否生效。
     1. 查看已挂载文件存储的Pod，本文中的示例工作负载名称为web-sfs。
        ```
        kubectl get pod | grep web-sfs
        ```
        回显如下：
        ```
        web-sfs-***   1/1     Running   0             23m
        ```
        
     
     2. 执行以下命令查看挂载参数，其中web-sfs-\*\*\*为示例Pod。
        ```
        kubectl exec -it web-sfs-*** -- mount -l | grep nfs
        ```
        若回显中的挂载信息与设置的挂载参数一致，说明挂载参数设置成功。
        ```
        <您的共享路径> on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**)
        ```
        
      
     
     
   
- [在StorageClass中设置挂载参数]
  在StorageClass中设置挂载参数同样可以通过mountOptions字段实现，如下所示，mountOptions支持挂载的字段请参见[文件存储挂载参数]。
  1. 使用kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0107.html)。
  
  2. 创建自定义的StorageClass，示例如下： 
     ```
     apiVersion: storage.k8s.io/v1
     kind: StorageClass
     metadata:
       name: csi-sfs-mount-option
     provisioner: everest-csi-provisioner
     parameters:
       csi.storage.k8s.io/csi-driver-name: nas.csi.everest.io
       csi.storage.k8s.io/fstype: nfs
       everest.io/share-access-to: <your_vpc_id>   # 集群所在VPC的ID
       everest.io/sfs-version: sfs3.0              # 表示使用通用文件系统（原SFS 3.0 容量型）文件存储
     reclaimPolicy: Delete
     volumeBindingMode: Immediate
     mountOptions:                            # 挂载参数
     - vers=3
     - nolock
     - timeo=600
     - hard
     ```
     
     
  
  3. StorageClass设置好后，就可以使用这个StorageClass创建PVC，动态创建出的PV会默认带有StorageClass中设置的挂载参数，具体操作步骤请参见[通过动态存储卷使用文件存储](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0620.html)。
  
  4. 验证挂载参数是否生效。 
     本例中将PVC挂载至使用nginx:latest镜像的工作负载，并通过**mount -l** 命令查看挂载参数是否生效。
     1. 查看已挂载文件存储的Pod，本文中的示例工作负载名称为web-sfs。
        ```
        kubectl get pod | grep web-sfs
        ```
        回显如下：
        ```
        web-sfs-***   1/1     Running   0             23m
        ```
        
     
     2. 执行以下命令查看挂载参数，其中web-sfs-\*\*\*为示例Pod。
        ```
        kubectl exec -it web-sfs-*** -- mount -l | grep nfs
        ```
        若回显中的挂载信息与设置的挂载参数一致，说明挂载参数设置成功。
        ```
        <您的共享路径> on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**)
        ```
        
      
     
     
   
