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 那样来操作分配集群存储。
更多推荐
已为社区贡献3条内容
所有评论(0)