使用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

vinchin@vinchin-OptiPlex-9020:~$ 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後成功添加配置,所以配置如下

 

 wKioL1aobjzx3ToAAABlqWz2fL8678.png

 

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章