RBD 状态更新

yehudasa

_关于 RBD 当前状态的快速更新。
_
最近的主要进展是 librbd(用户空间库)可以立即确认写入(而不是等待实际提交),以更好地模拟正常磁盘的行为。

为什么这样做?很久很久以前,当你向磁盘发出写入指令时,它会在数据写入后确认写入。不再这样了。现在,确认意味着数据在驱动器的缓存中或在磁盘上。在发出单独的刷新命令之前,你不知道数据是否安全/持久。现在 RBD 的行为类似:写入会立即确认(至少达到一定数量的字节),并且刷新会等待所有先前的写入提交。这与真实的驱动器缓存之间的唯一真正区别在于,真实的驱动器会尝试将小的写入合并成单个操作,而 RBD 会将它们全部直接发送到后端集群。

要使它与 qemu/KVM 配合使用,你需要

  • Ceph v0.35 或更高版本。

  • 将 rbd_writeback_window 设置为字节数(大约是你期望物理磁盘缓存的大小……例如,8 MB)。这意味着使用像这样的 qemu 驱动器字符串:

    rbd:rbd/myimage:rbd_writeback_window=8000000

  • 你需要带有提交 7a3f5fe 的 qemu,它正确地连接了 qemu 刷新函数。它不包含在 v0.15 中,但应该包含在下一个版本中。

这尚未在内核 RBD 驱动程序中实现。因此,使用该设备进行的有效性能仍然相对较差。我们希望在 v3.2 合并窗口打开时准备好类似的行为。