TCMU實現ISCSI接口

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 那樣來操作分配集羣存儲。

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