这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

基础服务

1 - 存储后端管理

后端是华为存储资源的抽象概念,每台华为存储设备可以通过租户/存储池/协议等特性抽象出多个后端资源,每个后端独立存在,其中定义了为Kubernetes集群供应持久卷时所需要的华为存储信息。

本章节用于描述使用oceanctl工具配置管理存储后端。

oceanctl工具说明

  • 获取oceanctl工具,将oceanctl工具拷贝到环境目录下,例如(/usr/local/bin),且赋予可执行权限,oceanctl工具位于软件包/bin/oceanctl。
  • oceanctl工具依赖kubectl(Kubernetes平台)或oc(OpenShift平台)命令,因此需要在可执行kubectl或oc命令的节点运行。
  • 默认情况下,执行oceanctl命令的用户需要有/var/log目录的读写权限。如果没有该目录权限,可通过“–log-dir=/path/to/custom”指定有权限目录作为日志文件目录。
  • oceanctl创建后端的命名空间默认为huawei-csi。
  • oceanctl命令详细说明请参考 oceanctl命令说明

1.1 - 配置存储后端

  1. 使用oceanctl创建存储后端时,输入的账号和秘钥信息保存在 Secret 对象中,建议客户容器平台根据供应商或者K8s社区的建议自行对Secret进行加密。K8s社区对Secret加密可参考 静态加密机密数据
  2. 通过json文件创建后端时,旧版本的backend名称中可能存在大写字母或"_“字符。如果出现这种情况,旧的名称将会被重映射为一个新的名称,映射过程自动发生,不会影响原有功能。例如“ABC_123”将会被映射为“abc-123-fd68e”,具体映射规则如下:
  • 大写字母转换成小写字母。
  • “_“字符转换成“-”字符。
  • 末尾追加5位Hash码。
  1. 当存储后端对接租户时,在存储后端创建完成后,不允许修改租户名称。

1.1.1 - 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)

1.1.1.1 - 文件系统

1.1.1.1.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

指定存储服务类型。

-

固定填写:oceanstor-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

vstoreName

存储侧的租户名称。当对接后端是OceanStor V5存储时,需要在指定租户下发放资源时,需要指定该参数。

-

仅对接后端是OceanStor V5且需要支持租户时,需要指定该参数。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL
  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

固定填写:nfs

  • 请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 使用租户对接后端时,此时portals必须配置为租户所拥有的逻辑端口信息。
  • 支持填写为域名地址。
  • 支持IPv6。
  • 仅支持配置一个端口

metrovStorePairID

双活租户Pair ID。

当需要创建PV在存储侧支持NAS双活特性时,该字段必填。此时需要填入待创建的PV所归属的存储侧双活租户Pair ID。

-

双活租户Pair ID请到DeviceManager界面查询。

metroBackend

双活对端的后端名称。参数格式为字符串。

当需要创建PV在存储侧支持NAS双活特性时,该字段必填。此时需要填入准备和当前后端组成双活的另一个后端名称。

-

组对的两个后端都必须将对方名称填入。这两个后端组成双活关系后,不允许再和其他后端组成双活关系。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

当华为企业存储为OceanStor V5时,LDAP域认证服务器ID必须为0。

创建本地类型存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "nfs"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

创建双活类型存储后端

  • 配置NAS双活前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
  • 对接NAS双活后端的账号必须为存储租户的租户管理员账号。
  • 除NAS双活后端外,其他后端的管理URL不能配置为在已建立双活关系的租户的逻辑管理端口的URL。
  • 使用双活类型的存储后端时,请勿发放普通文件系统。否则,在逻辑端口漂移场景下,有业务中断的风险。
  1. 准备存储后端配置文件,如backend.yaml。

    storage: "oceanstor-nas"
    name: "backend-active"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.155:8088"
    pools:
      - "StoragePool001"
    metrovStorePairID: "2100xxxxxxxxxx0000000000600000000"
    metroBackend: "backend-standby"
    parameters:
      protocol: "nfs"
      portals:
        - "192.168.129.156"
    maxClientThreads: "30"
    ---
    storage: "oceanstor-nas"
    name: "backend-standby"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    metrovStorePairID: "2100xxxxxxxxxx0000000000600000000"
    metroBackend: "backend-active"
    parameters:
      protocol: "nfs"
      portals:
        - "192.168.129.158"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME              STORAGE              URLS                
    1       false         backend-active    oceanstor-nas        https://192.168.129.155:8088 
    2       false         backend-standby   oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 分别输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: user1
    Please enter this backend password:
    
    Backend backend-standby is configured
    NUMBER  CONFIGURED    NAME              STORAGE              URLS               
    1       true          backend-active    oceanstor-nas        https://192.168.129.155:8088 
    2       true          backend-standby   oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为"Bound" 则创建成功。

    NAMESPACE     NAME              PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-active    nfs         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.155:8088   
    huawei-csi    backend-standby   nfs         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088 
    

1.1.1.1.2 - NFS+

本章节介绍创建NFS+协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL
  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs+
  • 请确保对接的计算节点已安装NFS+客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 使用租户对接后端时,此时portals必须配置为租户所拥有的逻辑端口信息。
  • 支持填写为域名地址。
  • 支持IPv6。
  • 支持配置多个端口。

metrovStorePairID

双活租户Pair ID。

当需要创建PV在存储侧支持NAS双活特性时,该字段必填。此时需要填入待创建的PV所归属的存储侧双活租户Pair ID。

-

双活租户Pair ID请到DeviceManager界面查询。

metroBackend

双活对端的后端名称。参数格式为字符串。

当需要创建PV在存储侧支持NAS双活特性时,该字段必填。此时需要填入准备和当前后端组成双活的另一个后端名称。

-

组对的两个后端都必须将对方名称填入。这两个后端组成双活关系后,不允许再和其他后端组成双活关系。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

-

创建本地类型存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "nfs+"
      portals:
        - "10.10.30.20"
        - "10.10.30.30"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL     STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs+         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

创建双活类型存储后端

  • 配置NAS双活前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
  • 对接NAS双活后端的账号必须为存储租户的租户管理员账号。
  • 除NAS双活后端外,其他后端的管理URL不能配置为在已建立双活关系的租户的逻辑管理端口的URL。
  • 使用双活类型的存储后端时,请勿发放普通文件系统。否则,在逻辑端口漂移场景下,有业务中断的风险。

操作步骤

  1. 准备存储后端配置文件,如backend.yaml。

    storage: "oceanstor-nas"
    name: "backend-active"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.155:8088"
    pools:
      - "StoragePool001"
    metrovStorePairID: "2100xxxxxxxxxx0000000000600000000"
    metroBackend: "backend-standby"
    parameters:
      protocol: "nfs+"
      portals:
        - "192.168.129.156"
        - "192.168.129.157"
    maxClientThreads: "30"
    ---
    storage: "oceanstor-nas"
    name: "backend-standby"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.158:8088"
    pools:
      - "StoragePool001"
    metrovStorePairID: "2100xxxxxxxxxx0000000000600000000"
    metroBackend: "backend-active"
    parameters:
      protocol: "nfs+"
      portals:
        - "192.168.129.159"
        - "192.168.129.160"   
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME              STORAGE              URLS                
    1       false         backend-active    oceanstor-nas        https://192.168.129.155:8088 
    2       false         backend-standby   oceanstor-nas        https://192.168.129.158:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 分别输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: user1
    Please enter this backend password:
    
    Backend backend-standby is configured
    NUMBER  CONFIGURED    NAME              STORAGE              URLS               
    1       true          backend-active    oceanstor-nas        https://192.168.129.155:8088 
    2       true          backend-standby   oceanstor-nas        https://192.168.129.158:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为"Bound" 则创建成功。

    NAMESPACE     NAME              PROTOCOL     STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-active    nfs+         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.155:8088   
    huawei-csi    backend-standby   nfs+         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.158:8088 
    

1.1.1.2 - Dtree

1.1.1.2.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-dtree

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL
  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs
  • 请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 使用租户对接后端时,此时portals必须配置为租户所拥有的逻辑端口信息。
  • 支持填写为域名地址。
  • 支持IPv6。
  • 仅支持配置一个端口

parameters.parentname

当前存储上的某一个文件系统名称,在此文件系统下创建Dtree。

-

  • 请到DeviceManager文件系统界面查询。
  • 可选择在StorageClass中配置

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

-

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-dtree"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    parameters:
      protocol: "nfs"
      parentname: "parent-filesystem"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-dtree      https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-dtree      https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         oceanstor-dtree  xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.1.2.2 - NFS+

本章节介绍创建NFS+协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-dtree

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL
  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs+
  • 请确保对接的计算节点已安装NFS+客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 使用租户对接后端时,此时portals必须配置为租户所拥有的逻辑端口信息。
  • 支持填写为域名地址。
  • 支持IPv6。
  • 支持配置多个端口。

parameters.parentname

当前存储上的某一个文件系统名称,在此文件系统下创建Dtree。

-

  • 请到DeviceManager文件系统界面查询。
  • 可选择在StorageClass中配置

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

-

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-dtree"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    parameters:
      protocol: "nfs+"
      parentname: "parent-filesystem"
      portals:
        - "10.10.30.20"
        - "10.10.30.30"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-dtree      https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-dtree      https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL     STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs+         oceanstor-dtree  xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.1.3 - 块业务

1.1.1.3.1 - iSCSI

本章节介绍创建iSCSI协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:iscsi
  • 请确保对接的计算节点已安装iSCSI客户端。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 支持IPv6。
  • 支持配置多个端口。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

当华为企业存储为OceanStor V5时,LDAP域认证服务器ID必须为0。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "iscsi"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    iscsi       oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.1.3.2 - FC

本章节介绍创建FC协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-san。

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:fc

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

当华为企业存储为OceanStor V5时,LDAP域认证服务器ID必须为0。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "fc"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    fc          oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.1.3.3 - NVMe over RoCE

本章节介绍创建NVMe over RoCE协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-san。

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:roce
  • 请确保对接的计算节点已安装nvme-cli工具,并且nvme-cli工具版本在1.9及以上。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 支持IPv6。
  • 支持配置多个端口

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

当华为企业存储为OceanStor V5时,LDAP域认证服务器ID必须为0。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "roce"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.1.3.4 - FC-NVMe

本章节介绍创建FC-NVMe协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

  • 当管理URL为IPv6类型时,URL格式为:https://[IPv6地址]:端口号。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:fc-nvme。
  • 请确保对接的计算节点已安装nvme-cli工具,并且nvme-cli工具版本在1.9及以上。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

当华为企业存储为OceanStor V5时,LDAP域认证服务器ID必须为0。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "fc-nvme"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    fc-nvme     oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.2 - 闪存存储(OceanStor A600/A800)

1.1.2.1 - 本地文件系统

1.1.2.1.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-a-series-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs
  • 请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

仅支持配置一个端口

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

-

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-a-series-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "nfs"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE                   URLS                
    1       false         backend-demo   oceanstor-a-series-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE                   URLS               
    1       true          backend-demo    oceanstor-a-series-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE             SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         oceanstor-a-series-nas  xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.2.1.2 - DataTurbo

本章节介绍创建DataTurbo协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceanstor-a-series-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:dtfs
  • 请确保对接的计算节点已安装DataTurbo客户端,并已配置好存储逻辑端口的连通性。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

authenticationMode

登录存储后端的认证模式。

支持两种模式:

  • local:本地认证
  • ldap:LDAP认证

local

-

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-a-series-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "dtfs"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-a-series-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-a-series-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL   STORAGETYPE             SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    dtfs       oceanstor-a-series-nas  xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.3 - 海量存储(OceanStor Pacific系列)

1.1.3.1 - 命名空间

1.1.3.1.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

accountName

存储侧的账户名称。

-

需要在指定账户下发放NAS资源时,需要指定该参数。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs
  • 请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表。

-

  • 使用账户对接后端时,此时portals必须配置为账户所拥有的逻辑端口信息。
  • 支持填写为域名地址。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "nfs"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   fusionstorage-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    fusionstorage-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN             STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         fusionstorage-nas                 Bound   true    https://192.168.129.157:8088   
    

1.1.3.1.2 - DPC

本章节介绍创建DPC协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-nas

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

accountName

存储侧的账户名称。

-

需要在指定账户下发放NAS资源时,需要指定该参数。

urls

存储设备的管理URL,参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:dpc
  • 请确保对接的计算节点已安装DPC客户端,并已在待接入存储上添加为DPC计算节点。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "dpc"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   fusionstorage-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    fusionstorage-nas    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN               STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    dpc         fusionstorage-nas                   Bound   true    https://192.168.129.157:8088   
    

1.1.3.2 - Dtree

1.1.3.2.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-dtree

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

accountName

存储侧的账户名称。

-

需要在指定账户下发放NAS资源时,需要指定该参数。

urls

存储设备的管理URL,参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:nfs
  • 请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表。

-

  • 使用账户对接后端时,此时portals必须配置为账户所拥有的逻辑端口信息。
  • 支持填写为域名地址。

parameters.parentname

当前存储上的某一个文件系统名称,在此文件系统下创建Dtree。

-

  • 请到DeviceManager文件系统界面查询。
  • 可选择在StorageClass中配置

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-dtree"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    parameters:
      protocol: "nfs"
      parentname: "parent-filesystem"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   fusionstorage-dtree  https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    fusionstorage-dtree  https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE           SN            STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         fusionstorage-dtree                 Bound   true    https://192.168.129.157:8088   
    

1.1.3.2.2 - DPC

本章节介绍创建DPC协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-dtree

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

accountName

存储侧的账户名称。

-

需要在指定账户下发放NAS资源时,需要指定该参数。

urls

存储设备的管理URL,参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

parameters.protocol

存储协议。参数格式为字符串。

  • dpc

-

  • 固定填写:dpc
  • 请确保对接的计算节点已安装DPC客户端,并已在待接入存储上添加为DPC计算节点。

parameters.parentname

当前存储上的某一个文件系统名称,在此文件系统下创建Dtree。

-

  • 请到DeviceManager文件系统界面查询。
  • 可选择在StorageClass中配置

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-dtree"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    parameters:
      protocol: "dpc"
      parentname: "parent-filesystem"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE                URLS                
    1       false         backend-demo   fusionstorage-dtree    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE                URLS               
    1       true          backend-demo    fusionstorage-dtree    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE          SN          STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    dpc         fusionstorage-dtree              Bound   true    https://192.168.129.157:8088   
    

1.1.3.3 - 块业务

1.1.3.3.1 - iSCSI

本章节介绍创建iSCSI协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:iscsi
  • 请确保对接的计算节点已安装iSCSI客户端。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

条件必选

-

  • 支持配置多个端口。
  • iscsiLinks与portals参数必须配置其中一项。

parameters.iscsiLinks

动态访问链接数,仅支持Pacific 8.1.5及以上版本。

条件必选

  

iscsiLinks与portals参数必须配置其中一项。

说明:
  1. 仅当portals参数为空时,iscsiLinks参数生效。
  2. 实际生效的链路数为以下三者的最大值:
    • iscsiLinks参数值
    • 存储动态分配最小链路数
    • 主机上已建连的链接数

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "iscsi"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   fusionstorage-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    fusionstorage-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN       STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    iscsi       fusionstorage-san           Bound   true    https://192.168.129.157:8088   
    

1.1.3.3.2 - SCSI

本章节介绍创建SCSI协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:fusionstorage-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:scsi
  • 请确保对接的计算节点已安装分布式存储VBS客户端。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

scsi协议的端口形式为字典格式,key为部署VBS客户端的主机名称,value为部署VBS客户端的主机IP地址。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "fusionstorage-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "scsi"
      portals:
        - {"hostname01": "192.168.125.21","hostname02": "192.168.125.22"}
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   fusionstorage-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    fusionstorage-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN      STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    scsi        fusionstorage-san          Bound   true    https://192.168.129.157:8088   
    

1.1.4 - 海量存储(OceanDisk系列)

1.1.4.1 - 文件系统

1.1.4.1.1 - NFS

本章节介绍创建NFS协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

指定存储服务类型。

-

固定填写:oceanstor-nas。

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。支持按照域名或者IP+端口的方式进行配置。

-

需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

固定填写:nfs。请确保对接的计算节点已安装NFS客户端工具。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

  • 使用租户对接后端时,此时portals必须配置为租户所拥有的逻辑端口信息;
  • 支持填写为域名地址;
  • 仅支持配置一个端口。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建本地类型存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceanstor-nas"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "nfs"
      portals:
        - "10.10.30.20"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceanstor-nas        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    nfs         oceanstor-nas    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.4.2 - 块业务

1.1.4.2.1 - iSCSI

本章节介绍创建iSCSI协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写oceandisk-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:iscsi
  • 请确保对接的计算节点已安装iSCSI客户端。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

支持配置多个端口。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceandisk-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "iscsi"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE          URLS                
    1       false         backend-demo   oceandisk-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE          URLS               
    1       true          backend-demo    oceandisk-san    https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE     SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    iscsi       oceandisk-san   xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.4.2.2 - FC

本章节介绍创建FC协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写oceandisk-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:fc

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceandisk-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "fc"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceandisk-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceandisk-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    fc          oceandisk-san      xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.1.4.2.3 - NVMe over RoCE

本章节介绍创建NVMe over RoCE协议类型的存储后端

配置项说明

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

-

固定填写:oceandisk-san

name

存储后端名称。支持小写字母、数字和特殊字符"-",且需要以字母或数字开头,最多63个字符。

-

请保证存储后端名称唯一。

namespace

命名空间。

huawei-csi

存储后端必须与华为CSI在相同的命名空间中。

urls

存储设备的管理URL。参数格式为列表。

-

支持按照域名或者IP+端口的方式进行配置。

pools

存储设备的存储池。参数格式为列表。

-

填写存储池名称。

parameters.protocol

存储协议。参数格式为字符串。

-

  • 固定填写:roce
  • 请确保对接的计算节点已安装nvme-cli工具,并且nvme-cli工具版本在1.9及以上。

parameters.portals

业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表

-

支持配置多个端口。

supportedTopologies

存储拓扑感知配置。参数格式为列表类型的JSON。

-

如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知

maxClientThreads

同时连接到存储后端的最大连接数。

30

范围1~30,如果不配置该参数,或参数值不在规定范围内,则取用默认值30。

创建存储后端

  1. 准备后端配置文件,如backend.yaml。

    storage: "oceandisk-san"
    name: "backend-demo"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.157:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "roce"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    maxClientThreads: "30"
    
  2. 执行以下命令创建存储后端。

    oceanctl create backend -f /path/to/backend.yaml -i yaml
    

    命令结果示例如下:

    NUMBER  CONFIGURED    NAME           STORAGE              URLS                
    1       false         backend-demo   oceandisk-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  3. 输入待创建后端序号,并输入账号密码。

    Please enter the backend number to configure (Enter 'exit' to exit):1
    Please enter this backend user name: admin
    Please enter this backend password:
    
    Backend backend-demo is configured
    NUMBER  CONFIGURED    NAME            STORAGE              URLS               
    1       true          backend-demo    oceandisk-san        https://192.168.129.157:8088 
    Please enter the backend number to configure (Enter 'exit' to exit):
    
  4. 检查存储后端创建结果。

    oceanctl get backend
    

    命令结果示例如下,后端状态为Bound,则创建成功。

    NAMESPACE     NAME            PROTOCOL    STORAGETYPE        SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-demo    roce        oceandisk-san      xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    

1.2 - 管理存储后端

1.2.1 - 查询存储后端

  • 执行以下命令获取查询后端帮助。

    oceanctl get backend -h
    
  • 执行以下命令查询默认命名空间下单个存储后端。

    oceanctl get backend <backend-name>
    
  • 执行以下命令查询指定命名空间下所有存储后端。

    oceanctl get backend -n <namespace>
    
  • 执行以下命令格式化输出,当前支持json,yaml和wide。

    oceanctl get backend <backend-name> -o json
    

1.2.2 - 更新存储后端

  • 当前使用oceanctl更新存储后端信息时,仅支持更新存储后端密码以及登录存储后端的认证模式。
  • 若在存储侧更新了后端的账号密码,CSI插件会因登录失败而重试,可能会导致账号被锁定。如果账号被锁定,请参考 存储侧更新密码后账户被锁定 章节修改。

1.2.2.1 - 更新存储后端密码

获取更新后端帮助信息

  1. 执行以下命令获取更新存储后端帮助。

    oceanctl update backend -h
    

    命令结果示例如下:

    Update a backend for Ocean Storage in Kubernetes
    
    Usage:
      oceanctl update backend <name> [flags]
    
    Examples:
      # Update backend account information in default(huawei-csi) namespace
      oceanctl update backend <name>  --password
    
      # Update backend account information in specified namespace
      oceanctl update backend <name> -n namespace --password
    
      # Update backend account information with ldap authentication mode in default(huawei-csi) namespace
      oceanctl update backend <name> --password --authenticationMode=ldap
    
      # Update backend account information with local authentication mode in default(huawei-csi) namespace
      oceanctl update backend <name> --password --authenticationMode=local
    
      # Update backend account information with ldap authentication mode in specified namespace
      oceanctl update backend <name> -n namespace --password --authenticationMode=ldap
    
    Flags:
          --authenticationMode string   Specify authentication mode
      -h, --help                        help for backend
      -n, --namespace string            namespace of resources
          --password                    Update account password
    
    Global Flags:
          --log-dir string   Specify the directory for printing log files. (default "/var/log/huawei")
    

更新后端密码示例

  1. 执行以下命令更新存储后端信息,其中backend-name为待更新后端名称。

    oceanctl update backend backend-name --password
    

    根据提示输入用户名和新密码:

    Please enter this backend user name:admin
    Please enter this backend password:
    
    backend/backend-name updated
    

1.2.2.2 - 更新存储后端登陆认证模式

更新后端登录认证类型为LDAP示例

  1. 执行以下命令更新存储后端信息,其中backend-name为待更新后端名称。

    oceanctl update backend backend-name --password --authenticationMode=ldap
    

    根据提示输入用户名和新密码:

    Please enter this backend user name:admin
    Please enter this backend password:
    
    backend/backend-name updated
    

1.2.2.3 - 更新存储后端信息

  • PVC发放需要基于已配置的存储后端,因此当存储后端已经发放PVC时,请勿随便修改存储后端。
  • 名称是存储后端的唯一标识,已发放PVC的存储后端不允许修改名称。
  • 存储后端修改后,新增配置仅作用于新发放的卷。
  • 存储后端修改期间,请勿执行卷管理操作。

操作步骤

  1. 参考 删除存储后端 章节,删除待修改存储后端。
  2. 参考 配置存储后端 章节,创建同名存储后端,存储后端名称不可变更。

1.2.3 - 删除存储后端


正在执行卷管理操作期间,请勿删除存储后端。

删除后端示例

  1. 执行以下命令获取存储后端。

    oceanctl get backend 
    

    命令结果示例如下:

    NAMESPACE     NAME         PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-1    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    huawei-csi    backend-2    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.158:8088  
    
  2. 执行以下命令删除指定存储后端。

    oceanctl delete backend backend-1
    
  3. 执行以下命令检查删除结果。

    oceanctl get backend backend-1
    

    命令结果示例如下,如果回显为“not found”则删除成功。

    Error from server (NotFound): backend "backend-1" not found
    

1.2.4 - 添加存储后端证书

前提条件

完成证书制作。以OceanStor Dorado为例,证书制作过程请参考: 点此前往

创建证书示例

  1. 提前准备好证书文件,如cert.crt。

  2. 执行以下命令获取存储后端。

    oceanctl get backend  
    

    命令结果示例如下:

    NAMESPACE     NAME         PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-1    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    huawei-csi    backend-2    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.158:8088  
    
  3. 执行以下命令为指定存储后端创建证书。

    oceanctl create cert cert-1 -b backend-1 -f /path/to/cert.crt
    
  4. 检查证书创建结果。

    oceanctl get cert -b backend-1
    

    命令结果示例如下:

    NAMESPACE    NAME    BOUNDBACKEND   
    huawei-csi   cert-1  backend-1 
    

1.2.5 - 移除存储后端证书

操作步骤

  1. 执行以下命令获取存储后端。

    oceanctl get backend  
    

    命令结果示例如下:

    NAMESPACE     NAME         PROTOCOL    STORAGETYPE      SN                    STATUS  ONLINE  URL                 
    huawei-csi    backend-1    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.157:8088   
    huawei-csi    backend-2    roce        oceanstor-san    xxxxxxxxxxxxxxxxxxxx  Bound   true    https://192.168.129.158:8088  
    
  2. 执行以下命令获取指定存储后端的证书。

    oceanctl get cert -b backend-1
    

    命令结果示例如下:

    NAMESPACE   NAME    BOUNDBACKEND    
    huawei-csi  cert-1  backend-1  
    
  3. 执行以下命令删除指定存储后端的证书。

    oceanctl delete cert -b backend-1
    
  4. 检查删除结果。

    oceanctl get cert -b backend-1
    

    命令结果示例如下,如果回显为“no cert found”则删除成功。

    Error from server (NotFound): no cert found on backend backend-1 in huawei-csi namespace
    

2 - 存储类管理

存储类(StorageClass) 为管理员提供了描述存储 “类” 的方法。 不同的类型可能会映射到一组不同的能力定义。Kubernetes集群用户可基于存储类进行动态卷制备。

2.1 - 配置存储类

集群管理员可以根据需要定义多个存储类对象,在声明配置持久卷时,需要指定满足业务要求的存储类。华为CSI在从华为存储设备上申请资源时,会根据存储类的预置定义,创建满足业务要求的存储资源。

2.1.1 - 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)

2.1.1.1 - 文件系统

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议配置示例

容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。

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=4.1 # NFS挂载时指定版本为4.1

NFS+协议配置示例

容器使用NFS+协议对接文件系统资源时,可以参考如下存储类配置示例。

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: "*"

双活文件系统配置示例

容器使用NFS双活文件系统作为存储资源时,可以参考如下配置示例。该示例中,使用的后端是支持双活的后端,且配置“hyperMetro”参数为“true”。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-hypermetro-dorado-181
  pool: pool001
  volumeType: fs
  hyperMetro: "true" # 发放双活卷
  allocType: thin
  authClient: "*"

  • 发放NAS双活卷前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
  • 若存储发生故障,逻辑管理端口可能产生漂移,在漂移状态下删除NAS双活卷后,需手动清理对应的存储资源。

文件系统支持的存储类参数详细说明

表 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:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
  • thick:创建时分配所有需要的空间。

thin

配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。

OceanStor Dorado不支持thick

parameters.authClient

可访问该卷的NFS客户端IP地址信息。

支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。

必选

-

可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。

当使用客户端主机名称时建议使用全称域名。

IP地址支持IPv4、IPv6地址或两者的混合IP地址。

可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test"

parameters.cloneSpeed

克隆速度。支持配置为1~4。

3

4速度最快。配置克隆持久卷或从快照创建持久卷时生效。

parameters.applicationType

指定创建文件系统时的应用类型名称。

-

在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。

parameters.qos

PV在存储侧的文件系统的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.hyperMetro

是否创建双活卷。当使用的后端是双活类型的后端需要配置。

  • "true":创建的卷为双活卷。对接存储后端为双活后端时,该值必须为true。
  • "false":创建的卷为普通卷。

条件必选

false

当使用的后端是双活类型的后端,且需要发放双活卷时,设置该参数为"true",若设置为"false",在后端对接的逻辑管理端口漂移的场景下,有业务中断的风险。

parameters.metroPairSyncSpeed

双活Pair同步速率。支持配置为1~4。

可选值:

  • 1:低
  • 2:中
  • 3:高
  • 4:最高

-

配置创建双活卷时生效。

注意:

  • 未配置该参数时,双活Pair存储速率由存储决定。
  • 最高速率同步时可能导致主机时延增大。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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.accesskrb5

用于配置krb5安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5i

用于配置krb5i安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5p

用于配置krb5p安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.snapshotDirectoryVisibility

用于设置快照目录是否可见。

可选值:

  • visible:表示快照目录可见。
  • invisible:表示快照目录不可见。

-

仅支持NAS存储。

parameters.reservedSnapshotSpaceRatio

用于配置快照预留空间。

参数类型:字符串

取值范围:"0"~"50"

-

支持OceanStor Dorado 6.1.5+、OceanStor 6.1.5+的NAS存储。

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanStor Dorado、OceanStor的扇区大小为512 B。

parameters.description

用于配置创建的文件系统的描述信息。

参数类型:字符串

长度限制:0-255

-

  

parameters.advancedOptions

高级创卷参数。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}'

-

支持的高级参数列表请参考表4说明。

表 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。

mountOptions.sec

用于指定Kerberos 5协议挂载NFS文件系统。

-

  • 使用Kerberos 5协议时,请配置krb5。
  • 使用Kerberos 5i协议时,请配置krb5i。
  • 使用Kerberos 5p协议时,请配置krb5p。
  • Kerberos仅支持NFSv4.0及以上版本的NFS协议。
  • OceanStor Dorado和OceanStor 6.1.3及以上版本支持Kerberos。

mountOptions.proto

指定NFS挂载时使用的传输协议。

支持配置参数值为:“rdma”。

-

  • OceanStor Dorado和OceanStor 6.1.7及以上的NAS存储。

mountOptions.port

指定NFS挂载时使用的协议端口

条件必选

-

传输协议方式使用“rdma”时,请设置为:20049。

表 3 支持的QoS配置

存储类型

参数名

参数描述

备注

OceanStor V5

IOTYPE

控制读写类型。

可选参数(未明确指定将使用后端存储默认值,具体参考相关存储资料)。

有效值如下:

  • 0:读I/O
  • 1:写I/O
  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,有效值为>0的整数。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,有效值为>0的整数。

MAXIOPS

最大IOPS限制策略。

有效值为>0的整数。

MINIOPS

最小IOPS保护策略。

有效值为>0的整数。

LATENCY

最大时延保护策略。

单位ms,有效值为>0的整数。

OceanStor Dorado/OceanStor

IOTYPE

控制读写类型。

有效值如下:

  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,类型为整数, 范围1~999999999。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,类型为整数, 范围1~999999999。

MAXIOPS

最大IOPS限制策略。

类型为整数, 范围100~999999999。

MINIOPS

最小IOPS保护策略。

类型为整数, 范围100~999999999。

LATENCY

最大时延保护策略。

单位ms,仅支持配置0.5或1.5。

表 4 支持的高级创卷参数

参数名

参数描述

备注

CAPACITYTHRESHOLD

总空间容量告警阈值。

参数类型,uint64。

默认值和取值范围请参考对应存储产品手册。

2.1.1.2 - Dtree

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议支持的存储类配置示例

容器使用NFS协议对接Dtree资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-dtree-181
  parentname: parent-filesystem-name
  volumeType: dtree
  allocType: thin
  authClient: "*"
mountOptions:
  - nfsvers=4.1 # NFS挂载时指定版本为4.1

NFS+协议支持的存储类配置示例

容器使用NFS+协议对接Dtree资源时,可以参考如下存储类配置示例。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-dtree-181
  parentname: parent-filesystem-name
  volumeType: dtree
  allocType: thin
  authClient: "*"

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.authClient

可访问该卷的NFS客户端IP地址信息。

支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。

必选

-

可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。

当使用客户端主机名称时建议使用全称域名。

IP地址支持IPv4、IPv6地址或两者的混合IP地址。

可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test"

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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.accesskrb5

用于配置krb5安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5i

用于配置krb5i安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5p

用于配置krb5p安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanStor Dorado、OceanStor的扇区大小为512 B。

parameters.description

用于配置创建的Dtree共享的描述信息。

参数类型:字符串

长度限制:0-255

-

  

表 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。

mountOptions.sec

用于指定Kerberos 5协议挂载NFS文件系统。

-

  • 使用Kerberos 5协议时,请配置krb5。
  • 使用Kerberos 5i协议时,请配置krb5i。
  • 使用Kerberos 5p协议时,请配置krb5p。
  • Kerberos仅支持NFSv4.0及以上版本的NFS协议。
  • OceanStor Dorado和OceanStor 6.1.3及以上版本支持Kerberos。

mountOptions.proto

指定NFS挂载时使用的传输协议。

支持配置参数值为:“rdma”。

-

  • OceanStor Dorado和OceanStor 6.1.7及以上的NAS存储。

mountOptions.port

指定NFS挂载时使用的协议端口

条件必选

-

传输协议方式使用“rdma”时,请设置为:20049。

2.1.1.3 - 块业务

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

块业务存储类配置示例

使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: lun-181
  pool: StoragePool001
  volumeType: lun
  allocType: thin
  fsType: ext4

块业务支持的存储类参数详细说明

表 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类型的卷

-

此处固定配置为lun。

parameters.allocType

待创建卷的分配类型。支持如下类型:

  • thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
  • thick:创建时分配所有需要的空间。

thin

配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。

OceanStor Dorado不支持thick

parameters.fsType

主机文件系统类型。支持类型为:

  • ext2
  • ext3
  • ext4
  • xfs

ext4

仅当PVC的volumeMode配置为“Filesystem”时生效。

parameters.cloneSpeed

克隆速度。支持配置为1~4。

3

4速度最快。配置克隆PVC或从快照创建PVC时生效。

parameters.applicationType

指定创建LUN时的应用类型名称。

-

在DeviceManager管理界面,选择“服务 > 块服务 > LUN组 (Namespace组)> LUN (Namespace)> 创建 > 应用类型”,获取应用类型名称。

parameters.qos

PV在存储侧的LUN/NAS的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanStor Dorado、OceanStor的扇区大小为512 B。

parameters.description

用于配置创建的LUN的描述信息。

参数类型:字符串

长度限制:0-255

-

  

表 2 常用mountOptions参数说明

参数

说明

必选参数

默认值

备注

mountOptions.discard

挂载文件系统时自动触发Trim/Discard操作。该操作会通知块设备释放未使用的块

-

支持xfs、ext4文件系统。

表 3 支持的QoS配置

参数名

参数描述

备注

IOTYPE

控制读写类型。

有效值如下:

  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,类型为整数, 范围1~999999999。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,类型为整数, 范围1~999999999。

MAXIOPS

最大IOPS限制策略。

类型为整数, 范围100~999999999。

MINIOPS

最小IOPS保护策略。

类型为整数, 范围100~999999999。

LATENCY

最大时延保护策略。

单位ms,仅支持配置0.5或1.5。

2.1.2 - 闪存存储(OceanStor A600/A800)

2.1.2.1 - 文件系统

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议配置示例

容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。

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=4.1 # NFS挂载时指定版本为4.1

DataTurbo协议配置示例

当容器使用OceanStor A系列存储,且存储支持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

文件业务支持的存储类参数详细说明

表 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.applicationType

指定创建文件系统时的应用类型名称。

-

在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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

-

  

parameters.advancedOptions

高级创卷参数。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}'

-

支持的高级参数列表请参考表3说明。

表 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。

mountOptions.dn

指定DataTurbo(dtfs)协议挂载时使用的逻辑端口的域名。

存储设备WWN

挂载HyperScale集群文件系统dn需要填写HyperScale集群下的域名。

dn参数描述仅供参考,DataTurbo协议其他挂载详细参数说明请参考《OceanStor DataTurbo DTFS用户指南》

表 3 支持的高级创卷参数

参数名

参数描述

备注

CAPACITYTHRESHOLD

总空间容量告警阈值。

参数类型,uint64。

默认值和取值范围请参考对应存储产品手册。

2.1.3 - 海量存储(FusionStorage Block/OceanStor Pacific系列)

2.1.3.1 - 文件系统

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议配置示例

容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-nas-181
  pool: pool001
  volumeType: fs
  allocType: thin
  authClient: "*"
mountOptions:
  - nfsvers=4.1 # NFS挂载时指定版本为4.1

DPC协议配置示例

存储支持DPC协议访问时,可以在StorageClass中配置DPC访问的挂载参数。本例中设置挂载时使用“acl”做鉴权参数,使用“cnflush”为设置异步刷盘模式。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-dpc-101
  pool: pool001
  volumeType: fs
  allocType: thin
mountOptions:
  - acl # 鉴权参数
  - cnflush # 设置异步刷盘模式

文件系统支持的存储类参数详细说明

表 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.volumeType

待创建卷类型。支持如下类型:

  • lun:存储侧发放的资源是LUN。
  • fs:存储侧发放的资源是文件系统。
  • dtree:存储侧发放的资源是Dtree类型的卷

-

此处固定配置为fs。

parameters.allocType

待创建卷的分配类型。支持如下类型:

  • thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
  • thick:创建时分配所有需要的空间。

thin

配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。

parameters.authClient

可访问该卷的NFS客户端IP地址信息。在使用nfs协议时必选。

支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。

条件必选

-

可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。

当使用客户端主机名称时建议使用全称域名。

IP地址支持IPv4、IPv6地址或两者的混合IP地址。

可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test"

parameters.storageQuota

文件系统配额设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"spaceQuota": "softQuota", "gracePeriod": 100}'

-

支持的配额配置请参考表4说明。

parameters.qos

PV在存储侧的文件系统的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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.snapshotDirectoryVisibility

用于设置快照目录是否可见。

可选值:

  • visible:表示快照目录可见。
  • invisible:表示快照目录不可见。

-

  

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanStor Pacific NAS的扇区大小为1 KB。

表 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。

mountOptions.proto

指定NFS挂载时使用的传输协议。

支持配置参数值为:“rdma”。

-

仅8.2.0及以后版本支持。

mountOptions.port

指定NFS挂载时使用的协议端口

条件必选

-

传输协议方式使用“rdma”时,请设置为:20049。

mountOptions.acl

DPC命名空间支持ACL功能。DPC客户端支持POSIX ACL、NFSv4 ACL、NT ACL的鉴权行为。

-

acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。

mountOptions.aclonlyposix

DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。

支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。

-

aclonlyposix与acl参数同时使用时,仅acl参数生效,即命名空间支持ACL功能。

mountOptions.cnflush

异步刷盘模式,即关闭命名空间下的文件时不会立即刷盘。

-

异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。

mountOptions.cflush

同步刷盘模式,即关闭命名空间下的文件时立即刷盘。

-

默认使用同步刷盘模式。

表 3 支持的QoS配置

参数名

参数描述

备注

maxMBPS

最大带宽限制策略。

必填。有效值为大于0的整数,单位MB/s。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824。

maxIOPS

最大IOPS限制策略。

必填。有效值为大于0的整数。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824000。

表 4 支持的配额配置

参数名

参数描述

备注

spaceQuota

文件配额类型。

必选。仅支持配置“softQuota”或者“hardQuota”

gracePeriod

配置软配额时,允许的超限天数。

条件可选,当“spaceQuota”配置为“softQuota”时可选。

类型为整数,支持范围为0~4294967294。

2.1.3.2 - Dtree

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议支持的存储类配置示例

容器使用NFS协议对接Dtree资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-dtree-181
  parentname: parent-filesystem-name
  volumeType: dtree
  allocType: thin
  authClient: "*"
mountOptions:
  - nfsvers=4.1 # NFS挂载时指定版本为4.1

DPC协议支持的存储类配置示例

容器使用DPC协议对接Dtree资源时,可以参考如下存储类配置示例。本例中设置挂载时使用“acl”做鉴权参数,使用“cnflush”为设置异步刷盘模式。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: nfs-dtree-181
  parentname: parent-filesystem-name
  volumeType: dtree
  allocType: thin
  authClient: "*"
mountOptions:
  - acl # 鉴权参数
  - cnflush # 设置异步刷盘模式

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.authClient

可访问该卷的NFS客户端IP地址信息。

支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。

必选

-

可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。

当使用客户端主机名称时建议使用全称域名。

IP地址支持IPv4、IPv6地址或两者的混合IP地址。

可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test"

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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 Pacific Dtree的扇区大小为1 B。

表 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。

mountOptions.proto

指定NFS挂载时使用的传输协议。

支持配置参数值为:“rdma”。

-

仅8.2.0及以后版本支持。

mountOptions.port

指定NFS挂载时使用的协议端口

条件必选

-

传输协议方式使用“rdma”时,请设置为:20049。

mountOptions.acl

DPC命名空间支持ACL功能。DPC客户端支持POSIX ACL、NFSv4 ACL、NT ACL的鉴权行为。

-

acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。

mountOptions.aclonlyposix

DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。

支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。

-

aclonlyposix与acl参数同时使用时,仅acl参数生效,即命名空间支持ACL功能。

mountOptions.cnflush

异步刷盘模式,即关闭命名空间下的文件时不会立即刷盘。

-

异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。

mountOptions.cflush

同步刷盘模式,即关闭命名空间下的文件时立即刷盘。

-

默认使用同步刷盘模式。

2.1.3.3 - 块业务

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

块业务存储类配置示例

使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: lun-181
  pool: StoragePool001
  volumeType: lun
  allocType: thin
  fsType: ext4

块业务支持的存储类参数详细说明

表 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.volumeType

待创建卷类型。支持如下类型:

  • lun:存储侧发放的资源是LUN。
  • fs:存储侧发放的资源是文件系统。
  • dtree:存储侧发放的资源是Dtree类型的卷

-

此处固定配置为lun。

parameters.allocType

待创建卷的分配类型。支持如下类型:

  • thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
  • thick:创建时分配所有需要的空间。

thin

配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。

parameters.fsType

主机文件系统类型。支持类型为:

  • ext2
  • ext3
  • ext4
  • xfs

ext4

仅当PVC的volumeMode配置为“Filesystem”时生效。

parameters.qos

PV在存储侧的LUN/NAS的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanStor Pacific SAN的扇区大小为1 MiB。

表 2 常用mountOptions参数说明

参数

说明

必选参数

默认值

备注

mountOptions.discard

挂载文件系统时自动触发Trim/Discard操作。该操作会通知块设备释放未使用的块

-

支持xfs、ext4文件系统。

表 3 支持的QoS配置

参数名

参数描述

备注

maxMBPS

最大带宽限制策略。

必填。有效值为大于0的整数,单位MB/s。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824。

maxIOPS

最大IOPS限制策略。

必填。有效值为大于0的整数。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824000。

2.1.4 - 海量存储(OceanDisk系列)

2.1.4.1 - 文件系统

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

NFS协议配置示例

容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.0。

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=4.0 # NFS挂载时指定版本为4.0

文件系统支持的存储类参数详细说明

表 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地址信息。

支持输入客户端主机名称(建议使用全称域名)、客户端IP地址、客户端IP地址段。

必选

-

可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。

当使用客户端主机名称时建议使用全称域名。

IP地址支持IPv4、IPv6地址或两者的混合IP地址。

可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test"

parameters.cloneSpeed

克隆速度。支持配置为1~4。

3

4速度最快。配置克隆持久卷或从快照创建持久卷时生效。

parameters.applicationType

指定创建文件系统时的应用类型名称。

-

在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。

parameters.qos

PV在存储侧的文件系统的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

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.accesskrb5

用于配置krb5安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5i

用于配置krb5i安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.accesskrb5p

用于配置krb5p安全协议。

  • read_only:只读
  • read_write:读写
  • none:无权限

-

挂载时,可以在mountOptions中指定参数sec。

parameters.snapshotDirectoryVisibility

用于设置快照目录是否可见。

可选值:

  • visible:表示快照目录可见。
  • invisible:表示快照目录不可见。

-

仅支持NAS存储。

parameters.reservedSnapshotSpaceRatio

用于配置快照预留空间。

参数类型:字符串

取值范围:"0"~"50"

-

-

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanDisk的扇区大小为512 B。

parameters.description

用于配置创建的文件系统的描述信息。

参数类型:字符串

长度限制:0-255

-

  

parameters.advancedOptions

高级创卷参数。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}'

-

支持的高级参数列表请参考表4说明。

表 2 常用mountOptions参数说明

参数

说明

必选参数

默认值

备注

mountOptions.nfsvers

主机侧NFS挂载选项。支持如下挂载选项:

nfsvers:挂载NFS时的协议版本。支持配置的参数值为“3”,“4.0”。

-

在主机执行mount命令时-o参数后的可选选项。列表格式。

指定NFS版本挂载时,当前支持NFS 3/4.0协议(需存储设备支持且开启)。

mountOptions.sec

用于指定Kerberos 5协议挂载NFS文件系统。

-

  • 使用Kerberos 5协议时,请配置krb5。
  • 使用Kerberos 5i协议时,请配置krb5i。
  • 使用Kerberos 5p协议时,请配置krb5p。
  • 仅NFS v4.0支持Kerberos

mountOptions.proto

指定NFS挂载时使用的传输协议。

支持配置参数值为:“rdma”。

-

-

mountOptions.port

指定NFS挂载时使用的协议端口

条件必选

-

传输协议方式使用“rdma”时,请设置为:20049。

表 3 支持的QoS配置

存储类型

参数名

参数描述

备注

OceanStor V5

IOTYPE

控制读写类型。

可选参数(未明确指定将使用后端存储默认值,具体参考相关存储资料)。

有效值如下:

  • 0:读I/O
  • 1:写I/O
  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,有效值为>0的整数。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,有效值为>0的整数。

MAXIOPS

最大IOPS限制策略。

有效值为>0的整数。

MINIOPS

最小IOPS保护策略。

有效值为>0的整数。

LATENCY

最大时延保护策略。

单位ms,有效值为>0的整数。

OceanStor Dorado/OceanStor

IOTYPE

控制读写类型。

有效值如下:

  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,类型为整数, 范围1~999999999。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,类型为整数, 范围1~999999999。

MAXIOPS

最大IOPS限制策略。

类型为整数, 范围100~999999999。

MINIOPS

最小IOPS保护策略。

类型为整数, 范围100~999999999。

LATENCY

最大时延保护策略。

单位ms,仅支持配置0.5或1.5。

表 4 支持的高级创卷参数

参数名

参数描述

备注

CAPACITYTHRESHOLD

总空间容量告警阈值。

参数类型,uint64。

默认值和取值范围请参考对应存储产品手册。

2.1.4.2 - 块业务

创建存储类

  1. 准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。

  2. 执行命令,使用配置文件创建StorageClass。

    kubectl apply -f mysc.yaml
    
  3. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

块业务存储类配置示例

使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: mysc
provisioner: csi.huawei.com
parameters:
  backend: lun-181
  pool: StoragePool001
  volumeType: lun
  allocType: thin
  fsType: ext4

块业务支持的存储类参数详细说明

表 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.volumeType

待创建卷类型。支持如下类型:

  • lun:存储侧发放的资源是LUN。
  • fs:存储侧发放的资源是文件系统。
  • dtree:存储侧发放的资源是Dtree类型的卷

-

此处固定配置为lun。

parameters.allocType

待创建卷的分配类型。支持如下类型:

  • thin:创建时不会分配所有需要的空间,而是根据使用情况动态分配。
  • thick:创建时分配所有需要的空间。

thin

配置为thin时,创建卷不会立即分配所有需要的空间,而是根据使用情况动态分配。

OceanStor Dorado不支持thick

parameters.fsType

主机文件系统类型。支持类型为:

  • ext2
  • ext3
  • ext4
  • xfs

ext4

仅当PVC的volumeMode配置为“Filesystem”时生效。

parameters.cloneSpeed

克隆速度。支持配置为1~4。

3

4速度最快。配置克隆PVC或从快照创建PVC时生效。

parameters.applicationType

指定创建LUN时的应用类型名称。

-

在DeviceManager管理界面,选择“服务 > 块服务 > LUN组 (Namespace组)> LUN (Namespace)> 创建 > 应用类型”,获取应用类型名称。

parameters.qos

PV在存储侧的LUN/NAS的QoS设置。

配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}'

-

支持的QoS配置请参考表3说明。

parameters.fsPermission

挂载到容器内的目录权限。

-

配置格式参考Linux权限设置,如“777”、“755”等。

parameters.disableVerifyCapacity

是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。

可选值:

  • "true": 禁用卷容量校验。
  • "false": 开启卷容量校验。
须知:

使用Red Hat OpenShift Virtualization对接CSI时,该参数必须设置为"true"。

"true"

OceanDisk 的扇区大小为512 B。

parameters.description

用于配置创建的LUN的描述信息。

参数类型:字符串

长度限制:0-255

-

  

表 2 常用mountOptions参数说明

参数

说明

必选参数

默认值

备注

mountOptions.discard

挂载文件系统时自动触发Trim/Discard操作。该操作会通知块设备释放未使用的块

-

支持xfs、ext4文件系统。

表 3 支持的QoS配置

参数名

参数描述

备注

IOTYPE

控制读写类型。

有效值如下:

  • 2:读写I/O

MAXBANDWIDTH

最大带宽限制策略。

单位MB/s,类型为整数, 范围1~999999999。

MINBANDWIDTH

最小带宽保护策略。

单位MB/s,类型为整数, 范围1~999999999。

MAXIOPS

最大IOPS限制策略。

类型为整数, 范围100~999999999。

MINIOPS

最小IOPS保护策略。

类型为整数, 范围100~999999999。

LATENCY

最大时延保护策略。

单位ms,仅支持配置0.5或1.5。

2.2 - 管理存储类

2.2.1 - 查询存储类

  1. 执行命令,查看已创建的StorageClass信息。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

2.2.2 - 修改存储类

Kubernetes限制仅允许修改存储类 是否允许扩容字段 (allowVolumeExpansion),修改方式如下:

  1. 执行命令,查看存储类是否允许扩容。

    kubectl get sc mysc
    

    命令结果示例如下,存储类mysc不允许扩容:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           false                  8s
    
  2. 执行下列命令,将存储类修改为允许扩容:

    kubectl patch sc mysc --patch '{"allowVolumeExpansion":true}'
    
  3. 再次查看存储类,修改成功:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           true                   8s
    

2.2.3 - 删除存储类

  1. 执行命令,查看存储类。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc   csi.huawei.com   Delete          Immediate           false                  8s
    
  2. 执行下列命令,删除存储类:

    kubectl delete sc mysc
    

    回显如下所示,表示删除成功:

    storageclass.storage.k8s.io "mysc" deleted
    

3 - 持久卷管理

根据业务的需求,容器中的文件需要在磁盘上进行持久化。当容器被重建或者重新分配至新的节点时,可以继续使用这些持久化数据。

为了可以将数据持久化到存储设备上,您需要在发放容器时使用 持久卷(PersistentVolume,PV) 以及 持久卷申领(PersistentVolumeClaim,PVC)

  • PV:是Kubernetes集群中的一块存储,可以由管理员事先制备, 或者使用 存储类(StorageClass) 来动态制备。
  • PVC:是用户对存储的请求。PVC会耗用 PV 资源。PVC可以请求特定的大小和访问模式 (例如,可以要求 PV能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载,参见 访问模式 )。

本章将介绍如何使用华为CSI对PV/PVC进行创建、扩容、克隆等操作。

3.1 - 配置持久卷

华为CSI支持在华为存储上创建存储资源(LUN/文件系统),并根据用户的设置供给容器使用。具体支持的特性请参考存储自身的 特性表

配置持久卷的方式按类型可分为配置动态持久卷、配置静态持久卷和纳管持久卷。

  • 配置动态持久卷不需要事先创建PV,华为CSI会根据StorageClass自动在存储设备上创建PV所需要的资源。并且可以在创建PVC时同时创建PV。
  • 配置静态持久卷需要管理员事先在存储设备上创建好所需要的资源,通过创建PV的方式使用已存在的资源。并且可以在创建PVC时指定关联的PV。
  • 纳管持久卷不需要事先创建PV,通过在PVC中指定StorageClass与存储上的资源信息,在创建PVC时同时创建PV,并将已有存储资源纳管至集群。

3.1.1 - 配置动态持久卷

动态卷供应(Dynamic Volume Provisioning)允许按需创建存储卷。动态卷供应依赖StorageClass对象。 集群管理员可以根据需要定义多个StorageClass对象,在声明PV或者PVC时,指定满足业务要求的StorageClass。华为CSI在从华为存储设备上申请资源时,会根据StorageClass的预置定义,创建满足业务要求的存储资源。

配置说明

请根据以下步骤配置使用动态持久卷:

前置准备

在开始配置动态持久卷前,请参考 配置存储类 ,完成StorageClass的配置。

配置PVC

  1. 准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表1

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: mypvc
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Filesystem
      storageClassName: mysc
      resources:
        requests:
          storage: 100Gi
    
  2. 执行命令,使用配置文件创建PVC。

    kubectl create -f mypvc.yaml
    
  3. 等待一段时间后,执行以下命令,查看已经创建的PVC信息。

    kubectl get pvc mypvc
    

    命令结果示例如下,如果PVC的状态是“Bound”时,则说明该PVC已经创建成功,后续可以被Pod使用。

    NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    mypvc       Bound    pvc-840054d3-1d5b-4153-b73f-826f980abf9e   100Gi      RWO            mysc           12s
    

    • 完成创建PVC操作后,如果长时间后(如一分钟后)PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending
    • 建议每批次最多批量创建/删除100个PVC。

表 1 配置动态卷持久卷PVC参数说明

参数

说明

必选参数

默认值

备注

metadata.name

自定义的PVC对象名称。

-

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。

spec.volumeMode

卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:

  • Filesystem:本地文件系统。
  • Block:裸设备。

Filesystem

该参数在挂载PV时生效,默认为Filesystem。

  • Filesystem表示在容器通过一个本地文件系统访问PV,本地文件系统类型为指定StorageClass中的fsType字段指定, Dtree类型存储也使用此参数进行描述。
  • Block表示使用裸卷的方式访问访问PV。

spec.storageClassName

StorageClass对象名称。

-

业务需要的StorageClass对象名称。

spec.resources.requests.storage

指定待创建卷大小,格式为***Gi,单位为GiB。

10Gi

PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。

如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。

spec.accessModes

指定卷访问模式。

  • RWO(ReadWriteOnce):卷可以被一个节点以读写方式挂载。 该模式也允许运行在同一节点上的多个 Pod 访问卷。
  • ROX(ReadOnlyMany):卷可以被多个节点以只读方式挂载。
  • RWX(ReadWriteMany):卷可以被多个节点以读写方式挂载。
  • RWOP(ReadWriteOncePod):卷只能被单个 Pod 以读写方式挂载。该特性需要 Kubernetes 1.22 以上版本。

ReadWriteOnce

  • RWO/ROX/RWOP:所有类型卷均支持,RWOPKubernetes 1.22版本以上支持。Kubernetes 1.29版本以下需要参考开启ReadWriteOncePod功能门章节开启该特性。
  • RWX支持情况如下:
    • NAS存储:所有卷均支持。
    • SAN存储:仅volumeMode设置为Block的卷支持。

表 2 ext4容量的规格

存储类型

存储规格限制

ext4规格限制

CSI规格限制

OceanStor Dorado

512Ki~256Ti

50Ti

512Ki~50Ti

OceanStor Pacific系列

64Mi~512Ti

50Ti

64Mi~50Ti

OceanDisk

512Ki~256Ti

50Ti

512Ki~50Ti

表 3 XFS容量的规格

存储类型

存储规格限制

XFS规格限制

CSI规格限制

OceanStor Dorado

512Ki~256Ti

500Ti

512Ki~256Ti

OceanStor Pacific系列

64Mi~512Ti

500Ti

64Mi~500Ti

OceanDisk

512Ki~256Ti

500Ti

512Ki~256Ti

使用PVC

在完成PVC创建后,就可以使用PVC来创建Pod。如下示例是一个简单的使用PVC示例,在该示例中,创建的Pod使用了刚刚创建的_ mypvc_。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers: 
      - image: nginx:alpine
        name: container-0 
        volumeMounts: 
        - mountPath: /tmp
          name: pvc-mypvc 
      restartPolicy: Always 
      volumes: 
      - name: pvc-mypvc 
        persistentVolumeClaim: 
          claimName:  mypvc  # name of PVC


若使用PVC批量创建Pod,Pod长时间处于ContainerCreating状态,且huawei-csi-node服务状态为OOMKilled,说明当前huawei-csi-node服务内存不足。请根据 表1 ,将huawei-csi-node内存限制增大。

3.1.2 - 配置静态持久卷

静态卷供应(Static Volume Provisioning)允许管理员使用已经在存储侧创建的资源做为PV,供集群中的容器使用。

配置说明

请根据以下步骤配置使用静态持久卷:

前置准备

存储侧已经存在待创建PV所需要的存储资源,如LUN或者文件系统。如果存储资源是文件系统,还需要创建文件系统的共享和客户端信息。

配置PV

  1. 准备PV配置文件mypv.yaml,示例如下,其他配置参数请参考 表1

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: mypv
    spec:
      volumeMode: Filesystem
      storageClassName: "" # 必须配置为""
      accessModes:
        - ReadWriteOnce
      csi:
        driver: csi.huawei.com # CSI驱动名称
        volumeHandle: iscsi-dorado-181.lun0001 # 卷名称
        fsType: xfs # 文件系统类型
      capacity:
        storage: 100Gi
    


    静态卷供应的配置文件中,storageClassName参数必须配置为‘“”’,如果不配置,Kubernetes会使用系统默认的StorageClass。

  2. 执行以下命令,基于准备好的yaml文件创建PV。

    kubectl create -f mypv.yaml
    
  3. 等待一段时间后,执行以下命令,查看已经创建的PV信息。

    kubectl get pv
    

    命令结果示例如下,当PV状态为“Available”时,表明PV创建成功。

    NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    mypv       100Gi      RWO            Retain           Available                                               4s
    

表 1 配置静态卷持久卷PV参数说明

参数

说明

必选参数

默认值

备注

metadata.name

自定义的PV对象名称。

-

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。

spec.volumeMode

卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:

  • Filesystem:本地文件系统。
  • Block:裸设备。

Filesystem

该参数在挂载PV时生效,默认为Filesystem。

  • Filesystem表示在容器通过一个本地文件系统访问PV,本地文件系统类型为指定StorageClass中的fsType字段指定。
  • Block表示使用裸卷的方式访问访问PV。

spec.storageClassName

StorageClass对象名称。必选参数。

-

此处须设置为空字符串(即输入"")。

spec.accessModes

指定卷访问模式。

  • RWO(ReadWriteOnce):卷可以被一个节点以读写方式挂载。 该模式也允许运行在同一节点上的多个 Pod 访问卷。
  • ROX(ReadOnlyMany):卷可以被多个节点以只读方式挂载。
  • RWX(ReadWriteMany):卷可以被多个节点以读写方式挂载。
  • RWOP(ReadWriteOncePod):卷只能被单个 Pod 以读写方式挂载。该特性需要 Kubernetes 1.22 以上版本。

ReadWriteOnce

  • RWO/ROX/RWOP:所有类型卷均支持,RWOPKubernetes 1.22版本以上支持。请参考开启ReadWriteOncePod功能门章节,检查您的Kubernetes集群是否开启该特性。
  • RWX支持情况如下:
    • NAS存储:所有卷均支持。
    • SAN存储:仅volumeMode设置为Block的卷支持。

spec.csi.driver

CSI驱动名称。

csi.huawei.com

该字段需要指定为安装华为CSI时设置的驱动名称。

spec.csi.volumeHandle

存储资源的唯一标志。必选参数。

格式为:<backendName>.<volume-name>

-

该参数值由以下两部分构成:

  • <backendName>:该卷所在的后端名称,可使用如下命令获取配置的后端信息:

    oceanctl get backend

  • <volume-name>:存储上资源(LUN/文件系统)的名称,可通过DeviceManager查看。

spec.csi.fsType

指定主机文件系统类型。可选参数。支持类型为:

  • ext2
  • ext3
  • ext4
  • xfs

-

如果不设置,默认为ext4。仅当volumeMode配置为“Filesystem”时生效。

spec.csi.volumeAttributes.dTreeParentName

卷资源类型为Dtree时,其父文件系统名称。

条件必选

-

纳管对象为Dtree资源,且存储后端中未配置parentname参数时,必须配置该参数。

若仅在PV中配置了dTreeParentName,而对应的存储后端中未配置parentname时,要求在安装CSI时根据表5将CSIDriverObject.attachRequired设置为true。

spec.capacity.storage

指定卷大小。

100Gi

请确保与存储上对应资源的容量保持一致。Kubernetes并不会调用CSI检查此字段值的正确性,所以在PV容量与存储上对应资源的容量不一致也能被成功创建。

spec.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。

spec.mountOptions.acl

DPC命名空间支持ACL功能。DPC客户端支持POSIX ACL、NFSv4 ACL、NT ACL的鉴权行为。

-

acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。

spec.mountOptions.aclonlyposix

DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。

支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。

-

aclonlyposix与acl参数同时使用时,仅acl参数生效,即命名空间支持ACL功能。

spec.mountOptions.cnflush

异步刷盘模式,即关闭命名空间下的文件时不会立即刷盘。

-

异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。

spec.mountOptions.cflush

同步刷盘模式,即关闭命名空间下的文件时立即刷盘。

-

默认使用同步刷盘模式。

配置PVC

当PV以静态卷供应的方式创建完成后,可以基于该PV创建PVC,从而供容器使用。

  1. 准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表2

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: mypvc
    spec:
      storageClassName: ""
      accessModes:
        - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 100Gi
      volumeName: mypv # 对应PV名称
    
  2. 执行以下命令,基于已配置的yaml文件创建PVC。

    kubectl create -f mypvc.yaml
    
  3. 等待一段时间后,执行以下命令,查看已经创建的PVC信息。

    kubectl get pvc
    

    命令结果示例如下,当PVC状态为“Bound“时,表明PVC创建成功。

    NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    mypvc       Bound    pvc-840054d3-1d5b-4153-b73f-826f980abf9e   100Gi      RWO                           12s
    

表 2 配置静态持久卷PVC参数说明

参数

说明

必选参数

默认值

备注

metadata.name

自定义的PVC对象名称。

-

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。

spec.accessModes

指定卷访问模式。

  • RWO(ReadWriteOnce):卷可以被一个节点以读写方式挂载。 该模式也允许运行在同一节点上的多个 Pod 访问卷。
  • ROX(ReadOnlyMany):卷可以被多个节点以只读方式挂载。
  • RWX(ReadWriteMany):卷可以被多个节点以读写方式挂载。
  • RWOP(ReadWriteOncePod):卷只能被单个 Pod 以读写方式挂载。该特性需要 Kubernetes 1.22 以上版本。

ReadWriteOnce

  • RWO/ROX/RWOP:所有类型卷均支持,RWOP需Kubernetes 1.22版本以上支持。Kubernetes 1.29版本以下需要参考开启ReadWriteOncePod功能门章节开启该特性。
  • RWX支持情况如下:
    • NAS存储:所有卷均支持。
    • SAN存储:仅volumeMode设置为Block的卷支持。

spec.volumeMode

卷模式。

Filesystem

可选, 支持Filesystem或Block, 默认为Filesystem。该参数在创建Pod时生效,其中Filesystem表示在PVC上创建一个文件系统访问存储, Block表示使用裸卷的方式访问存储。

spec.resources.requests.storage

指定待创建卷大小。

-

指定待创建卷大小,格式为***Gi,单位为GiB。

PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。

如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。

在通过静态PV创建PVC时,若PVC容量小于绑定PV容量,最终PVC容量大小为绑定PV容量,若PVC容量大于绑定PV容量,PVC将无法被创建。

spec.volumeName

PV对象名称。

-

静态创建PVC时必选。

spec.storageClassName

StorageClass对象名称。

-

创建PVC时传空字符串,不设置该参数会使用默认的StorageClass对象名称。

使用PVC

与动态卷供应 使用PVC 方式相同。

3.1.3 - 纳管持久卷

纳管卷供应(Manage Volume Provisioning)允许管理员使用已经在存储侧创建的资源做为PV,并能够支持动态卷的特性,例如:扩容,快照,克隆等,属于华为CSI自定义能力。使用该特性可满足如下场景:

  • 容器化应用的改造场景,需要使用已有的存储卷。
  • 重建Kubernetes集群。
  • 容灾场景下,对存储数据进行迁移。


纳管卷供应支持将已有存储资源纳管至Kubernetes,不允许将一个存储资源纳管多次和针对同一个存储资源进行并发删除/创建操作。 当同一个存储资源被多个集群纳管时,在单个集群中针对该纳管卷的操作仅在当前集群内生效,不会同步到其他集群中,需要使用者自行在其他集群中对该纳管卷进行数据同步操作。 例如:在某一集群中对PVC进行扩容时,其他集群对应的PVC不会自动扩容,需要在其他集群中手动根据 扩容持久卷 中的扩容命令进行扩容。

配置说明

请根据以下步骤纳管使用持久卷:

前置准备

  • 已在CSI中注册需要纳管卷所在存储。
  • 已登录存储设备获取需要纳管卷的名称和容量。
  • 已完成StorageClass的配置,参考 配置存储类 (关注表格中的“纳管卷是否生效”字段)。

配置PVC

  1. 准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表1

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: mypvc
      annotations:
        csi.huawei.com/manageVolumeName: "*"  # 存储资源名称
        csi.huawei.com/manageBackendName: "*" # 存储后端名称
      labels:
        provisioner: csi.huawei.com
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Filesystem
      storageClassName: mysc
      resources:
        requests:
          storage: 100Gi
    
  2. 执行命令,使用配置文件创建PVC。

    kubectl create -f mypvc.yaml
    
  3. 等待一段时间后,执行以下命令,查看已经创建的PVC信息。

    kubectl get pvc mypvc
    

    命令结果示例如下,如果PVC的状态是“Bound”时,则说明该PVC已经创建成功,后续可以被Pod使用。

    NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    mypvc       Bound    pvc-840054d3-1d5b-4153-b73f-826f980abf9e   100Gi      RWO            mysc           12s
    

    • 完成创建PVC操作后,如果长时间后(如一分钟后)PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending
    • 建议每批次最多批量创建/删除100个PVC。

表 1 纳管持久卷PVC参数说明

参数

说明

必选参数

默认值

备注

metadata.annotations

PVC对象的注释。配置以下参数:

  • 驱动名称/manageVolumeName:卷在存储侧的名称。
  • 驱动名称/manageBackendName:卷所属后端的名称。

csi.huawei.com/manageVolumeName: * csi.huawei.com/manageBackendName: *

  • 驱动名称获取请参考表4
  • 驱动名称/manageVolumeName:为存储上已有卷的名称,除英文字符外,其他国家字符不支持。
  • 驱动名称/manageBackendName:CSI中存储后端的名称。

可执行oceanctl get backend -n huawei-csi命令获取后端名称。

metadata.labels

PVC对象的标签。

-

格式:provisioner: 安装时指定的驱动名称。

例如 provisioner: csi.huawei.com。

该参数在创建PVC时生效,用于监听PVC资源,获取metadata.annotations信息。

metadata.name

自定义的PVC对象名称。

-

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。

spec.volumeMode

卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:

  • Filesystem:本地文件系统。
  • Block:裸设备。
说明:

该参数在挂载PV时生效,需要与纳管卷的使用方式保持一致。

  • 如果卷纳管之前是以裸卷方式使用,volumeMode必须配置为Block。
  • 如果卷纳管之前是以ext2/ext3/ext4方式使用,volumeMode必须配置为Filesystem,且StorageClass中fsType必须指定为ext2/ext3/ext4。
  • 如果卷纳管之前是以XFS方式使用,volumeMode必须配置为Filesystem,且StorageClass中fsType必须指定为xfs。

Filesystem

该参数在挂载PV时生效。

  • Filesystem表示在容器通过一个本地文件系统访问PV,本地文件系统类型为指定StorageClass中的fsType字段指定。
  • Block表示使用裸卷的方式访问访问PV。

spec.storageClassName

StorageClass对象名称。

-

StorageClass的配置需要与纳管卷的配置保持一致。

spec.resources.requests.storage

指定待创建卷大小,格式为***Gi,单位为GiB。

-

PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。

如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。

spec.accessModes

指定卷访问模式。

  • RWO(ReadWriteOnce):卷可以被一个节点以读写方式挂载。 该模式也允许运行在同一节点上的多个 Pod 访问卷。
  • ROX(ReadOnlyMany):卷可以被多个节点以只读方式挂载。
  • RWX(ReadWriteMany):卷可以被多个节点以读写方式挂载。
  • RWOP(ReadWriteOncePod):卷只能被单个 Pod 以读写方式挂载。该特性需要 Kubernetes 1.22 以上版本。

ReadWriteOnce

  • RWO/ROX/RWOP:所有类型卷均支持,RWOPKubernetes 1.22版本以上支持。Kubernetes 1.29版本以下需要参考开启ReadWriteOncePod功能门章节开启该特性。
  • RWX支持情况如下:
    • NAS存储:所有卷均支持。
    • SAN存储:仅volumeMode设置为Block的卷支持。

使用PVC

与动态卷供应 使用PVC 方式相同。

3.2 - 管理持久卷

3.2.1 - 扩容持久卷


OceanStor V700R001C10和OceanStor Dorado V700R001C10及以后版本,扩容后文件系统的容量存在最小限制,具体限制值参考对应存储的产品手册。

当容器使用的PVC容量不足时,需要对该PVC进行扩容操作。

前提条件

  • PVC已创建,所在的backend存在且支持扩容。

  • 支持扩容的存储请参考 兼容性和特性 章节中的特性表格,支持扩容的Kubernetes版本请参考 Kubernetes特性矩阵

  • huawei-csi-controller启用了csi-resizer服务。

    kubectl describe deploy huawei-csi-controller -n huawei-csi | grep csi-resizer
    

    命令回显示例如下则说明已启用csi-resizer服务。

       csi-resizer:
        Image:      k8s.gcr.io/sig-storage/csi-resizer:v1.9.0
    

操作步骤

  1. 执行命令,查询StorageClass是否支持扩容。其中,mysc 为需要查看的StorageClass名称。

    kubectl get sc mysc
    

    命令结果示例如下:

    NAME              PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    mysc              csi.huawei.com   Delete          Immediate           true                  172m
    

    如果ALLOWVOLUMEEXPANSION的值为true,表示当前StorageClass已经支持扩容,请跳转至步骤 3

  2. 执行以下命令,将“allowVolumeExpansion“的值修改为“true“。其中,mysc 为需要修改的StorageClass名称。

    kubectl patch sc mysc --patch '{"allowVolumeExpansion":true}'
    
  3. 执行命令,查询PVC的StorageClass名称。其中,mypvc 为需要扩容的PVC名称。

    kubectl get pvc mypvc
    

    命令结果示例如下:

    NAME               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
    mypvc              Bound    pvc-3383be36-537c-4cb1-8f32-a415fa6ba384   2Gi        RW0            mysc              145m
    
  4. 执行以下命令进行扩容。

    kubectl patch pvc mypvc -p '{"spec":{"resources":{"requests":{"storage":"120Gi"}}}}'
    

    其中,"mypvc“是需要扩容的PVC名称,“120Gi”是扩容后的容量大小。请根据实际情况进行替换。

    • PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见 表2 ;当使用的是XFS文件系统时,容量限制见 表3 。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。
    • 如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。
    • 如果扩容的目标容量超过存储池容量导致扩容失败,请参考 PVC扩容的目标容量超过存储池容量导致扩容失败
  5. 执行命令,检查容量修改是否生效。

    kubectl get pvc
    

    命令结果示例如下,如果CAPACITY字段已变更为指定容量,说明扩容成功。

    NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    mypvc       Bound    pvc-3383be36-537c-4cb1-8f32-a415fa6ba384   120Gi       RWO            mysc           24s
    

3.2.2 - 克隆持久卷

本章节描述如何克隆PVC。

在克隆PVC时,需要指定数据源。如下是一个克隆PVC示例,在该示例中,使用“mypvc”作为数据源,新创建了一个名叫“myclone”的PVC。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclone
spec:
  storageClassName: mysc
  dataSource:
    name: mypvc
    kind: PersistentVolumeClaim
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

  • 指定的storageClassName必须和dataSource中的源卷的StorageClass需一致。
  • 克隆卷的容量必须不小于源卷容量,建议和源卷容量保持一致。

前提条件

系统中已经存在源PVC,且源PVC所在的backend支持克隆。支持克隆的存储请参考 兼容性和特性 章节中的特性表格,支持克隆的Kubernetes版本请参考 Kubernetes特性矩阵

操作步骤

  1. 执行以下命令,基于克隆卷的配置文件创建PVC。

    kubectl create -f myclone.yaml
    

3.2.3 - 变更持久卷

3.2.3.1 - 开启PVC变更特性

当前华为CSI安装时默认关闭PVC变更特性,如需要使用该特性,请按照以下步骤开启。

3.2.3.1.1 - 使用Helm开启PVC变更特性

前提条件

已使用Helm安装华为CSI。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令检查PVC变更特性是否开启。

    其中helm-huawei-csi为安装时指定的Helm Chart名称,huawei-csi为安装时指定的Helm Chart命名空间。组件包路径请参考 表1

    helm get values helm-huawei-csi -n huawei-csi -a | grep volumeModify -A 1
    

    命令结果示例如下:

    • 若回显内容为“enabled: true”,则表示特性开启,可跳过后续步骤。
    • 若回显内容为“enabled: false”,请按照后续步骤开启PVC变更特性。
    volumeModify:
      enabled: false
    
  3. 进入/helm/esdk目录,执行命令,配置卷变更CRD。

    # kubectl apply -f ./crds/volume-modify/
    customresourcedefinition.apiextensions.k8s.io/volumemodifyclaims.xuanwu.huawei.io configured
    customresourcedefinition.apiextensions.k8s.io/volumemodifycontents.xuanwu.huawei.io configured
    


    如回显中存在“Warning: resource customresourcedefinitions/volumemodifycontents.xuanwu.huawei.io is missing the kubectl.kubernetes.io/last-applied-configuration…”提示,可忽略该提示。该提示出现原因是由于Helm安装应用时使用的是kubectl create命令而不是kubectl apply命令。

  4. 执行以下命令,获取原有服务配置文件。

    helm get values helm-huawei-csi -n huawei-csi -a > ./update-values.yaml
    
  5. 执行vi update-values.yaml命令打开 4 中获取的文件,修改以下配置。修改完成后,按Esc,并输入**:wq!**,保存修改。

    csiExtender:
      volumeModify:    
        enabled: true
    
  6. 执行以下命令更新华为CSI服务。

    helm upgrade helm-huawei-csi ./ -n huawei-csi  -f ./update-values.yaml
    
  7. 执行命令检查服务是否启动。

    kubectl get pod -n huawei-csi
    

    命令结果示例如下,其中huawei-csi为华为CSI部署命名空间。

    NAME                                     READY     STATUS    RESTARTS   AGE
    huawei-csi-controller-6dfcc4b79f-9vjtq   10/10     Running   0          24m
    huawei-csi-node-tqs87                    3/3       Running   0          20m
    

3.2.3.1.2 - 手动方式开启PVC变更特性

前提条件

已使用手动方式安装华为CSI。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 进入manual/esdk工作目录下,执行以下命令,配置卷变更CRD。

    kubectl apply -f ./crds/volume-modify/
    
  3. 执行以下命令。组件包路径请参考 表1

    kubectl apply -f ./deploy/huawei-csi-controller-extender.yaml
    
  4. 执行命令检查服务是否启动。

    kubectl get pod -n huawei-csi
    

    命令结果示例如下,其中huawei-csi为华为CSI部署命名空间。

    NAME                                     READY     STATUS    RESTARTS   AGE
    huawei-csi-controller-6dfcc4b79f-9vjtq   10/10     Running   0          24m
    huawei-csi-node-tqs87                    3/3       Running   0          24m
    

3.2.3.2 - 配置PVC变更

PVC变更特性使用CRD实现,当前资源说明如下。

表 1 资源说明

NAME

APIVERSION

NAMESPACED

KIND

volumemodifyclaims

xuanwu.huawei.io/v1

false

VolumeModifyClaim

volumemodifycontents

xuanwu.huawei.io/v1

false

VolumeModifyContent

  • VolumeModifyClaim资源支持创建/删除/查询,不支持更新。
  • VolumeModifyContent资源仅支持查询,用于展示单个PVC变更详情,请勿手动创建/删除/修改。
  • VolumeModifyContent资源被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。

3.2.3.2.1 - 创建PVC变更

前提条件

待变更PVC关联的存储后端已经组成双活存储后端,若未组成双活存储后端,请参考 更新存储后端信息 章节配置。

PVC变更文件说明

PVC变更文件样例模板为/examples/volumemodifyclaim.yaml,具体配置项如下表所示:

表 1 参数说明

参数

描述

必选参数

默认值

备注

apiVersion

API组,string类型

xuanwu.huawei.io/v1

固定填写xuanwu.huawei.io/v1

kind

资源的类型,string类型

VolumeModifyClaim

固定填写VolumeModifyClaim

metadata.name

集群资源对象的名称,string类型

-

名称必须满足DNS 子域名的命名规则,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以小写字母数字字符开头和结尾,最大长度不超过63个字符。

注意:在PVC变更过程中,会对原StorageClass进行备份,备份StorageClass的名称为“<原StorageClass名称><VolumeModifyClaim名称>”,且需符合StorageClass命名规则。

spec.source.kind

数据源类型,string类型

StorageClass

仅支持设置为:StorageClass

spec.source.name

数据源名称,string类型

-

仅支持设置StorageClass名称

spec.parameters.hyperMetro

是否将普通卷变更为双活卷。当前取值仅支持"true"。

-

仅支持主站点普通存储卷变更为双活存储卷。

spec.parameters.metroPairSyncSpeed

双活Pair同步速率。支持配置为1~4。

可选值:

  • 1:低
  • 2:中
  • 3:高
  • 4:最高

-

当且仅当spec.parameters.hyperMetro为"true"时生效。

注意:

  • 未配置该参数时,双活Pair存储速率由存储决定。
  • 最高速率同步时可能导致主机时延增大。

  • spec.source.kind和spec.source.name用于指定卷变更范围,例如配置为StorageClass和对应名称时,将会变更使用目标StorageClass发放的所有的处于Bound状态的PVC。
  • 当所有关联的PVC完成变更后,华为CSI会替换原有的StorageClass,并增加VolumeModifyClaim的spec.parameters参数,使得PVC满足StorageClass定义。

典型场景配置请参考如下示例:

变更普通卷为双活卷

配置变更普通卷为双活卷示例如下:

apiVersion: xuanwu.huawei.io/v1
kind: VolumeModifyClaim
metadata:
  name: myvmc
spec:
  source:
    kind: StorageClass
    name: mysc
  parameters:
    hyperMetro: "true"

创建PVC变更资源

  • 变更的双活卷仅支持双活AA模式。
  • 如果变更场景为普通卷变更为双活卷,则仅支持变更主站点端存储卷。
  • 创建PVC变更资源期间,请勿使用华为CSI管理PVC。
  • 不支持对同一个PVC创建多个VolumeModifyClaim资源,若存在对目标PVC的多次变更,请在单次变更完成之后再执行。

使用PVC变更文件创建PVC变更资源步骤如下。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令,创建PVC变更。

    kubectl create -f volumemodifyclaim.yaml 
    
  3. 参考 查询PVC变更 查询创建结果。

3.2.3.2.2 - 查询PVC变更

本章节介绍如何使用Kubectl查询PVC变更状态,当前华为CSI通过CRD提供以下API。

查询VolumeModifyClaim

使用kubectl查询VolumeModifyClaim步骤如下。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令,查询PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。

    kubectl get volumemodifyclaims <vmc-name> -owide
    

    命令结果示例如下:

    NAME    STATUS      READY   SOURCEKIND     SOURCENAME   STARTEDAT              COMPLETEDAT            AGE
    myvmc   Completed   1/1     StorageClass   mysc         2024-06-06T03:19:13Z   2024-06-06T03:19:16Z   2m2s
    

    表 1 回显说明

    名称

    说明

    NAME

    VolumeModifyClaim资源名称。

    STATUS

    VolumeModifyClaim资源状态,可取值如下:

    • Pending:初始状态。
    • Creating:VolumeModifyClaim完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
    • Completed:所有关联的PVC均完成变更。
    • Rollback:关联的PVC部分完成变更时,用户执行了删除PVC变更操作。
    • Deleting:关联的PVC全部完成变更时,用户执行了删除PVC变更操作。

    READY

    完成变更PVC数量/全部待变更PVC数量。

    SOURCEKIND

    数据源类型,例如StorageClass。

    SOURCENAME

    数据源名称,例如StorageClass名称。

    STARTEDAT

    变更开始时间,指服务端接收该任务并开始处理的时间戳。

    COMPLETEDAT

    变更完成时间,指所有关联的PVC均完成变更后的时时间戳,仅STATUS为Completed时,存在该值。

    AGE

    VolumeModifyClaim从创建至当前的存活时间。


VolumeModifyClaim支持使用kubectl查看Events信息,当VolumeModifyClaim无法满足创建要求,或者创建过程中出现错误时,服务端将记录Events信息。参考命令如下:

kubectl describe volumemodifyclaims local-to-hypermetro 

查询VolumeModifyContent

VolumeModifyContent由VolumeModifyClaim资源创建,记录了单个PVC的变更详情,使用kubectl查询VolumeModifyContent步骤如下。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行命令,查询PVC变更。其中myvmc-uid为VolumeModifyContent资源名称。

    kubectl get volumemodifycontents myvmc-uid  -owide
    

    命令结果示例如下:

    NAME         STATUS      MODIFYCLAIMNAME     SOURCEVOLUME   STARTEDAT              COMPLETEDAT            AGE
    myvmc-uid    Completed   myvmc               default/mypvc  2024-06-06T03:19:07Z   2024-06-06T03:19:09Z   36m
    

    表 2 回显说明

    名称

    说明

    NAME

    VolumeModifyContent资源名称,格式为:VolumeModifyClaim名称-关联PVC的UID。

    STATUS

    VolumeModifyContent资源状态,可取值如下:

    • Pending:初始状态。
    • Creating:VolumeModifyContent完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
    • Completed:关联的PVC完成变更。
    • Rollback:正在回滚PVC变更。

    MODIFYCLAIMNAME

    关联的VolumeModifyClaim名称。

    SOURCEVOLUME

    关联的PVC信息,格式为:命名空间名称/PVC名称。

    STARTEDAT

    PVC变更开始时间,指服务端接收该任务并开始处理的时间戳。

    COMPLETEDAT

    PVC变更完成时间,指所有关联的PVC均完成变更后的时时间戳,仅STATUS为Completed时,存在该值。

    AGE

    即VolumeModifyContent从创建至当前的存活时间。


VolumeModifyContent支持使用kubectl查看Events信息,当VolumeModifyContent无法满足创建要求,或者变更PVC出现错误时,服务端将记录Events信息。参考命令如下:

kubectl describe volumemodifycontents myvmc-uid

3.2.3.2.3 - 删除PVC变更

  • 当VolumeModifyClaim的STATUS值为Creating时,删除VolumeModifyClaim资源,将会在存储侧删除此次变更创建的资源,然后移除集群资源。在删除后,如果继续使用原有的StorageClass进行PVC管理,需要将关联的存储后端恢复为非双活存储后端。
  • 当VolumeModifyClaim的STATUS值为Pending或Completed时,删除VolumeModifyClaim资源,仅会移除集群资源,不会和存储交互,即不会在存储侧删除变更创建的资源。
  • VolumeModifyContent被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。
  • 若待变更PVC中已有部分PVC满足变更要求,当批量变更失败时,会移除掉所有PVC的变更,导致已满足变更条件的PVC不再满足。
  • 若待变更PVC已经在存储侧被手动管理,则可能导致变更失败。使用变更特性时,请勿手动管理存储卷。

当前章节介绍如何使用kubectl删除PVC变更,基于步骤如下。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行 命令,删除PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。

    kubectl delete volumemodifyclaims <vmc-name>
    
  3. 参考 查询PVC变更 查询创建结果。