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

返回本页常规视图.

管理存储后端

本章节介绍如何创建存储后端,当前支持根据配置的后端yaml文件和导出的configmap.json文件两种方式创建后端。

如果通过新增后端yaml文件创建后端,请参考典型场景存储后端配置文件示例章节配置后端文件。

如果已存在导出的configmap.json文件,请参考创建存储后端章节创建存储后端。

1 - 创建存储后端

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

创建后端步骤

  1. 参考典型场景存储后端配置文件示例章节准备后端配置文件,如backend.yaml,若需创建多个后端,请使用’”—“分隔。

    storage: "oceanstor-san"
    name: "backend-1"
    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"
    ---
    storage: "oceanstor-san"
    name: "backend-2"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.158: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-1   oceanstor-san        https://192.168.129.157:8088 
    2       false         backend-2   oceanstor-san        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:admin
    Please enter this backend password:
    
    Backend backend-1 is configured
    NUMBER  CONFIGURED    NAME         STORAGE              URLS               
    1       true          backend-1    oceanstor-san        https://192.168.129.157:8088 
    2       false         backend-2    oceanstor-san        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-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   
    

1.1 - 典型场景存储后端配置文件示例

典型场景的backend配置请参考下列示例,详细的参数配置请参考存储后端配置项说明

配置iSCSI协议类型的存储后端

如果要使用iSCSI协议类型,请确保在安装华为CSI前,主机上已安装iSCSI客户端,可通过检查主机依赖软件状态章节检查。如未安装iSCSI客户端,请在安装iSCSI客户端之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:

kubectl delete pods -n huawei-csi -l app=huawei-csi-node

企业存储配置iSCSI协议类型的后端配置文件示例如下:

storage: "oceanstor-san"
name: "dorado-iscsi-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "iscsi"
  portals:
    - "192.168.128.120"                
    - "192.168.128.121"
maxClientThreads: "30"

分布式存储配置iSCSI协议类型的后端配置文件示例如下:

storage: "fusionstorage-san"
name: "pacific-iscsi-125"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.125:8088"
  - "https://192.168.129.126:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "iscsi"
  portals:
    - "192.168.128.122"
    - "192.168.128.123"
maxClientThreads: "30"

配置FC协议类型的存储后端

如果要使用FC协议类型,请确保在安装华为CSI前,主机和存储的FC网络已联通,如未FC网络未打通,请在打通FC网络之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:

kubectl delete pods -n huawei-csi -l app=huawei-csi-node

企业存储配置FC协议类型的后端配置文件示例如下:

storage: "oceanstor-san"
name: "fc-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "fc"
maxClientThreads: "30"

配置NVMe over RoCE协议类型的存储后端

如果要使用NVMe over RoCE协议类型,请确保在安装华为CSI前,主机和存储的NVMe over RoCE网络已联通,如未NVMe over RoCE网络未打通,请在打通NVMe over RoCE网络之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:

kubectl delete pods -n huawei-csi -l app=huawei-csi-node

企业存储配置NVMe over RoCE协议类型的后端配置文件示例如下:

storage: "oceanstor-san"
name: "roce-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "roce"
  portals:
    - "192.168.128.120"        
    - "192.168.128.121"
maxClientThreads: "30"

配置NVMe over FC协议类型的存储后端

企业存储配置NVMe over FC协议类型的后端配置文件示例如下:

storage: "oceanstor-san"
name: "fc-nvme-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "fc-nvme"
maxClientThreads: "30"

配置NFS协议类型的存储后端

企业存储配置NFS协议类型的后端配置文件示例如下:

storage: "oceanstor-nas"
name: "nfs-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "nfs"
  portals:        
    - "192.168.128.155"
maxClientThreads: "30"

分布式存储配置NFS协议类型的后端配置文件示例如下:

storage: "fusionstorage-nas"
name: "nfs-126"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.125:8088"
  - "https://192.168.129.126:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "nfs"
  portals:
    - "192.168.128.123"
maxClientThreads: "30"

配置SCSI协议类型的存储后端

分布式存储配置SCSI协议类型的后端配置文件示例如下:

storage: "fusionstorage-san"
name: "scsi-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
pools:
  - "StoragePool001"
parameters:
  protocol: "scsi"
  portals:
    - {"hostname01": "192.168.125.21","hostname02": "192.168.125.22"}
maxClientThreads: "30"

配置DPC协议类型的存储后端

分布式存储配置DPC协议类型的后端配置文件示例如下:

storage: "fusionstorage-nas"
name: "dpc-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
parameters:      
  protocol: "dpc"
maxClientThreads: "30"

配置Dtree类型的存储后端

企业存储配置Dtree类型后端配置文件示例如下:

storage: "oceanstor-dtree"
name: "nfs-dtree"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
parameters:
  protocol: "nfs"
  parentname: "parent-filesystem"  
  portals:
    - "192.168.128.155"
maxClientThreads: "30"

配置双活类型的存储后端

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

CSI支持在对接OceanStor或OceanStor Dorado,并在存储侧发放NFS类型的双活卷时。需要配置互为双活的存储后端,具体操作为分别创建两个配置文件,逐一创建后端。

本示例展示了如何为华为OceanStor或OceanStor Dorado存储配置双活类型的后端。首先创建本端的存储后端配置文件nfs-hypermetro-155.yaml:

storage: "oceanstor-nas"
name: "nfs-hypermetro-155"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.155:8088"
  - "https://192.168.129.156:8088"
pools:
  - "StoragePool001"
metrovStorePairID: "f09838237b93c000"
metroBackend: "nfs-hypermetro-157"
parameters:
  protocol: "nfs"
  portals:
    - "192.168.129.155"
maxClientThreads: "30"

创建本端后端完成后,创建远端的存储后端配置文件nfs-hypermetro-157.yaml:

storage: "oceanstor-nas"
name: "nfs-hypermetro-157"
namespace: "huawei-csi"
urls:
  - "https://192.168.129.157:8088"
  - "https://192.168.129.158:8088"
pools:
  - "StoragePool001"
metrovStorePairID: "f09838237b93c000"
metroBackend: "nfs-hypermetro-155"
parameters:
  protocol: "nfs"
  portals:
    - "192.168.129.157"
maxClientThreads: "30"

1.2 - 存储后端配置项说明

后端配置文件样例模板为/examples/backend/backend.yaml,该文件为一个示例文件,具体配置项如下表所示:

表 1 backend配置项说明

参数

描述

必选参数

默认值

备注

storage

存储服务类型。

  • 企业存储提供SAN存储时填写oceanstor-san。
  • 企业存储提供NAS存储时填写oceanstor-nas。
  • 企业存储提供Dtree类型的NAS存储时填写oceanstor-dtree。
  • 分布式存储提供SAN存储时填写fusionstorage-san。
  • 分布式存储提供NAS存储时填写fusionstorage-nas。

oceanstor-nas

一个后端只允许提供一种存储服务。如果单套华为存储系统可以同时提供SAN和NAS的存储服务时,可以配置创建多个后端,每个后端使用不同的存储服务类型。

name

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

-

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

namespace

命名空间。

-

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

vstoreName

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

条件必选

-

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

accountName

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

条件必选

-

仅对接后端是OceanStor Pacific NAS存储且需要支持账号时,需要指定该参数。

urls

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

-

当对接后端是OceanStor或OceanStor Dorado存储,需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL。

pools

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

条件必选

-

storage为oceanstor-dtree时, 可以不填。

parameters.protocol

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

  • iscsi
  • fc
  • roce
  • fc-nvme
  • nfs
  • dpc
  • scsi

-

  • 使用iscsi时,请确保对接的计算节点已安装iSCSI客户端。
  • 使用nfs时,请确保对接的计算节点已安装NFS客户端工具。
  • 使用fc-nvme/roce时,请确保对接的计算节点已安装nvme-cli工具,工具版本仅支持1.x且版本不低于1.9。
  • 使用dpc时,请确保对接的计算节点已安装DPC客户端,并已在待接入存储上添加为DPC计算节点。
  • 使用scsi时,请确保对接的计算节点已安装分布式存储VBS客户端。

parameters.portals

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

iscsi,roce协议支持配置多个端口,nfs协议仅支持配置一个端口,fc、fc-nvme、dpc协议无需配置业务端口,scsi协议的端口形式为字典格式,key为主机名称,value为IP地址,仅支持IPv4。

条件必选

-

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

parameters.ALUA

存储后端ALUA参数配置。当工作节点使用操作系统原生多路径,且启用了ALUA时,需要进行配置。

条件必选

-

如果主机多路径配置启用了ALUA,请确保后端ALUA配置和主机的ALUA配置一致。

ALUA详细配置请参考通过Helm配置ALUA特性

parameters.parentname

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

storage为oceanstor-dtree时必选。

条件必选

-

请到DeviceManager文件系统界面查询。

metrovStorePairID

双活租户Pair ID。

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

条件必选

-

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

metroBackend

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

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

条件必选

-

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

supportedTopologies

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

条件必选

-

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

maxClientThreads

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

30

如果不配置该参数,则默认最大连接数为30。

2 - 查询存储后端

请参考查询存储后端节,使用oceanctl命令查询存储后端信息。

3 - 更新存储后端

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

3.1 - oceanctl更新存储后端密码

更新后端示例

  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
    
    Flags:
      -h, --help               help for backend
      -n, --namespace string   namespace of resources
          --password           Update account password
    
  2. 执行以下命令更新存储后端信息。

    oceanctl update backend backend-1 --password
    

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

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

3.2 - 手动更新存储后端

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

操作步骤

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

4 - 删除存储后端


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

删除后端示例

  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