1 - 文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接全局文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为3。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: StoragePool001
volumeType: fs
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=3 # NFS挂载时指定版本为3
DataTurbo协议配置示例
容器使用DataTurbo协议对接全局文件系统资源时,可以参考如下配置示例。该示例中,DataTurbo共享用户名为user01。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: dtfs-nas-181
pool: pool001
volumeType: fs
allocType: thin
authUser: user01
mountOptions:
- dn=xxx # 指定逻辑端口的域名为xxx
文件业务支持的存储类参数详细说明
表 1 StorageClass配置参数说明
参数 | 说明 | 必选参数 | 默认值 | 纳管卷是否生效 | 备注 |
|---|
metadata.name | 自定义的StorageClass对象名称。 | 是 | - | 是 | 以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 |
provisioner | 制备器名称。 | 是 | csi.huawei.com | 是 | 该字段需要指定为安装华为CSI时设置的驱动名称。 取值和values.yaml文件中driverName一致。 |
reclaimPolicy | 回收策略。支持如下类型: - Delete:自动回收资源。
- Retain:手动回收资源。
| 否 | Delete | 是 | - Delete:删除PV/PVC时会关联删除存储上的资源。
- Retain:删除PV/PVC时不会删除存储上的资源。
|
allowVolumeExpansion | 是否允许卷扩展。参数设置为true 时,使用该StorageClass的PV可以进行扩容操作。 | 否 | false | 是 | 此功能仅可用于扩容PV,不能用于缩容PV。 |
mountOptions | 挂载参数列表,可用于指定主机执行mount命令时-o选项的参数。 | 否 | - | 是 | 常见的mountOptions参数参考表2。 也可自行指定其他挂载参数。 |
parameters.backend | 待创建资源所在的后端名称。如果设置parameters.pool,则必须设置本字段。 | 条件必选 | - | 否 | 如果不设置,华为CSI随机选择一个满足容量要求的后端创建资源。 建议指定后端,确保创建的资源在预期的后端上。 |
parameters.pool | 待创建资源所在的存储资源池名称。 | 否 | - | 否 | 如果不设置,华为CSI会在所选后端上选择一个剩余容量最大的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 |
parameters.volumeName | 指定动态卷供应创建的存储资源名称。 支持配置占位符对存储资源名称进行自定义,支持的占位符如下: - PVC命名空间:{{ .PVCNamespace }}
- PVC名称:{{ .PVCName }}
| 否 | - | 否 | - 支持配置字母、数字、"-"、"_"、".",不能配置为空,生成的存储资源名称长度范围是1-255。
- 必须同时配置PVC命名空间和PVC名称。
- 为了避免资源名称重复,会将PVC UID作为唯一标识符默认添加到名称末尾。
配置示例: PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 |
parameters.volumeType | 待创建卷类型。支持如下类型: - lun:存储侧发放的资源是LUN。
- fs:存储侧发放的资源是文件系统。
- dtree:存储侧发放的资源是Dtree类型的卷
| 是 | - | 是 | 使用文件业务必须配置为fs。 |
parameters.allocType | 待创建卷的分配类型。支持如下类型: - thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
| 否 | thin | 否 | 配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。 |
parameters.authClient | 可访问该卷的NFS客户端IP地址信息,在使用nfs和nfs+协议时必选。 支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。 | 条件必选 | - | 否 | 可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 当使用客户端主机名称时建议使用全称域名。 IP地址支持IPv4、IPv6地址或两者的混合IP地址。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" |
parameters.authUser | 可访问DataTurbo共享的DataTurbo用户,在使用DataTurbo(dtfs)协议时必选。 | 条件必选 | - | 否 | 可以同时输入多个DataTurbo用户,以英文分号隔开。如示例:"auth_user1;auth_user2;auth_user3" |
parameters.rootSquash | 用于设置是否允许客户端的root权限。 可选值: - root_squash:表示不允许客户端以root用户访问,客户端使用root用户访问时映射为匿名用户。
- no_root_squash:表示允许客户端以root用户访问,保留root用户的权限。
| 否 | - | 否 | |
parameters.allSquash | 用于设置是否保留共享目录的UID和GID。 可选值: - all_squash:表示共享目录的UID和GID映射为匿名用户。
- no_all_squash:表示保留共享目录的UID和GID。
| 否 | - | 否 | |
parameters.disableVerifyCapacity | 是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。 可选值: - "true": 禁用卷容量校验。
- "false": 开启卷容量校验。
须知:使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。 | 否 | "true" | 是 | OceanStor A系列的扇区大小为512 B。 |
parameters.description | 用于配置创建的文件系统的描述信息。 参数类型:字符串 长度限制:0-255 | 否 | Created from Kubernetes CSI | 否 | |
表 2 常用mountOptions参数说明
参数 | 说明 | 必选参数 | 默认值 | 备注 |
|---|
mountOptions.nfsvers | 主机侧NFS挂载选项。支持如下挂载选项: nfsvers:挂载NFS时的协议版本。支持配置的参数值为“3”。 | 否 | - | 在主机执行mount命令时-o参数后的可选选项。列表格式。 指定NFS版本挂载时,当前支持NFS 3协议(需存储设备支持且开启)。 |
mountOptions.dn | 指定DataTurbo(dtfs)协议挂载时使用的逻辑端口的域名。 | 是 | - | 挂载HyperScale集群文件系统dn需要填写HyperScale集群下的域名。 dn参数描述仅供参考,DataTurbo协议其他挂载详细参数说明请参考《AI Storage Kit 25.x.x DTFS 用户指南》。 |
2 - 本地文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
mysc csi.huawei.com Delete Immediate true 8s
KVCache配置示例
当容器使用KVCache对接iMaster DME本地文件系统,且存储支持KVCache功能时,可以参考如下配置示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: kvcache-nas-sc
provisioner: csi.huawei.com
reclaimPolicy: Delete
parameters:
backend: dme-a800-backend
pool: StoragePool001
zoneVstoreName: System_vstore
volumeType: fs
enableKVCache: "true"
enableTimeAwareGc: "true"
gcTimeThreshold: "30"
disableVerifyCapacity: "true"
mountOptions:
- nfsvers=3 # NFS挂载时指定版本为3
表 1 StorageClass配置参数说明
参数 | 说明 | 必选参数 | 默认值 | 纳管卷是否生效 | 备注 |
|---|
metadata.name | 自定义的 StorageClass 对象名称 | 是 | - | 是 | 以 Kubernetes v1.22.1 为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾 |
provisioner | 制备器名称 | 是 | csi.huawei.com | 是 | 该字段需要指定为安装华为 CSI 时设置的驱动名称。取值和 values.yaml 文件中 driverName 一致 |
reclaimPolicy | 回收策略。支持如下类型:Delete:自动回收资源;Retain:手动回收资源 | 否 | Delete | 是 | Delete:删除 PV/PVC 时会关联删除存储上的资源。Retain:删除 PV/PVC 时不会删除存储上的资源。注意!删除 KVCache 资源会连同文件系统共享一起删除 |
allowVolumeExpansion | 是否允许卷扩展。参数设置为 true 时,使用该 StorageClass 的 PV 可以进行扩容操作 | 否 | false | 是 | 此功能仅可用于扩容 PV,不能用于缩容 PV |
mountOptions | 挂载参数列表,可用于指定主机执行 mount 命令时 -o 选项的参数 | 否 | - | 是 | 常见的mountOptions参数参考表2。 也可自行指定其他挂载参数。 |
parameters.backend | 待创建资源所在的后端名称。如果设置 parameters.pool,则必须设置本字段 | 是 | - | 否 | 当前iMaster DME本地文件系统创建KVCache场景下,需要指定使用的backend。 |
parameters.pool | 待创建资源所在的存储资源池名称 | 否 | - | 否 | 如果不设置,华为 CSI 会在所选后端上选择一个剩余容量最大的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上 |
parameters.zoneVstoreName | 存储设备的租户名。 | 否 | System_vStore | 否 | 仅在填入zoneSN场景下生效。在iMaster DME管理界面,选择"基础设施 > 存储设备 >系统 > 租户"。获取对应zone下的非全局租户名称。 |
parameters.volumeName | 指定动态卷供应创建的存储资源名称。支持配置占位符对存储资源名称进行自定义,支持的占位符如下:PVC 命名空间:{{ .PVCNamespace }};PVC 名称:{{ .PVCName }} | 否 | - | 否 | 支持配置字母、数字、"_"、"-",不能配置为空,生成的存储资源名称长度范围是 1-255。必须同时配置 PVC 命名空间和 PVC 名称。为了避免资源名称重复,会将 PVC UID 作为唯一标识符默认添加到名称末尾 |
parameters.volumeType | 待创建卷类型。支持如下类型: - lun:存储侧发放的资源是LUN。
- fs:存储侧发放的资源是文件系统。
- dtree:存储侧发放的资源是Dtree类型的卷
| 是 | - | 是 | 使用文件业务必须配置为fs。 |
parameters.disableVerifyCapacity | 是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。可选值:"true":禁用卷容量校验;"false":开启卷容量校验。使用 Red Hat OpenShift Virtualization 对接 CSI 时,该参数必须设置为 "true" | 否 | "true" | 是 | OceanStor A 系列的扇区大小为 512 B |
parameters.description | 用于配置创建的文件系统的描述信息。参数类型:字符串;长度限制:1-255 | 否 | Created from Kubernetes CSI | 否 | |
parameters.enableKVCache | 是否创建 KVCache 库。"false":关闭;"true":开启 | 是 | "false" | 否 | 当前场景创建单zone资源时必须配置为true |
parameters.enableTimeAwareGc | 是否启用 KVCache 主动清理。"false":关闭;"true":开启 | 否 | "false" | 否 | 无论配置为 "true" 还是 "false",后台均会在记忆库容量不足时清理 KVCache;配置为 "true" 时,后台会清理过期的 KVCache |
parameters.gcTimeThreshold | KVCache 过期时间,范围 1-3650 天。示例 "1" | 条件必选 | - | 否 | 当 parameters.enableTimeAwareGc 配置为 "true" 时,本参数必填 |
表 2 常用mountOptions参数说明
参数 | 说明 | 必选参数 | 默认值 | 备注 |
|---|
mountOptions.nfsvers | 主机侧NFS挂载选项。支持如下挂载选项: nfsvers:挂载NFS时的协议版本。支持配置的参数值为“3”,“4”,“4.0”,“4.1”和”4.2”。 | 否 | - | 在主机执行mount命令时-o参数后的可选选项。列表格式。 指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 |
3 - Dtree
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接Dtree资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为3。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dtree-181
volumeType: dtree
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=3 # NFS挂载时指定版本为3
DataTurbo协议配置示例
容器DataTurbo协议对接Dtree资源时,可以参考如下配置示例。该示例中,DataTurbo共享用户名为user01。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: dtfs-nas-181
volumeType: dtree
allocType: thin
authUser: user01
Dtree支持的存储类参数详细说明
表 1 StorageClass配置参数说明
参数 | 说明 | 必选参数 | 默认值 | 纳管卷是否生效 | 备注 |
|---|
metadata.name | 自定义的StorageClass对象名称。 | 是 | - | 是 | 以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 |
provisioner | 制备器名称。 | 是 | csi.huawei.com | 是 | 该字段需要指定为安装华为CSI时设置的驱动名称。 取值和values.yaml文件中driverName一致。 |
reclaimPolicy | 回收策略。支持如下类型: - Delete:自动回收资源。
- Retain:手动回收资源。
| 否 | Delete | 是 | - Delete:删除PV/PVC时会关联删除存储上的资源。
- Retain:删除PV/PVC时不会删除存储上的资源。
|
allowVolumeExpansion | 是否允许卷扩展。参数设置为true 时,使用该StorageClass的PV可以进行扩容操作。 | 否 | false | 是 | 此功能仅可用于扩容PV,不能用于缩容PV。 |
mountOptions | 挂载参数列表,可用于指定主机执行mount命令时-o选项的参数。 | 否 | - | 是 | 常见的mountOptions参数参考表2。 也可自行指定其他挂载参数。 |
parameters.backend | 待创建资源所在的后端名称。 | 条件必选 | - | 否 | 如果不设置,华为CSI随机选择一个满足容量要求的后端创建资源。 建议指定后端,确保创建的资源在预期的后端上。 配置了parameters.parentname时,该参数必填。 |
parameters.parentname | 当前存储上的某一个文件系统名称,在此文件系统下创建Dtree。 | 条件必选 | - | 是 | 当backend未配置parentname时,该参数必填。 若仅在StorageClass中配置了parentname,而存储后端中未配置时,要求在安装CSI时将CSIDriverObject.attachRequired设置为true。 |
parameters.volumeName | 指定动态卷供应创建的存储资源名称。 支持配置占位符对存储资源名称进行自定义,支持的占位符如下: - PVC命名空间:{{ .PVCNamespace }}
- PVC名称:{{ .PVCName }}
| 否 | - | 否 | - 支持配置字母、数字、"-"、"_"、".",不能配置为空,生成的存储资源名称长度范围是1-255。
- 必须同时配置PVC命名空间和PVC名称。
- 为了避免资源名称重复,会将PVC UID作为唯一标识符默认添加到名称末尾。
配置示例: PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 |
parameters.volumeType | 待创建卷类型。支持如下类型: - lun:存储侧发放的资源是LUN。
- fs:存储侧发放的资源是文件系统。
- dtree:存储侧发放的资源是Dtree类型的卷
| 是 | - | 是 | 使用Dtree时,必须为dtree。 |
parameters.allocType | 待创建卷的分配类型。支持如下类型: - thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
| 否 | thin | 否 | 配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。 |
parameters.authClient | 可访问该卷的NFS客户端IP地址信息,在使用nfs和nfs+协议时必选。 支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。 | 条件必选 | - | 否 | 可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 当使用客户端主机名称时建议使用全称域名。 IP地址支持IPv4、IPv6地址或两者的混合IP地址。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" |
parameters.authUser | 可访问DataTurbo共享的DataTurbo用户,在使用DataTurbo(dtfs)协议时必选。 | 条件必选 | - | 否 | 可以同时输入多个DataTurbo用户,以英文分号隔开。如示例:"auth_user1;auth_user2;auth_user3" |
parameters.fsPermission | 挂载到容器内的目录权限。 | 否 | - | 否 | 配置格式参考Linux权限设置,如"777"、"755"等。 |
parameters.rootSquash | 用于设置是否允许客户端的root权限。 可选值: - root_squash:表示不允许客户端以root用户访问,客户端使用root用户访问时映射为匿名用户。
- no_root_squash:表示允许客户端以root用户访问,保留root用户的权限。
| 否 | no_root_squash | 否 | |
parameters.allSquash | 用于设置是否保留共享目录的UID和GID。 可选值: - all_squash:表示共享目录的UID和GID映射为匿名用户。
- no_all_squash:表示保留共享目录的UID和GID。
| 否 | no_all_squash | 否 | |
parameters.disableVerifyCapacity | 是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。 可选值: - "true": 禁用卷容量校验。
- "false": 开启卷容量校验。
须知:使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。 | 否 | "true" | 是 | iMaster DME Dtree的扇区大小为1KB。 |
表 2 常用mountOptions参数说明
参数 | 说明 | 必选参数 | 默认值 | 备注 |
|---|
mountOptions.nfsvers | 主机侧NFS挂载选项。支持如下挂载选项: nfsvers:挂载NFS时的协议版本。支持配置的参数值为“3”。 | 否 | - | 在主机执行mount命令时-o参数后的可选选项。列表格式。 指定NFS版本挂载时,当前支持NFS 3协议(需存储设备支持且开启)。 |
mountOptions.proto | 指定NFS挂载时使用的传输协议。 支持配置参数值为:“rdma”。 | 否 | - | |
mountOptions.port | 指定NFS挂载时使用的协议端口。 | 条件必选 | - | 传输协议方式使用“rdma”时,请设置为:20049。 |
mountOptions.dn | 指定DataTurbo(dtfs)协议挂载时使用的逻辑端口的域名。 | 否 | 存储设备WWN | 挂载HyperScale集群文件系统dn需要填写HyperScale集群下的域名。 dn参数描述仅供参考,DataTurbo协议其他挂载详细参数说明请参考《AI Storage Kit 25.x.x DTFS 用户指南》。 |