设置云硬盘存储挂载参数
挂载参数(mountOptions)是在文件系统挂载过程中传递给内核的选项,用于控制存储设备(如云硬盘、SFS、OBS等)的访问方式、性能优化、安全策略等。CCE支持在PV和StorageClass中设置挂载参数,具体如下:
- 在PV中设置挂载参数:仅作用于当前PV,适用于为特定存储卷定制挂载参数的场景。
- 在StorageClass中设置挂载参数:作用于所有通过该SC动态创建的PV,适用于为EVS统一配置挂载参数的场景。
前提条件
CCE容器存储(Everest)版本要求2.4.153及以上版本。插件主要负责将挂载参数识别并传递给底层存储,指定参数是否有效依赖于底层存储是否支持。
约束与限制
- 挂载参数暂不支持安全容器。
- 对于运行在Huawei Cloud EulerOS 1.1或CentOS 7.6节点上的工作负载,不支持配置云硬盘挂载参数。
云硬盘挂载参数
CCE支持挂载以下参数
参数 |
参数值 |
描述 |
---|---|---|
noatime/strictatime/relatime |
无需填写 |
这三个参数表示文件访问时间(atime)的三种更新行为,选其一即可,具体如下:
|
配置挂载参数
您可以通过以下两种方式进行配置:
在PV中设置挂载参数可以通过mountOptions字段实现,且仅针对当前PV有效。mountOptions支持挂载的字段请参见云硬盘挂载参数。
- 使用kubectl连接集群,详情请参见通过kubectl连接集群。
- 在PV中设置挂载参数,示例如下:
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: everest-csi-provisioner name: pv-disk # PV的名称 labels: failure-domain.beta.kubernetes.io/region: cn-north-7 failure-domain.beta.kubernetes.io/zone: cn-north-7c spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi # 存储容量大小 csi: driver: disk.csi.everest.io fsType: ext4 volumeHandle: {your_volume_id} # 云硬盘的ID volumeAttributes: storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner everest.io/disk-mode: SCSI everest.io/disk-volume-type: SATA everest.io/enterprise-project-id: '0' persistentVolumeReclaimPolicy: Retain storageClassName: csi-disk mountOptions: # 挂载参数 - strictatime
- PV创建后,可以创建PVC关联PV,然后在工作负载的容器中挂载,具体操作步骤请参见通过静态存储卷使用已有云硬盘。
- 验证挂载参数是否生效。本例中将PVC挂载至使用nginx:latest镜像的工作负载中,且容器中的挂载路径为/testdir,验证步骤如下:
- 执行以下命令,查看已挂载该PVC的Pod名称,本文中的示例工作负载名称为web-disk。
kubectl get pod | grep web-disk
回显结果如下:
web-disk-xxx 1/1 Running 0 23m
- 执行以下命令,进入Pod内部。
kubectl exec -it web-disk-xxx -- bash
- 执行以下命令,进入挂载路径并生成测试文件。
cd /testdir echo 'ok' > testfile
- 重复执行以下命令,观察输出的Access。若Access有变化 ,则说明strictatime挂载参数已生效。
stat testfile && cat testfile > /dev/null
- 执行以下命令,查看已挂载该PVC的Pod名称,本文中的示例工作负载名称为web-disk。
在StorageClass中设置挂载参数同样可以通过mountOptions字段实现,对所有使用该StorageClass创建的PV有效。mountOptions支持挂载的字段请参见云硬盘挂载参数。
- 使用kubectl连接集群,详情请参见通过kubectl连接集群。
- 创建自定义的StorageClass,示例如下:
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk # 存储类的名称 mountOptions: # 挂载参数 - strictatime parameters: csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io csi.storage.k8s.io/fstype: ext4 everest.io/disk-volume-type: SAS everest.io/passthrough: "true" provisioner: everest-csi-provisioner reclaimPolicy: Delete volumeBindingMode: Immediate
- StorageClass设置好后,就可以使用这个StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数,具体操作步骤请参见通过动态存储卷使用云硬盘。
- 验证挂载参数是否生效。本例中将PVC挂载至使用nginx:latest镜像的工作负载中,且容器中的挂载路径为/testdir,验证步骤如下:
- 执行以下命令,查看已挂载该PVC的Pod名称,本文中的示例工作负载名称为web-disk。
kubectl get pod | grep web-disk
回显结果如下:
web-disk-xxx 1/1 Running 0 23m
- 执行以下命令,进入Pod内部。
kubectl exec -it web-disk-xxx -- bash
- 执行以下命令,进入挂载路径并生成测试文件。
cd /testdir echo 'ok' > testfile
- 重复执行以下命令,观察输出的Access。若Access有变化 ,则说明strictatime挂载参数已生效。
stat testfile && cat testfile > /dev/null
- 执行以下命令,查看已挂载该PVC的Pod名称,本文中的示例工作负载名称为web-disk。