在Linux上使用DRBD设置块级缓存

在Linux上使用DRBD设置块级缓存,linux,caching,block-device,drbd,Linux,Caching,Block Device,Drbd,我想用两个节点设置DRBD活动/活动配置。我的应用程序将直接在DRBD设备上执行I/O。我还没有看到在DRBD中启用缓存的任何选项 是否有任何linux模块允许我在DRBD和磁盘模块之间设置缓存?DRBD模块上的任何缓存都可能导致节点读取过时数据。DRBD本身具有不同的保证。您可以尝试使用B甚至A。但是,所有类型都会阻塞,直到本地写入成功。 至于显式缓存对磁盘的写入,可能会提供进一步的指针,说明可以做什么。尤其是dannysauer的回答看起来很有趣。你想实现什么?您是否只想在应用程序之间共享最

我想用两个节点设置DRBD活动/活动配置。我的应用程序将直接在DRBD设备上执行I/O。我还没有看到在DRBD中启用缓存的任何选项

是否有任何linux模块允许我在DRBD和磁盘模块之间设置缓存?DRBD模块上的任何缓存都可能导致节点读取过时数据。

DRBD本身具有不同的保证。您可以尝试使用B甚至A。但是,所有类型都会阻塞,直到本地写入成功。
至于显式缓存对磁盘的写入,可能会提供进一步的指针,说明可以做什么。尤其是dannysauer的回答看起来很有趣。

你想实现什么?您是否只想在应用程序之间共享最终写入磁盘的数据?您的要求是什么?这将是一个高可用性集群。应用程序将使用磁盘作为其自定义的基于块的存储,以获得非常高的性能。由于DRBD正在进行复制,在DRBD下面有一个缓存层可以避免我通知另一个系统刷新其更高级别缓存中的相应块。你说的更高级别缓存是什么意思?由于答案取决于您拥有的应用程序类型以及您访问共享块设备的方式,您能否将问题扩展到包括您想要构建的具体内容?更高级别意味着任何模块文件系统、直接块访问等都可以访问drbd设备作为其存储。应用程序将通过对/dev/nnn设备执行open/mmap来访问共享块设备,然后执行I/O。如有必要,将使用分布式锁定来执行锁定。应用程序可以实现一个用户空间库,该库可以使用共享内存进行缓存等,但需要通知它另一个节点上正在修改的块。我希望避免这种情况,并在drbd或低于drbd的级别使用缓存。我发现这看起来很有希望