博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用tgt搭建一个基于rbd的SCSI target
阅读量:4026 次
发布时间:2019-05-24

本文共 1396 字,大约阅读时间需要 4 分钟。

Linux target framework(tgt/stgt)是为创建、维护SCSI target 驱动(包括iSCSI、FC、SRP等)提供支持。换句话说,它能将块设备、文件转换为SCSI LU并提供iSCSI、iSER等SAN中常用的传输方式来访问这些LU。它的关键目标是简洁地集成到scsi-mid层,并且大部分实现都在用户层。以 Linux 2.6.38 为分界线,此前Linux 中默认的SCSI target是STGT(即tgt),之后的标准是 Linux-IO Target。

ceph作为一个统一存储方案,它通过rbd模块来对外提供块设备,目前对于rbd模块来说,它既有用户态的librbd也有内核态的krbd。而tgt作为用户层的SCSI target,支持通过librbd来访问ceph的块存储是一件水到渠成的事。最终由Dan Mick在tgt中加入了对rbd的支持,并在ceph社区发表了一篇文章,有兴趣的同学可以看看。

本篇文章介绍了如何使用stgt搭建一个基于rbd的SCSI target。

1.为了能在tgt中使用librbd访问ceph的块设备,需要tgt有相应的模块,你可以通过以下命令来确认。

$ tgtadm --lld iscsi --mode system --op show|grep rbdrbd (bsoflags sync:direct)
如果有类似于上面的输出结果,说明你的tgt加载了rbd模块。该模块实际上是一个名为bs_rbd.so的动态链接库。如果命令没有输出,则说明你的tgt还不支持rbd,你需要安装最新的tgt,或者直接下载编译最新的源码。这里我给出从源码编译安装的步骤:
1.1 下载源代码$ git clone https://github.com/fujita/tgt.git
1.2 设置CEPH_RBD变量,使得tgt能够编译bs_rbd模块
$ export CEPH_RBD=1
1.3 在tgt源码的跟目录执行make
$ make
1.4 执行make install安装binaries
$ make install
1.5 再次检查tgt是否支持rbd
 2. tgt能支持rbd之后,使用rbd命令创建一个镜像,搭建ceph环境的方法可以参见我的另一片博文——,如有问题可以留言,共同探讨。 
$ rbd create iscsi-image --size 4096

3. 创建一个scsi target

$ tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2013-15.com.example:cephtgt.target0
4. 基于第二步创建的rbd image创建一个lun
$ tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store iscsi-image --bstype rbd
5. 设置lun的访问控制
$ tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
6. 通过iscsi initiator来确认是否lun是否已经创建好。

转载地址:http://vsxbi.baihongyu.com/

你可能感兴趣的文章
mac:移动python包路径
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql alter table 修改列属性的字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
单纯的把Y通道提取出来能正确显示出灰度图来为什么我的Qt就显示不出来呢转换有问题呀?
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>
/dev/input/event0 键盘输入
查看>>