zoukankan      html  css  js  c++  java
  • 在linux系统中配置NVMe over FC

    在linux系统中配置NVMe over FC与配置NVMe over TCP类似,前5步操作请参考《在linux系统中配置NVMe over TCP》,网页连接如下:

      https://www.cnblogs.com/JamesLi/p/11399054.html

    注意事项:

    以Emulex卡举例,在内核加载lpfc模块时,需要给模块参数赋值,包括:lpfc_enable_nvmet 和 lpfc_enable_fc4_type

    例如:

    modprobe lpfc lpfc_enable_nvmet=0x1234567890ABCDEF  lpfc_enable_fc4_type=3

    解释描述:

    lpfc lpfc_enable_nvmet赋值的是做target端的FC端口wwpn(从/sys/class/fc_host/hostx/port_name获得),设置多个时请用逗号分开(当前版本最大支持32个)。

    lpfc_enable_fc4_type可以赋值1或2或3,这里3表示既支持SCSI又支持NVMe。

    从第6步向后,请按下边步骤操作。

    6. 创建NVMe over FC的Transport层

    进入/sys/kernel/config/nvmet/ports目录进行操作。

    mkdir 123

    进入/sys/kernel/config/nvmet/ports/123/目录,此目录自动包含了如下内容

     

    开始设置这些属性:

    echo fc > addr_trtype
    echo fc > addr_adrfam
    addr_traddr            //注意:输入的traddr包含两部分,前边是nn后边是pn(即:node name和port name)。有两种格式即“nn-1234567890ABCDEF:pn-ABCDEF0123456789”或“nn-0x1234567890ABCDEF:pn-0xABCDEF0123456789”。两种格式差别就是是否带了0x标识。(注意nn和pn值的中间的“:”冒号可以用其他任意字符替代,而不要用空格(空格可能会导致只写入了一半),写入之后请用cat addr_traddr确认下是否已经成功写入)
    addr_trsvcid      //注意:这个字段在FC类型中暂时未用到

    8. 使用host主机进行Discovery

    在host端执行命令:

    nvme discover -t fc  -a nn-0x1234567890ABCDEF-pn-0xABCDEF0123456789  -w nn-0x2345678901ABCDEF-pn-0x1234567890FEDCBA

    参数:

    -a是指定的target端FC端口的node_name和port_name

    -w是指定的host_traddr,与target相连接的本地FC端口的node_name和port_name

    9. 连接

    在host主机端执行命令

    nvme connect -t fc  -a nn-0x1234567890ABCDEF-pn-0xABCDEF0123456789  -w nn-0x2345678901ABCDEF-pn-0x1234567890FEDCBA  -n nqn.2014-08.org.nvmexpress.mytest

    参数:

    -n指定target端将要连接的NVM subsystem的NQN。

    连接成功后,请用nvme list命令确认下是否已经看到连接的nvme盘。

    其他操作,与NVMe over TCP的操作相同。

    例如:

    nvme id-ctrl /dev/nvme0n1

    nvme id-ns /dev/nvme0n1

    10. 其他

    target端设备重启一次,或许主机再次连接时遇到问题,提示找不到/dev/nvme-fabrics设备。

    解决:

      a)使用 ls -l /dev/nvme-fabrics查看,确认是存在此设备的(如果不存在则用lsmod |grep nvme_fabrics确认是不是内核模块异常了);

      b)用dmesg查看内核日志,如果出现“nvme_fc_create_ctrl   combination not found”,可能是nvme_fc_create_ctrl函数return ERR_PTR(-ENOENT);这个错误码导致的误报成了找不到文件或目录。

      c)如果是上一步的原因,则可以echo 1 >/sys/class/fc_host/hostx/issue_lip 或者重启一次主机来解决此问题。

    ######

    服务器器上查看FC连接情况(wwn关系对),执行如下脚本:

    #!/bin/bash

    HOST_DIR="/sys/class/fc_host/"

    RPORT_DIR="/sys/class/fc_remote_ports/"

    host_list=`ls -A $HOST_DIR`

    rport_list=`ls -A $RPORT_DIR`

    #echo title

    echo -e "host wwwnn:wwwpn                           remote_port remote_wwnn:remote_wwpn"

    echo "--------------------------------------------------------------------"

    #list all link pair about wwnn:wwpn

    for rport in ${rport_list[@]}

    do

      rp=${rport%%:*}    #rport-10:0-1 ==> rport-10

      h_id=${rp##rport-}    #rport-10 ==> 10

      hostx="host${h_id}"

      nn=`cat ${HOST_DIR}/${hostx}/node_name`

      pn=`cat ${HOST_DIR}/${hostx}/port_name`

      r_nn=`cat ${RPORT_DIR}/${rport}/node_name`

      r_pn=`cat ${RPORT_DIR}/${rport}/port_name`

      echo -e "${hostx} ${nn}:${pn} {rport} ${r_nn}:${r_pn}"

    done

  • 相关阅读:
    Ruby on Rails中的Rake教程(Rake如何把我灌醉!)
    十一、Spring Boot 集成Shiro和CAS
    Spring Boot 快速入门
    一位创业者的血泪史----献给85前创业者的反思
    罗振宇送给新员工的四句话
    Axure 入门
    XMind常用快捷方式汇总
    CAS 单点登陆
    mysql互换表中两列数据
    mysql默认安装目录说明
  • 原文地址:https://www.cnblogs.com/JamesLi/p/11598585.html
Copyright © 2011-2022 走看看