使用Linux模拟FC存储阵列(targetcli)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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
本文出自 “我的我” 博客,请务必保留此出处http://237085.blog.51cto.com/227085/1739225
以上是关于使用Linux模拟FC存储阵列(targetcli)的主要内容,如果未能解决你的问题,请参考以下文章
radhat7下使用targetcli为多个启动器配置iSCSI访问控制