硬件信息
- 获取WWN的方法可以执行以下命令来获取
cat /sys/class/fc_host/host*/port_name | sed -e s/0x// -e ‘s/../&:/g‘ -e s/:$//
- 作为target端的机器
- 系统 : Ubuntu 14.04 Server
- HBA : QLogic ISP2432
- WWN1 : 21:01:00:1b:32:31:43:XX
- WWN2 : 21:00:00:1b:32:11:43:XX
- 作为initiator端的机器
- 系统: Ubuntu 14.04 Server
- HBA : QLogic ISP2432
- WWN1 : 21:00:00:1b:32:11:64:XX
- WWN2 : 21:01:00:1b:32:31:64:XX
- 交换机
- Brocade 200E
准备工作
安装lio-utils 和targetcli
sudo apt-get install lio-utils targetcli
挂载configFS
- 假如configFS没有被挂载, /etc/init.d/target会自动进行挂载
LIO 和targetcli 的配置都需要用到configFS, 因此configFS模块必须被加载到内核中。把configFS挂载到/sys/kernel/config:
mount -t configfs configfs /sys/kernel/config
也可以把它加入到fstab中,让系统启动的时候自动加载。
configfs /sys/kernel/config configfs default 1 1
修改驱动配置
修改qla2xxx.conf,把它修改为target模式
options qla2xxx qlini_mode="disabled"
更新initramfs后重启机器
sudo update-initramfs -u -k all sudo reboot
target端配置(ACL模式)
使用targetcli进行配置
启动targetcli
sudo targetcli
当targetcli初始化完成后,RTSlib会根据相关的spce文件(/var/target/fcbic/*.spec), 把安装好的模块加载进去。
创建backstore
这里支持的backstore有五种,这里主要介绍的是IBLOCK和FILEIO
- IBLOCK
这里主要使用的块设备。通常来说,用IBLOCK作为backstore会提供比较好的性能。
- 例如使用/dev/sdb这个设备:
/> cd backstores/ /backstores> iblock/ create name=block_backend dev=/dev/sdb Generating a wwn serial. Created iblock storage object block_backend using /dev/sdb. /backstores>
- 或者使用LVM逻辑卷
/backstores> iblock/ create name=block_backend_lvm dev=/dev/vg0/lv1 Generating a wwn serial. Created iblock storage object block_backend_lvm using /dev/vg0/lv1. /backstores>
- 例如使用/dev/sdb这个设备:
- FILEIO
通过一个文件创建一个FILEIO backstore。
注意: 使用的时候,尽量不要使用带buffer的FILEIO。 通过参数buffered=true来创建一个带buffer的FILEIO backuend, 虽然它可以提供更好的性能,但是它也会导致数据不完整的严重问题:如果因为某些原因系统崩溃了,那么没有被写进硬盘的数据将会丢失,而导致数据不完整。
- 创建文件/usr/src/fileio, 文件大小是2G
/> cd backstores/ /backstores> fileio/ create name=file_backend file_or_dev=/home/kyle/backstore/fileio_1 size=2G Generating a wwn serial. Not using buffered mode. Created fileio file_backend. /backstores>
- 创建文件/usr/src/fileio, 文件大小是2G
在targetcli里创建WWN‘s
我们需要在存储服务器上面调用targetcli来创建WWN‘s
/qla2xxx create 21:01:00:1b:32:31:43:XX
使用WWN‘s来实例化Targets
这里需要把刚才创建好的WWN‘s和之前就创建好的backstore进行一个连接。使用luns下的命令
/qla2xxx/21:01:00:1b:32:31:43:XX/luns/ create /backstores/fileio/file_backend
创建ACL‘s
我们需要创建一个ACL‘s(Access Control List)列表, 让需要用到这个这个存储的机器可以有权限使用到这个luns。
这里我们需要的WWN是需要访问该luns的机器的WWN,不是本机的
/qla2xxx/21:01:00:1b:32:31:43:XX/acls create 21:00:00:1b:32:11:64:XX /qla2xxx/21:01:00:1b:32:31:43:XX/acls create 21:01:00:1b:32:31:64:XX
检查并保存配置
在targetcli的顶层目录下,执行ls就可以看到全部的配置了。
/> ls o- / ........................................................................................... [...] o- backstores ................................................................................ [...] | o- fileio .................................................................... [1 Storage Objects] | | o- file_backend_ .................................... [/home/kyle/backstore/fileio_1 activated] | 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 Targets] o- iscsi ............................................................................... [0 Targets] o- loopback ............................................................................ [0 Targets] o- qla2xxx ............................................................................. [1 Targets] | o- 21:00:00:1b:32:11:43:38 ............................................................. [enabled] | | o- acls ............................................................................... [2 ACLs] | | | o- 21:00:00:1b:32:11:64:33 .................................................... [1 Mapped LUN] | | | | o- mapped_lun0 ................................................................. [lun0 (rw)] | | | o- 21:01:00:1b:32:31:64:33 .................................................... [1 Mapped LUN] | | | o- mapped_lun0 ................................................................. [lun0 (rw)] | | o- luns ................................................................................ [1 LUN] | | o- lun0 ............................ [fileio/file_backend (/home/kyle/backstore/fileio_1)] o- tcm_fc .............................................................................. [0 Targets] />
检查完成后,需要执行saveconfig命令,把配置保存下来,否则这些配置会丢失。
target端配置(DEMO模式)
使用targetcli进行配置
启动targetcli
sudo targetcli
当targetcli初始化完成后,RTSlib会根据相关的spce文件(/var/target/fcbic/*.spec), 把安装好的模块加载进去。
创建backstore
通过一个文件创建一个FILEIO backstore。
/> cd backstores/ /backstores> fileio/ create name=file_backend file_or_dev=/home/scutech/backstore/fileio_1 size=2G Generating a wwn serial. Not using buffered mode. Created fileio file_backend. /backstores>
在targetcli里创建WWN‘s
我们需要在存储服务器上面调用targetcli来创建WWN‘s
/qla2xxx create 21:01:00:1b:32:31:43:XX
设置WWN‘s的属性
/qla2xxx/21:01:00:1b:32:31:43:XX set attribute demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1 demo_mode_login_only=0
使用WWN‘s来实例化Targets
这里需要把刚才创建好的WWN‘s和之前就创建好的backstore进行一个连接。使用luns下的命令
/qla2xxx/21:01:00:1b:32:31:43:XX/luns/ create /backstores/fileio/file_backend
检查并保存配置
在targetcli的顶层目录执行ls,即可得到配置
o- / ................................................................................. [...] o- backstores ...................................................................... [...] | o- fileio ........................................................... [1 Storage Object] | | o- file_test ...................................... [/home/kyle/backstore/fileio_test activated] | 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 Targets] o- iscsi ..................................................................... [0 Targets] o- loopback .................................................................. [0 Targets] o- qla2xxx .................................................................... [1 Target] | o- 21:00:00:1b:32:11:43:38 ................................................... [enabled] | o- acls ..................................................................... [0 ACLs] | o- luns ...................................................................... [1 LUN] | o- lun0 ...................... [fileio/file_test (/home/kyle/backstore/fileio_test)] o- tcm_fc .................................................................... [0 Targets]
检查无误后执行saveconfig保存配置并使其生效。
====================================================华丽的分割线=====================================================
initiator端配置
Ubuntu 下的配置
扫描target
使用以下命令,寻找fc target
echo 1 > /sys/class/fc_host/host<N>/issue_lip
如果执行命名后,发现在/var/log/syslog里面有类似 qla2xxx [0000:01:00.0]-2064:4: SNS scan failed -- assuming zero-entry result. 的错误,
那么就需要考虑两个问题:
- 光纤有没有接错
- 交换机的zoning有没有设置好。 (在该wiki最后会有解决方法)
扫描完成后,可以用fdisk看到多了一个新盘/dev/sdb (根据实际情况会有不同)
使用存储
使用fdisk和mkfs命令就可以把该硬盘进行分区和格式化(如果target那边用的是IBLOCK,还不确定要不要分区跟格式化)。
最后挂载上即可使用。