千家信息网

如何通过Ceph-RBD和ISCSI-target实现硬盘共享

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关如何通过Ceph-RBD和ISCSI-target实现硬盘共享,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 问题提出现
千家信息网最后更新 2026年11月01日如何通过Ceph-RBD和ISCSI-target实现硬盘共享

今天就跟大家聊聊有关如何通过Ceph-RBD和ISCSI-target实现硬盘共享,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1 问题提出

现在要求把机房的设备存储都利用起来,建立一个存储池,能满足用多少创建多少而且能够跨平台挂载创建的硬盘。目前,验室的机房目前已经建立起来了CEPH的集群,存储池达到了257TB,于是设想创建一个RBD(RADOS block device),然后通过ISCSI-target把创建的RBD导出来用于客户端的挂载。

2 可行性分析

上述的问题的实现主要是两部分,一部分是创建RBD,另一部分是通过安装ISCSI-target把RBD导出,用于Ceph集群外主机挂载。目前的实验环境已经可以成功的创建RBD用于Ceph集群内的装有RBD客户端的主机挂载,剩下的就是第二部分的实现。由于Ceph已经支持通过iscsi协议来使用rbd,所以在理论上是可行的。

3 实现过程

3.1 环境说明

实验平台:ubuntu14.04 server,内核:3.13.0-32-generic

Ceph版本:version 0.94.2

服务端 ISCSI-target采用Linux SCSI target framework (tgt)(http://stgt.sourceforge.net/)

服务端IP:172.25.1.55

3.2 创建RBD

在ceph-admin节点执行下面命令:

rbd create --size {megabytes} {pool-name}/{image-name}

比如创建大小为1GB,名为ceph-rbd1的RBD:

rbd create --size 1024 ceph-rbd1

未指定pool-name则默认创建到rbd池里面

查看RBD:rbd ls {poolname} 不加poolname默认查看rbd池下的RBD

查看RBD详细信息:

rbd info {pool-name}/{image-name}

比如查看ceph-rbd1:rbd info ceph-rbd1 不加pool-name默认rbd池

3.3 映射RBD

创建好的RBD需要映射到客户机才能使用,客户机需要内核支持Ceph块设备和文件系统,推荐内核2.6.34或更高版本。

检查Linux版本和对RBD的支持:

modprobe rbd

Linux哲学,不返回消息就是最好的消息。所以modprobe rbd没有返回消息说明内核对rbd支持。

在ceph-osd节点执行下面命令:

rbd map rbd/ceph-rbd1

格式是rbd map {pool-name}/{image-name} 不加{pool-name}默认rbd

查看映射后的RBD在操作系统中的设备名:

rbd showmapped

可以看到创建的RBD在操作系统的设备名是/dev/rbd1

fdisk -l /dev/rbd1#参看分区情况

如果用于本机挂载执行接下来步骤:

mkfs.xfs /dev/rbd1 #格式化RBDmkdir /mnt/ceph-vol1 #创建挂载点mount /dev/rbd1 /mnt/ceph-vol1 #挂载RBD,可以写入数据测试一下挂载后的RBD

不过我们的目的是Ceph集群外主机挂载RBD,所以上面的步骤了解一下即可,集群外主机挂载RBD需要用到ISCSI-target。

3.4 配置rbdmap

根据网络文档了解到,创建rbd块设备并rbd map后,如果不及时rbd unmap,关机的时候系统会停留在umount此rbd设备上。所以要配置rbdmap。官方文档无rbdmap的介绍,而且这个脚本也不是官方发布的,为避免遇到这种问题先下载并设置开机启动rbdmap,将来再尝试不加入这个脚本会不会出现问题。

sudo wget https://raw.github.com/ceph/ceph/a4ddf704868832e119d7949e96fe35ab1920f06a/src/init-rbdmap -O /etc/init.d/rbdmap #获得脚本文件sudo chmod +x /etc/init.d/rbdmap #增加执行权限sudo update-rc.d rbdmap defaults #添加开机启动

修改rbdmap的配置文件/etc/ceph/rbdmap将映射好的rbd添加进去,注意/etc/ceph/rbdmap路径是wget时的当前路径 ,我wget时是在/etc/ceph路径下的。

vi /etc/ceph/rbdmap# RbdDevice     Parameters#poolname/imagename   id=client,keyring=/etc/ceph/ceph.client.keyringrbd/ceph-rbd1      id=client,keyring=/etc/ceph/ceph.client.keyring

如果使用了cephx那么,keyring=/etc/ceph/ceph.client.keyring就要加上了

3.5 配置ISCSI-target

Linux SCSI target framework (tgt)用来将 Linux 系统仿真成为 iSCSI target 的功能;安装tgt,并检查是否支持rbd:

apt-get install tgttgtadm --lld iscsi --op show --mode system | grep rbd

rbd (bsoflags sync:direct)#返回这个信息表明支持rbd

文件的了解:
/etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几颗;

/usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;

/usr/sbin/tgt-setup-lun:建立 target 以及设定分享的磁盘与可使用的客户端等工具软件。

/usr/sbin/tgtadm:手动直接管理的管理员工具 (可使用配置文件取代);

/usr/sbin/tgtd:主要提供 iSCSI target 服务的主程序;

/usr/sbin/tgtimg:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);

SCSI 有一套自己分享 target 档名的定义,基本上,藉由 iSCSI 分享出来的 target 檔名都是以 iqn 为开头,意思是:『iSCSI Qualified Name (iSCSI 合格名称)』的意思。那么在 iqn 后面要接啥档名呢?通常是这样的:

iqn.yyyy-mm.:identifier

单位网域名的反转写法 :这个分享的target名称

比如:target iqn.2015-9.localhost:iscsi 在接下看的配置中会用到

我们主要是修改 /etc/tgt/targets.conf,把创建好的RBD信息添加进去。

vim /etc/tgt/targets.conf

# 此档案的语法如下:

    backing-store 存储设备名 -1    backing-store 存储设备名 -2    driver iscsi #驱动    bs-type rbd # 后端存储类型 - 默认 rdwr, 可选 aio, 等...在这里选rbdbacking-store rbd/ceph-rbd1  # <==LUN 1 (LUN 的编号通常照顺序)Format is /

backing-store (虚拟的装置), direct-store (实际的装置): 设定装置时,如果你的整个磁盘是全部被拿来当 iSCSI 分享之用,那么才能够使用 direct-store 。不过,根据网络上的其他文件, 似乎说明这个设定值有点危险的样子。所以,基本上还是建议单纯使用模拟的 backing-store 较佳。

当然,配置文件中还有其他的一些参数可以参考:/usr/share/doc/tgt/examples/targets.conf.example里面的内容。

然后重启tgt:/etc/init.d/tgt restart

参看端口是否开启:netstat -tlunp | grep tgt 默认3260端口

观察一下target 相关信息,以及提供的 LUN 数据内容:

tgt-admin -showTarget 1: iqn.2015-9.localhost:iscsi  <==就是我们的 target    System information:        Driver: iscsi        State: ready    I_T nexus information:    LUN information:        LUN: 0            Type: controller     <==这是个控制器,并非可以用的 LUN 喔!  ……省略中间……..        LUN: 1            Type: disk    <==第一个 LUN (Logical Unit Number)            SCSI ID: IET     00010001            SCSI SN: beaf11            Size: 10995116 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/ceph-rbd1 <==磁盘所在的实际文件名            Backing store flags:    Account information:    ACL information:        ALL

至此ISCSI-target就已经配置好了。

3.6 windows客户端挂载

iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。 也就是说,想要连接到 iSCSI target 的服务器,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁盘。

上面配置都成功的话就可以进行正常挂载,我是在windows7上面进行的挂载。windows7自带有iSCSI initiator。

打开控制面板-》系统与安全-》管理工具 iSCSI 发起程序

点发现门户然后填入你的服务端IP或DNS

可以看到当前的状态是不活动的,可以点击连接:

连接成功后相当于挂载了一个硬盘,这时我们可以在磁盘管理中进行分区和格式化等一些操作,格式化成功后可以看到磁盘已经在系统中了。

3.7 linux客户端挂载

本次主要针对的windows客户端挂载,成功的挂载说明服务器端是没有问题的,如果要在linux上进行挂载,只需要安装iSCSI initiator然后进行简单的配置。具体的配置方法下面的参考文献中的鸟哥文章有详细介绍,这里只是说明其是具有可行性的,不进行实例验证了。

注意,linux客户端和windows客户端都是ceph集群外的主机,集群内的不需要用到iscsi就可以进行创建挂载。

看完上述内容,你们对如何通过Ceph-RBD和ISCSI-target实现硬盘共享有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

配置 客户 文件 磁盘 设备 客户端 系统 集群 支持 服务 存储 成功 主机 内容 工具 格式 问题 硬盘 信息 内核 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 互联网佳科技有限公司 厦门中拓互联网络科技有限公司 互联网科技缩写 万达互联网科技 郑州华宇互联网科技 科技伦理 互联网公司 银川新华互联网科技学校地址 中盈科技互联网信息有限公司 广州优美互联网科技 深圳国际航运科技和互联网 以后互联网后是啥科技 花神(南京)互联网科技有限公司 知域互联网科技有限公司大骗子 天津腾达互联网科技有限公司 互联网金融科技名词解释 徐州市互联网科技有限公司 华中科技大学互联网的牛人 珠海东科互联网科技有限公司 北京瑞云互联网科技有限公司 中国互联网科技股 厦门中拓互联网络科技有限公司 互联网科技公司官网 成都互联网科技公司 安控科技rtu产品工业互联网 北京三清互联网科技 银川新华互联网科技职业技术培训学校图片 互联网行业科技股 科技和互联网行业的特点 互联网科技大会大佬
0