【发布时间】:2012-06-25 21:19:58
【问题描述】:
我想设置一个带有两个节点的 DRBD 主动/主动配置。我的应用程序将直接在 DRBD 设备上执行 I/O。我没有看到任何在 DRBD 中启用缓存的选项。
是否有任何 linux 模块可以让我在 DRBD 和磁盘模块之间设置缓存?任何在 DRBD 模块之上的缓存都可能导致节点读取过时的数据。
【问题讨论】:
-
你想达到什么目的?您是否只想在应用程序之间共享数据,这些数据最终会在稍后的某个时间写入磁盘?您有什么要求?
-
这将是一个高可用性集群。该应用程序将使用磁盘作为其基于块的自定义存储,以获得非常高的性能。由于 DRBD 正在执行复制,因此在 DRBD 下方有一个缓存层可以避免我通知其他系统从其更高级别的缓存中刷新相应的块。
-
“更高级别的缓存”是什么意思?您能否扩展您的问题以包括您想要构建的具体内容,因为答案取决于您拥有的应用程序类型以及您如何访问共享块设备?
-
更高级别意味着任何模块(文件系统、直接块访问等)将 drbd 设备作为其存储来访问。应用程序将通过对 /dev/nnn 设备执行 open/mmap 来访问共享块设备,然后执行 I/O。必要时锁定将使用分布式锁定来完成。该应用程序可以实现一个用户空间库,该库可以使用共享内存进行缓存等,但需要通知其他节点上正在修改的块。我想避免这种情况,并在 drbd 或 drbd 以下的级别使用缓存。
-
我发现bcache.evilpiepirate.org 看起来很有希望
标签: linux caching block-device drbd