使用Linux模拟FC存储阵列(targetcli)

1.环境硬件信息

作为target端的机器  (PC机)

HBA卡 : QLogic

WWN1 : 21:00:00:1b:32:81:6e:f1

系统 : Ubuntu 15.04 Server

作为initiator端的机器 (PC server)

系统: XenServer

HBA : QLogic

WWN1 : 21:00:00:1b:32:98:7d:1b

FC交换机:Brocade 200E

2.交换机配置

1)查看交换机端口对应的wwwn号
swd77:admin> switchshow
switchName:     swd77
switchType:     34.0
switchState:    Online  
switchMode:     Native
switchRole:     Principal
switchDomain:   1
switchId:       fffc01
switchWwn:      10:00:00:05:1e:64:9d:86
zoning:         ON (Ezyxcfg)
switchBeacon:   OFF

Area Port Media Speed State     Proto
=====================================
  0   0   id    N2   Online           F-Port  21:00:00:1b:32:98:7d:1b  //接192.168.1.88主机(XenServer)的HBA卡
  1   1   id    N4   Online           F-Port  21:00:00:1b:32:8a:8a:c4  //接192.168.1.150
  2   2   id    N4   No_Light        
  3   3   id    N4   No_Light        
  4   4   id    N4   Online           F-Port  21:00:00:1b:32:81:6e:f1  //接192.168.1.17 DELL PC机
  5   5   id    N4   No_Light

2) 查看zone配置

所以端口已经在一个zone里了,无需进行更改。

swd77:admin> zoneshow
Defined configuration:
 cfg:   Ezyxcfg Ezyxarray
 zone:  Ezyxarray
                1,0; 1,1; 1,2; 1,3; 1,4; 1,5; 1,6; 1,7

Effective configuration:
 cfg:   Ezyxcfg
 zone:  Ezyxarray
                1,0
                1,1
                1,2
                1,3
                1,4
                1,5
                1,6
                1,7

swd77:admin>
---------------------------------------------------------------------------

3.配置targetcli服务,模拟存储阵列

1)安装操作系统ubuntu15.04 Desktop版本

2)创建分区/dev/sda4,大小为816G,并挂载在/data目录下

mkdir /data
    mount -t ext4 /dev/sda4 /data

[email protected]:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        94G  6.6G   83G   8% /
/dev/sda4       816G   30G  744G   4% /data
/dev/sda3       454M   41M  386M  10% /boot

3)配置targetcli

(1)安装targetcli
apt-get install targetcli

(2)挂载configFS   
targetcli 的配置都需要用到configFS, 因此configFS模块必须被加载到内核中。把configFS挂载到/sys/kernel/config:

mount -t configfs configfs /sys/kernel/config

(3)设置HBA卡为target mode
vi /etc/modprobe.d/qla2xxx.conf
options qla2xxx qlini_mode="disabled"

(4)更新initramfs后
sudo update-initramfs -u -k all

(5)重启机器
sudo reboot

(6)检查qla2xxx模块已经安装在targetcli里面了

下面有qla2xxx输出即为正常。
targetcli
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- fileio ............................................... [0 Storage Object]
  | o- iblock ............................................... [0 Storage Object]
  | o- pscsi ................................................ [0 Storage Object]
  | o- rd_dr ................................................ [0 Storage Object]
  | o- rd_mcp ............................................... [0 Storage Object]
  o- ib_srpt ........................................................ [0 Target]
  o- iscsi .......................................................... [0 Target]
  o- loopback ....................................................... [0 Target]
  o- qla2xxx ........................................................ [0 Target]
/>

下面可以划分存储空间并LUN mapping
(7)通过一个文件创建一个FILEIO backstore。

$su -     //获取root权限

#targetcli

/backstores
/backstores> fileio/ create name=test_file file_or_dev=/data/fileio_1 size=810G

//文件的大小就是生成LUN的大小

在targetcli里创建WWN‘s
/> qla2xxx/ create 21:00:00:1b:32:81:6e:f1    //本机的wwwn,相当于存储阵列的前段端口的wwwn

这里需要把刚才创建好的WWN‘s和之前就创建好的backstore进行一个连接。使用luns下的命令
/qla2xxx/21:00:00:1b:32:81:6e:f1/luns/ create  /backstores/fileio/test_file

我们需要创建一个ACL‘s(Access Control List)列表, 让需要用到这个这个存储的机器可以有权限使用到这个luns。
 这里我们需要的WWN是需要访问该luns的机器的WWN,不是本机的
/qla2xxx/21:00:00:1b:32:81:6e:f1/acls create 21:00:00:1b:32:98:7d:1b   //将Lun映射给192.168.1.88对应的wwwn

/qla2xxx/21:00:00:1b:32:81:6e:f1/acls create 21:00:00:1b:32:8a:8a:c4    //将Lun映射给192.168.1.150对应的wwwn

保存配置

saveconfig
此时会报错类似“ConfigError: Unknown value type ‘qla2xxx_wwn‘ when validating 21:00:00:24:ff:0e:7c:f5”

打开另一窗口修改配置
vi /usr/share/pyshared/rtslib/config.py

elif val_type == ‘naa‘:
             if is_valid_wwn(‘naa‘, value):
                 valid_value = value
后面添加
 elif val_type == ‘qla2xxx_wwn‘:
            if is_valid_wwn(‘qla2xxx_wwn‘, value):
                valid_value = value

vi /usr/share/pyshared/rtslib/utils.py

and re.match(
                 "[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$", wwn):
         return True

添加
    elif wwn_type == ‘qla2xxx_wwn‘ \
            and re.match(
                "[0-9A-Fa-f]{2}(:[0-9A-Fa-f]{2}){7}$", wwn):
        return True

再次saveconfig后成功添加配置,所以配置如下

4.initator端进行扫描

完成后在Xenserver进行扫描。

《参考文档》
targetcli搭建Fibre Channel(FC) target
http://blog.csdn.net/kyle__shaw/article/details/45227607

Linux FC SAN存储服务器搭建 SCSI Target (HBA卡)
转自【IT精英团】:http://www.itnpc.com/news/web/144599886824970.html

鲜伟

2016-01-27

时间: 2024-08-27 20:20:22

使用Linux模拟FC存储阵列(targetcli)的相关文章

Linux 模拟 鼠标 键盘 事件

/************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: * 以前看到有些软件能够控制鼠标移动,键盘操作等功能,总想知道这些到底 * 是怎么做到的,好像是2年前也尝试去做这件事,但那时候对知识的匮乏直接导致 * 无法进行,早上突然想到这件事,于是又搜索了一下,鉴于目前经常接触Linux * 驱动,对这些东西的理解也就很容易. * * 2016-2-27 深

linux 模拟生成 CAN 设备

/************************************************************************************** * linux 模拟生成 CAN 设备 * 说明: * 最近在看CANopenSocket的过程中看到能够生成模拟的CAN设备,于是查了点资料,结果发现 * 真的可以,这样做测试就OK. * * 2016-8-12 深圳 南山平山村 曾剑锋 *****************************************

linux模拟http请求命令

Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http的get或post请求. 一.get请求: 1.使用curl命令: curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i “http://www.baidu.com” 显示全部信息 curl -l “http://ww

Linux模拟控制网络时延

之前以为可以使用Linux自带的工具模拟控制网络时延,所以上网找了一些资料.后来发现,找到的资料目前只支持在一个网卡上模拟发送报文的时延,而不能 设置有差别的网络时延,或者说当要模拟的向A发送的时延与要模拟的向B发送的时延不一致时,Linux的tc功能就无能为力了.记录一下在网上查到的有用 的资料: TC带宽管理规则排版最好的链接:http://www.tuicool.com/articles/7zYzey TC 命令的man手册:http://wenku.baidu.com /link?url

Android(Linux)模拟按键、触摸屏等事件

前提: 在我们应用程序或者在写Android自动化测试时候常常会需要模拟实体按键,来给我们做测试用.这也是我要整理的目的.主要的涉及的是Linux Input Event事件.以下的例子基于Android 5.1(Linux-3.10). 一.利用getevent.sendevent模拟按键 (1)命令:getevent -t 结果: ... add device 6: /dev/input/event9 bus: 0000 vendor 0000 product 0000 version 00

Cygwin--unix/linux模拟环境[转]

Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多有用的工具,著名的还有eCos,不过现已被Redhat收购).它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用.随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣. 1简介 Cygwin是许多软件的集合,最

linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如

linux模拟磁盘和用户管理总结

画图一般用EDRAW VISIO ,freemind,画横向长图用excell台湾企业用的多 文件删除生产场景案例解决实战: Web服务器磁盘满故障深入解析 http://oldboy.blog.51cto.com/2561410/612351 模拟创建80k的小磁盘 dd if=/dev/zero of=/dev/sdc bs=8K count=10 mkfs -t etx3 /dev/sdc Lsof |grep del查看自己手动删除的文件  磁盘满了删除后空间依然变小,说明有进程还在调用

linux模拟路由器实验

实验目标: 将3台主机设置成路由器 实现两台终端能够相互通信 网络结构如下: 准备工作: 1.批量复制虚拟机文件,创建多个系统,提前把mac地址修改 2.关闭防火墙 service iptables   stop  //centos6版本 systemctl  stop firewalld.service   //centos7版本 3.关闭selinux setenforce 0  //关闭 getenforce  //查看 4.在三台"路由器"上启用路由转发功能 echo 1 &g