[Fibre Channle 实战之二] FC Target的创建和使用

[Fibre Channle 实战之二] FC Target的创建和使用

大家好,又见面了,我是全栈君。

基于最近Fibre channel的相关工作,整理了下关于创建和使用target、实现fail-over过程中碰到的问题和解决方法。


0.准备好合适的后端targetcli工具

0.1安装后端工具

主要有两个库要装,rtslibtargetcli,可以参考下面的两种方法进行安装:

python-rtslib.noarch : API for Linux kernel LIO SCSI target

方法一:通过yum安装

yum install python-rtslib.noarch targetcli

yum install python-netifaces-0.10.4-3.el7.x86_64 python-prettytable.noarch

yum install python-configshell.noarch


方法二:用gitgithub上下载支持FBtargetclirtslib版本


git clone  https://github.com/Datera/targetcli

git clone https://github.com/Datera/rtslib


然后分别进入目录,运行:

./setup.py build

/setup.py install

这个过程中,可能遇到依赖的问题,可以尝试通过安装下面的依赖包解决:

yum install python-netifaces-0.10.4-3.el7.x86_64 python-prettytable.noarch

yum install python-configshell.noarch

0.2检查配置文件

需要确保当前targetcli至少支持iscsi,要求/var/target/fabric至少有iscsi.specqla2xxx.spec

[root@localhost fabric]# pwd

/var/target/fabric

You have new mail in /var/spool/mail/root

[root@localhost fabric]# ls

ib_srpt.spec iscsi.spec  loopback.spec  qla2xxx.spec  tcm_fc.spec usb_gadget.spec  vhost.spec

此外,为了让后端存储设备通过Fibre channel建立target的时候能够自动找到WWN,需要确保qla2xxx.spec里面文件里能自动过滤得到HBAWWN,这是通过修改:

wwn_from_files_filter = “sed -e s/0x// -e ‘s/../&:/g’ -e s/:$//” 实现的。

[root@localhost fabric]# cat qla2xxx.spec

# The qla2xxx fabric module uses the default feature set.

features = acls

# Non-standard module naming scheme

kernel_module = tcm_qla2xxx

# The module uses hardware addresses from there

wwn_from_files = /sys/class/fc_host/host*/port_name

# Transform ‘0x1234567812345678′ WWN notation to ’12:34:56:78:12:34:56:78’

wwn_from_files_filter = “sed -e s/0x// -e ‘s/../&:/g’ -e s/:$//”

# The configfs group is default

# configfs_group = qla2xxx

1.实现通过Fibre Channel导出后端存储设备的脚本

可以参考笔者的一个简单实现:

[root@localhost myfc]# cat create_fc_volume.sh

#!/bin/bash

fc_target_name=”naa.2100000e1e1b0190″

## initiator wwn can be get by following command””

#cat /sys/class/fc_host/host*/port_name | sed -e s/0x// -e ‘s/../&:/g’ -e s/:$//

acl_host0=”21:00:00:0e:1e:c2:3e:a0″

acl_host1=”21:00:00:0e:1e:c2:3e:a1″

# step 1: create back-end storage

targetcli /backstores/block create my_lun0 /dev/md1287

targetcli /backstores/block create my_lun1 /dev/md0

# step 2: create target

targetcli /qla2xxx create 21:00:00:0e:1e:1b:01:90

#targetcli /qla2xxx create 21:00:00:0e:1e:1b:01:91

# step 3: export the back-end storage

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun0

targetcli /qla2xxx/${fc_target_name}/luns create /backstores/block/my_lun1

# step 3: set ACL controlling list

targetcli /qla2xxx/${fc_target_name}/acls create ${acl_host0}

targetcli /qla2xxx/${fc_target_name}/acls create ${acl_host1}

# step 4: save configration

targetcli saveconfig myfc_lun.lio

运行上面的脚本,成功之后用targetcli可以看到后端存储target已经建立起来了:

wKioL1kgBxWi7GNWAAFaoYRk05c988.jpg


2.发现并连接FC Target

在上面ACL列出的WWN所对应的HBA卡的host的操作系统上, 运行下面的命令:

echo 1 > /sys/class/fc_host/hostX/issue_lip 就能自动发现并连接上后端存储设备,此时会发现host /dev下面多了

一块设备,可以通过host上的vdbench对它进行简单性能测试:

wKioL1kgB3XijKE9AACtdl29Uek836.jpg

可以看到,上面的带宽确实很快。

本文转自存储之厨51CTO博客,原文链接: http://blog.51cto.com/xiamachao/1927791,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107942.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Unity Odin从入门到精通(三):静态检查器详解

    Unity Odin从入门到精通(三):静态检查器详解前言:开发者可以使用静态检查器来选择项目工程、Unity引擎、.Net框架中所有的类型,并查看其所有的静态成员。打开静态检查器:在Unity的菜单栏中选择【Tools->OdinInspector->StaticInspector】菜单项来打开静态检查器。如下图所示:查看静态检查器的源码:首先在Rider当中切换到Assemblies视图。接着在该视图的列表当中选择Sirenix.OdinInspector.Editor程序集。然后从该程序集的列表当中选择Sirenix.Odi

  • CPLD和FPGA的区别(2)

    CPLD和FPGA的区别(2)可编程逻辑器件主要包括FPGA和CPLD,FPGA是FieldProgrammableGateArray缩写,CPLD是ComplexPromrammableLogicDevice的缩写。   从可编程逻辑器件的发展历史上来讲,CPLD一般是指采用乘积相结构的基

  • java rsa加解密_Java开发工具

    java rsa加解密_Java开发工具RSA的应用RSA是一种非对称加密算法。现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密。Base64编码apache.commons-codex包提供了许多编码格式转换,例如Base64。以下为Base64编码表使用apache.commons-codex进行Base64对字符串进行编码与解码的程序如下:packagecom.qian.encod…

  • Java字符串分割方法split()的功能以及使用方法的详细介绍!

    Java字符串分割方法split()的功能以及使用方法的详细介绍!在Java的学习中经常会遇到按照自己的理想情况分割字符串,并根据分割后的结果进行后续操作的问题。对于这些问题就可以使用Java提供的split()方法进而实现,下面详细的介绍它的功能以及使用方法。一、功能    Java提供的String.split()方法可以根据自己的理想情况(自己想要的结果),将目标字符串进行分割从而对分割后的结果进行进一步的操作。用一个例子来说明它的功能:

  • Java 实现一个单例模式_Java实现单例模式的两种方式

    Java 实现一个单例模式_Java实现单例模式的两种方式单例模式在实际开发中有很多的用途,比如我们在项目中常用的工具类,数据库等资源的连接类。这样做的好处是避免创建多个对象,占用内存资源,自始自终在内存中只有一个对象为我们服务。单例对象一般有两种实现方式。懒汉式和饿汉式。饿汉式实现如下:packagecom.day05;/***饿汉式**@authorAdministrator**/publicclassSingle{//定义一个个私有静态本类对…

  • selenium如何下载_python的selenium

    selenium如何下载_python的selenium在使用新的FirefoxProfile时,使用set_preference方法来配置配置文件,这样就可以单击Save和{},并且在下载过程中不会被中断。您可以按如下方式设置配置:profile=webdriver.FirefoxProfile()profile.set_preference(“browser.download.dir”,os.getcwd());profile.set_pref…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号