iscsi服務器端:
1.配置環境
從github下載開源框架tcmu-runner:
https://github.com/open-iscsi/tcmu-runner
http://docs.ceph.com/docs/master/rbd/iscsi-target-cli-manual-install/
(注:只支持較新版本的linux內核)內核版本不夠可以升級內核:
https://blog.csdn.net/liny000/article/details/80105152
2.測試file_example程序:
//需要一直運行tcmu-runner,再新建一個Terminal執行targetcli
# ./tcmu-runner
# targetcli
/> cd backstores
/> cd user:file
/> create testfile 1G file01
/> cd iscsi
//創建LIO iscsi-target
/> create
//cd 剛剛創建好的target iqn.xxxxxxxxx
/>cd iqn.xxxx
/>cd tpg1
//開放target端口
/> cd portals
//如果 創建target時默認創建了一個0.0.0.0:3260
/> delete 0.0.0.0 3026
//target ip xx.xx.xx.xx
/>create xx.xx.xx.xx 3260
/> cd ../luns
/> create /backstores/user:file/testfile
//創建訪問控制 在服務器端iqn.xxx後面加了個client後綴(名字可以自己隨意創建)
/> cd ../acls
/> create iqn.xxxxxx:client
iscsi客戶端:
//查找iscsi安裝源
# yum list |grep iscsi
# yum install iscsi-initiator-utils
//配置客戶端iscsi名稱 填入創建訪問控制名稱iqn.xxx:client
# vim /etc/iscsi/initiatorname.iscsi
//查找target
# iscsiadm -m discovery -t sendtargets -p 192.168.0.151
// 登錄target iqn.xxx
# iscsiadm --mode node --targetname iqn.xxxxx --portal 192.168.0.151 --login
//登錄不成功時,進行service重啓;成功時忽略
# sudo service iscsi stop
# sudo service iscsid stop
# sudo service iscsid start
# sudo service iscsi start
//安裝lsscsi查看scsi設備信息
# yum install lsscsi
# lsscsi
//可以看到登錄成功,/dev/sdb即分配的塊存儲
//格式化塊設備
# sudo mkfs.ext4 /dev/sdb
//掛載塊設備
#sudo mount /dev/sdb /xxx/xxx
實現iscsi接口 將集羣存儲分配塊存儲供iscsi客戶端使用
參照tcmu-runner/file_example.c 將相應接口實現,在對應接口函數調用集羣操作函數;
將接口實現文件最後編譯成一個動態庫(libxxx.so)
(需要鏈接開源框架編譯生成libtcmu以及包含頭文件 “libtcmu.h” “tcmu-runner.h”)
參照file_example.c 在tcmu-runner目錄下 增加file_xxx.c
修改tcmu-runner目錄下 CMakeLists.txt 增加樣例如下
重新
cmake
make
…….
將編譯輸出自己新加的handler(比如handler_redfs.so)拷貝到/usr/local/lib64/tcmu-runner
./tcmu-runner
targetcli
可以看到backstores增加了一個user:xxx
此時我們可以像操作user:file 那樣來操作分配集羣存儲。