美文网首页
iscsi(tgt)+librbd使用

iscsi(tgt)+librbd使用

作者: ypdai | 来源:发表于2019-05-29 13:45 被阅读0次

title: iscsi(tgt)+librbd使用

1、前言

因为要调试看下librbd的一个功能。然后准备在自己的测试环境配置下iscsi+librbd,然后方便调试,这里记录下大概过程。

这里是使用的tgt作为iscsi的target。具体什么是iscsi和iscsi有哪几种target类型,google下就好。

1、ceph集群准备

准备一个标准三节点ceph集群:

[root@ceph01 ~]# ceph -v
ceph version 12.2.12 (1436006594665279fe734b4c15d7e08c13ebd777) luminous (stable)
[root@ceph01 ~]# 
[root@ceph01 ~]# 
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.08455 root default                            
-3       0.02917     host ceph01                         
 0   hdd 0.01459         osd.0       up  1.00000 1.00000 
 1   hdd 0.01459         osd.1       up  1.00000 1.00000 
-5       0.02818     host ceph02                         
 2   hdd 0.01459         osd.2       up  1.00000 1.00000 
 4   hdd 0.01360         osd.4       up  1.00000 1.00000 
-7       0.02719     host ceph03                         
 3   hdd 0.01360         osd.3       up  1.00000 1.00000 
 5   hdd 0.01360         osd.5       up  1.00000 1.00000

2、编译tgtd

为啥要自己编译,不直接使用yum install?因为直接yum安装的tgtd服务可能不包含rbd的功能模块,也就不能使用librbd了。所以要自己编译,在编译的时候加入rbd的功能到tgtd服务里面。

2.1、获取tgtd源码包

下载地址:https://github.com/fujita/tgt/releases, 下载当前最新的版本v1.0.76,并解压:

[root@ceph01 ~]# tar -zxvf tgt-1.0.76.tar.gz

2.2、修改相关文件

为了把rbd功能编入tgtd服务里面,还要一些相关文件才行。

2.2.1、修改spec文件的如下内容

[root@ceph01 ~]# vim tgt-1.0.76/scripts/tgtd.spec

...

Version:        1.0.76  # 修改版本为你下载的包的版本

...

%install
...
%{__install} -d %{buildroot}/etc/tgt
%{__install} -d %{buildroot}/usr/lib/tgt/backing-store  # 增加存放bs_rbd.so库的目录

...
%{__install} -p -m 0600 conf/targets.conf %{buildroot}/etc/tgt
%{__install} -p -m 0600 usr/bs_rbd.so %{buildroot}/usr/lib/tgt/backing-store    # 放置usr/bs_rbd.so到/usr/lib/tgt/backing-store目录下

...

%files
...
/usr/lib/tgt/backing-store/bs_rbd.so    # 在该rpm包释放的文件列表中增加bs_rbd.so文件
...

如果不加上面有关bs_rbd.so相关的文件,那制作出来的tgt包就不会包含bs_rbd.so文件,最后安装的tgt包的后端存储就不会支持rbd。

2.2.2、修改build-pkg.sh里面相关信息

下面的几个信息,根据你下载的源码版本而定:

[root@ceph01 ~]# vim tgt-1.0.76/scripts/build-pkg.sh
...
branch="master"
version="1.0.76"
release="1"
...

2.3、编译tgtd

安装依赖包(注意下面列出的依赖包,在我们编译出tgtd的rpm包后,待安装tgtd服务的目标机器上也需要安装这些依赖包)

[root@ceph01 ~]# yum install  librbd1-devel librados2-devel -y
[root@ceph01 ~]# yum install libxslt docbook-style-xsl libibverbs-devel librdmacm-devel libaio-devel -y

开始编译,要设置CEPH_RBD变量为1,表示编译时加入rbd的功能模块

[root@ceph01 ~]# cd tgt-1.0.76
[root@ceph01 tgt-1.0.76]# make CEPH_RBD=1
make -C usr
make[1]: Entering directory `/root/tgt-1.0.76/usr'
cc -c -DUSE_SIGNALFD -DUSE_TIMERFD -DUSE_EVENTFD -D_GNU_SOURCE -I. -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -Werror -fPIC -DTGT_VERSION=\"1.0.76\" -DBSDIR=\"/usr/lib/tgt/backing-store\" iscsi/conn.c -o iscsi/conn.o
cc -c -DUSE_SIGNALFD -DUSE_TIMERFD -DUSE_EVENTFD -D_GNU_SOURCE -I. -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -Werror -fPIC -DTGT_VERSION=\"1.0.76\" -DBSDIR=\"/usr/lib/tgt/backing-store\" iscsi/param.c -o iscsi/param.o
cc -c -DUSE_SIGNALFD -DUSE_TIMERFD -DUSE_EVENTFD -D_GNU_SOURCE -I. -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -Werror -fPIC -DTGT_VERSION=\"1.0.76\" -DBSDIR=\"/usr/lib/tgt/backing-store\" iscsi/session.c -o iscsi/session.o
cc -c -DUSE_SIGNALFD -DUSE_TIMERFD -DUSE_EVENTFD -D_GNU_SOURCE -I. -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -Werror -fPIC -DTGT_VERSION=\"1.0.76\" -DBSDIR=\"/usr/lib/tgt/backing-store\" iscsi/iscsid.c -o iscsi/iscsid.o
cc -c -DUSE_SIGNALFD -DUSE_TIMERFD -DUSE_EVENTFD -D_GNU_SOURCE -I. -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -Werror -fPIC -DTGT_VERSION=\"1.0.76\" -DBSDIR=\"/usr/lib/tgt/backing-store\" iscsi/target.c -o iscsi/target.o
...

上面编译过程没有报错的话,继续制作rpm安装包,因为使用rpm包来安装,后期管理相关包时会方便很多:

[root@ceph01 tgt-1.0.76]# make rpm
Building version: 1.0.76-1
Creating rpm build dirs under /root/tgt-1.0.76/pkg
Creating tgz scsi-target-utils-1.0.76-1.tgz
Creating rpm
Wrote: /root/tgt-1.0.76/pkg/SRPMS/scsi-target-utils-1.0.76-1.src.rpm
Wrote: /root/tgt-1.0.76/pkg/RPMS/x86_64/scsi-target-utils-1.0.76-1.x86_64.rpm
Wrote: /root/tgt-1.0.76/pkg/RPMS/x86_64/scsi-target-utils-debuginfo-1.0.76-1.x86_64.rpm
Done.

3、安装配置tgtd

安装下上面编译出来的rpm包:

[root@ceph01 tgt-1.0.76]# rpm -ivh /root/tgt-1.0.76/pkg/RPMS/x86_64/scsi-target-utils-1.0.76-1.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:scsi-target-utils-1.0.76-1       ################################# [100%]

启动tgtd服务:

[root@ceph01 ~]# systemctl restart tgtd

检查是否支持rbd:

[root@ceph01 ~]# tgtadm --lld iscsi --mode system --op show | grep rbd
    rbd (bsoflags sync:direct)

如果没有rbd相关信息输出,表示不支持rbd,请检查相关编译过程是否都正确。

准备一个rbd:

[root@ceph01 ~]# rbd create img02 --size 10G

配置target:

[root@ceph01 ~]# cat /etc/tgt/conf.d/librbd.conf 
<target iqn.2019-04.com.example:cephrbd.img02>
    bs-type rbd
    backing-store rbd/img02
    initiator-address 192.168.0.0/16
</target>

重启tgtd服务:

systemctl restart tgtd

查看target是否正确启用:

[root@ceph01 conf.d]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2019-04.com.example:cephrbd.img02
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 10737 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rbd
            Backing store path: rbd/img02
            Backing store flags: 
    Account information:
    ACL information:
        192.168.0.0/16

好了,看到一切都正常,然后就可以到客户端去发现、登陆和使用这个rbd设备了。

4、使用

来到另外一个节点client01,把我们刚刚配置的img02这个rbd设备挂载到我们的client01节点本地来使用。

4.1、安装iscsi客户端软件

安装并启动iscsi-initiator-utils服务:

[root@client01 ~]# yum install iscsi-initiator-utils -y
[root@client01 ~]# systemctl start iscsid

4.2、发现目标设备

有个小口诀就是先发现再登陆,最后再使用:

[root@client01 ~]# iscsiadm -m discovery -t st -p 192.168.10.20
192.168.10.20:3260,1 iqn.2019-04.com.example:cephrbd.img02

上面-m discovery参数是扫描iscsi服务端可用的存储设备,-t st参数是执行扫描操作的类型,-p 192.168.10.20参数为iscsi服务端的ip地址。

可以看到上面已经发现了iqn.2019-04.com.example:cephrbd.img02这个设备,我们下面就开始登陆:

[root@client01 ~]# iscsiadm -m node -T iqn.2019-04.com.example:cephrbd.img02 -p 192.168.10.20 --login
Logging in to [iface: default, target: iqn.2019-04.com.example:cephrbd.img02, portal: 192.168.10.20,3260] (multiple)
Login to [iface: default, target: iqn.2019-04.com.example:cephrbd.img02, portal: 192.168.10.20,3260] successful.

登陆成功之后,就可以在本地看到这个设备了,也就是下面的sdd这个设备:

[root@client01 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sdd               8:48   0   10G  0 disk 
sr0              11:0    1    4G  0 rom

好了,现在就可以像使用本地设备一样使用这个sdd设备了。

相关文章

  • iscsi(tgt)+librbd使用

    title: iscsi(tgt)+librbd使用 1、前言 因为要调试看下librbd的一个功能。然后准备在自...

  • tgtd + librbd在线扩容

    title: tgtd + librbd在线扩容 前言 这里介绍下iscsi(tgt模式)使用ceph的librb...

  • Ceph Luminous librbd & libra

    1. librbd & librados介绍 Librbd模块实现了RBD接口,其基于Librados实现了对RB...

  • liunx使用iSCSI

    安装 yum install iscsi-initiator-utils 侦测 iscsiadm -m disco...

  • 群晖NAS的iSCSI存储配置及使用

    群晖NAS的iSCSI存储配置及使用 目标和初衷 记录和分享个人NAS的iSCSI配置过程,简单向NAS用户普及一...

  • ipsan设备共享

    ipsan远程块存储 iscsi介绍 iscsi服务器共享设备 iscsi客户端连接共享 一、iscsi介绍 1)...

  • CAS登录认证

    CAS最基本的协议过程: 名词解释 Ticket Grangting Ticket(TGT) :TGT是CAS为用...

  • ISCSI + ocfs2 磁盘共享

    参考: linux搭建gfs系统 iscsi+GFS 实现网络存储 iSCSI(二) iSCSI cLVM GFS...

  • cas restful API使用流程

    一、使用账号密码获取TGT POST ip:port/cas/vi/tickets 注:返回格式可以根据heade...

  • CentOS6.8——iSCSI的运用

    1.什么是iSCSI? iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行...

网友评论

      本文标题:iscsi(tgt)+librbd使用

      本文链接:https://www.haomeiwen.com/subject/qtxytctx.html