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

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


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

0.1安装后端工具

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

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

方法二:用git从github上下载支持FB的targetcli和rtslib版本

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.spec和qla2xxx.spec。

[[email protected]
fabric]# pwd

/var/target/fabric

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

[[email protected]
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里面文件里能自动过滤得到HBA的WWN,这是通过修改:

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

[[email protected]
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
导出后端存储设备的脚本

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

[[email protected]
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已经建立起来了:

2.发现并连接FC
Target

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

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

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

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

时间: 2024-10-11 13:13:33

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

React-Native入门指南——第4篇react-native布局实战(二)

React-Native入门指南 github:https://github.com/vczero/react-native-lession React-Native:用JavaScript开发你的原生应用,释放Native的UI体验,体验 Hybird开发效率. 最近一个星期写的文章如下,链接是github page的,其实也可以在系列博客找到相应文章: 第1篇hello react-native 第2篇认识代码结构 第3篇css和布局 第4篇学会react-native布局(一) 第4篇re

[hihocoder 1249 Xiongnu's Land]线性扫描

2015区域赛北京赛区的三水,当时在赛场上没做出的原因是复杂度分析不正确导致把方法想复杂了.近来复习复杂度分析,觉得不能只是笼统地看渐进复杂度(big-O),更应根据算法的伪码计算真正的以基本操作数为变量的时间复杂度T(n). 题意:在二维坐标系第一象限中,将一块顶点在原点边长为R的正方形土地用直线x=n一分为二,左侧分给Wei,右侧分给Huo. 土地中包含N个绿洲,每个绿洲是一个矩形,其位置和大小用四元组(L,T,W,H)表示,其中(L,T)为其左上方顶点的坐标,W,H为其宽度和高度.绿洲互不

python机器学习实战(二)

python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇notebook是关于机器学习监督学习中的决策树算法,内容包括决策树算法的构造过程,使用matplotlib库绘制树形图以及使用决策树预测隐形眼睛类型. 操作系统:ubuntu14.04(win也ok)   运行环境:anaconda-python2.7-jupyter notebook    参考书籍:机器学习

小谷实战Jquery(二)--可以编辑的表格

今天实现的是一个表格的例子,通过获取表格的奇数行,设置背景色属性,使得奇偶行背景色不同.这个表格可以在单击时编辑,回车即更改为新输入的内容;ESC还原最初的文本.表格的实现思路很清晰,只是在实现的过程中会出现一些小bug.通过jQuery函数就可以一一解决. 下面看下HTML代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD

Wicket实战(二)hello world

上次的博文Wicket实战(一)概述中给大家简单介绍了一下关于Wicket的概念性内容,今天我们完成第一个Wicket实例-Hello World! 1.Hello World原版 在Wicket的官方网站上,为我们提供了一个Hello World的实例,链接地址如下: http://wicket.apache.org/learn/examples/helloworld.html 在官方的Hello World实例中,大致做了这么几个工作: 1).创建HelloWorldApplication.

[Java聊天室server]实战之二 监听类

前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更想和广大程序猿分享的是一种心境:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态.比方近期在看网易公开课MIT<算法导论>,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序猿最好还是从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字...

[每日app二]月入60万多嘛?单词锁屏的潜力!

抢了用户的时间,就是抢了用户的金钱! 单词锁屏,一个开发难度不太大,但仅仅360手机助手下载就是每周4万!拉风- 对于搞app的同学来说,搞个锁屏,还不是玩似的,但是要定位好,玩得好,那就有难度了.最重要的是这个满大街广告横飞的世界,人家做到无 广告,无支付,被用户好评9.1那也是正常能理解的事情了. 还有一件事情就是,千万要记住,现在不收费,不等于以后不收,或者说不等于以后没有盈利模式. 废话不想多说,直接安装“单词锁屏”! 看到没?人家在Splash界面写着“让没有意义的解锁变为有意义的事情

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在Android中涉及到显示的是View类,及继承自它的SurfaceView类和SurfaceView的其他子类等. 这里先只说View和SurfaceView.SurfaceView的直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及CAmera摄像头一般均使用Su

Git实战(二)原理

上次的博文Git实战(一)版本号控制概述中我们简介了一下版本号控制系统的概念,重点对版本号控制的三种类型进行了分析和对照,从本篇博文開始我们进入Git的世界,首先介绍一下Git实现版本号控制的原理. Git与SVN等其它版本号控制系统的最重要的一点差别在于,Git仅仅关心文件数据的总体是否变化,而不是关心文件内容的差异. SVN等原理分析        怎样理解呢?我们能够通过两种图进行比較,首先看一下SVN等其它版本号控制系统的原理图,例如以下所看到的: 在上述图片中,横向表示各个版本号,纵向