从 TGT 的 RBD 支持开始

几个月前,Dan Mick 发布了一篇不错的文章,介绍了 iSCSI / TGT 的 RBD 支持。 在本文中,我将对其进行了解。
I. OSD 服务器端
必须在您的 OSD 节点上执行以下操作。
添加 Ceph 额外的仓库,因为它包含带有 RBD 支持的 TGT 包版本。 并安装该包
bash $ echo "deb https://ceph.net.cn/packages/ceph-extras/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ceph-extras.list $ sudo apt-get update && sudo apt-get install tgt
我们可以检查 tgt 是否已使用 RBD 支持编译
```bash $ sudo tgtadm --lld iscsi --op show --mode system | grep rbd
rbd (bsoflags sync:direct)
```
首先在 Ceph 中配置一个新的 RBD 镜像
bash $ ceph osd pool create iscsi 128 128 pool 'iscsi' created $ rbd -p iscsi create iscsi-rbd -s 10240
在您的 OSD 服务器上注册目标,为此,请将以下内容附加到 /etc/tgt/targets.conf 或 etc/tgt/conf.d/ceph.conf
<target iqn.2014-04.rbdstore.example.com:iscsi>
driver iscsi
bs-type rbd
backing-store iscsi/iscsi-rbd # Format is <iscsi-pool>/<iscsi-rbd-image>
initiator-address <clients address allowed to map the device>
</target>
然后重新加载 tgt 服务
bash $ service tgt reload Updating target framework daemon configuration
II. 客户端
禁用 RBD 缓存至关重要,在不同的主机上映射多个目标时使用回写缓存可能会导致数据丢失或损坏。
重要的是在 tgtd 主机上禁用 rbd 缓存。 在 /etc/ceph/ceph.conf 中设置
[client]
rbd_cache = false
在您的客户端机器上安装 open-iscsi
bash $ sudo apt-get install open-iscsi $ sudo service open-iscsi restart [ ok ] Unmounting iscsi-backed filesystems: Unmounting all devices marked _netdev. [....] Disconnecting iSCSI targets:iscsiadm: No matching sessions found . ok [ ok ] Stopping iSCSI initiator service:. [ ok ] Starting iSCSI initiator service: iscsid. [....] Setting up iSCSI targets: iscsiadm: No records found . ok [ ok ] Mounting network filesystems:.
发现目标
bash $ iscsiadm -m discovery -t st -p 192.168.0.100 # IP 是具有 TGT 的 OSD 的 IP 地址 192.168.0.100:3260,1 iqn.2014-04.rbdstore.example.com:iscsi
映射目标
bash $ iscsiadm -m node --login Logging in to [iface: default, target: iqn.2014-04.rbdstore.example.com:iscsi, portal: 192.168.0.100,3260] (multiple) Login to [iface: default, target: iqn.2014-04.rbdstore.example.com:iscsi, portal: 192.168.0.100,3260] successful.
检查是否一切正常
```bash $ sudo cat /proc/partition major minor #blocks name
8 0 97650720 sda 8 1 1792 sda1 8 2 248064 sda2 8 3 97400576 sda3 8 112 10485760 sdh ```
检查块大小
bash $ blockdev --report /dev/sdh RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 0 10737418240 /dev/sdh
在下一篇文章中,我将讨论多路径实现,以使此设置高度可用。