硬件信息
- 獲取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 targetecho 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,還不確定要不要分區跟格式化)。
最後掛載上即可使用。