1

我打算将 ceph 重新导出到 iSCSI,但我不能这样做。看起来像 CentOS 7 中的 epel 包scsi-target-utils在没有 rbd 支持的情况下编译。

当我运行时:

$ sudo tgtadm --lld iscsi --mode system --op show
System:
    State: ready
    debug: off
LLDs:
    iscsi: ready
    iser: error
Backing stores:
    sheepdog
    bsg
    sg
    null
    ssc
    smc (bsoflags sync:direct)
    mmc (bsoflags sync:direct)
    rdwr (bsoflags sync:direct)
    aio
Device types:
    disk
    cd/dvd
    osd
    controller
    changer
    tape
    passthrough
iSNS:
    iSNS=Off
    iSNSServerIP=
    iSNSServerPort=3205
    iSNSAccessControl=Off

我没有看到任何与 ceph 相关的字符串。如ceph站点上所述,rbd 支持补丁已被 tgt 存储库的主线接受。

如何在 CentOS 7 的 scsi-target-utils 包中启用 rbd 支持?

4

1 回答 1

0

正如我调查的那样,在 scsi-target-utils 包中实际上禁用了 rbd 支持。如果您安装它的 SRPM 并查看此软件包的 SPEC 文件,您可以看到它。

这是该文件的 7-8 行:

# Disable rbd on epel7 b/c deps are not present
%{!?rhel:%global with_rbd 1}

在 scsi-target-utils 中,此后备库还有一个额外的依赖项。您将需要安装 ceph-devel 包(可以从 ceph 存储库中获取)。

因此,要安装支持 rbd 的 scsi-target-utils,您需要执行以下操作:

  1. 添加官方ceph仓库
  2. 添加 epel 存储库
  3. 安装构建环境
  4. 下载并安装 scsi-target-utils SRPM
  5. 在 SRPM 的规范文件中设置全局标志 with_rbd
  6. 构建 SRPM
  7. 为 scsi-target-utils 安装依赖包
  8. 安装构建的 scsi-target-utils 和 scsi-target-utils-rbd 包

或者在 Bash 语言中:

cd /tmp
sudo yum install -y epel-release
sudo rpm --import 'https://download.ceph.com/keys/release.asc'
sudo yum install -y http://download.ceph.com/rpm/rhel7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum install -y yum-utils rpm-build redhat-rpm-config make gcc
yumdownloader --source scsi-target-utils
rpm -i scsi-target-utils*.src.rpm
cd ~/rpmbuild
sed -ie 's/%{!?rhel:%global with_rbd 1}/%global with_rbd 1/' SPECS/scsi-target-utils.spec
sudo yum install -y libxslt docbook-style-xsl libaio-devel systemd-devel libibverbs-devel librdmacm-devel ceph-devel glusterfs-api-devel
rpmbuild -ba SPECS/scsi-target-utils.spec
sudo yum install -y ./RPMS/x86_64/scsi-target-utils-1.*.rpm ./RPMS/x86_64/scsi-target-utils-rbd-1.*.rpm

安装完成后启动 tgtd 守护进程并检查可用组件:

$ sudo systemctl enable tgtd.service
$ sudo systemctl start tgtd.service
$ sudo tgtadm --lld iscsi --mode system --op show
    System:
    State: ready
    debug: off
LLDs:
    iscsi: ready
    iser: error
Backing stores:
    rbd (bsoflags sync:direct)
    sheepdog
    bsg
    sg
    null
    ssc
    smc (bsoflags sync:direct)
    mmc (bsoflags sync:direct)
    rdwr (bsoflags sync:direct)
    aio
Device types:
    disk
    cd/dvd
    osd
    controller
    changer
    tape
    passthrough
iSNS:
    iSNS=Off
    iSNSServerIP=
    iSNSServerPort=3205
    iSNSAccessControl=Off
于 2016-02-17T09:50:52.057 回答