2011-01-12 44 views
2

我需要设计一个数据持久性和快速重新加载的系统,这是通过mmap()实现的。但是使用mmap()进行持久化的系统通常会在系统崩溃时丢失数据完整性,例如单节点MongoDB。如果我在1/n的Linux PAGE_SIZE?或磁盘块大小中存储数据块,mmap()是否可以保证数据在崩溃时的完整性?

我所拥有的是一个非常平坦的数据结构来存储:数据被分块成1024个大小的块,块之间没有依赖关系。块在服务器正常运行时间内随机大量访问和更新。

回答

2

您可以使用msync将mmapped数据刷新到磁盘。

请参阅http://linux.die.net/man/2/msync

+0

已经使用了`mmap`多次,但从来没有存在持久性问题的地方,所以我没有涉及`msync`。学习已经发生。谢谢。 – 2018-02-05 03:48:45

相关问题