如果我以1/n的Linux页面大小或磁盘块大小存储数据块,mmap()能否保证崩溃时的数据完整性?

如果我以1/n的Linux页面大小或磁盘块大小存储数据块,mmap()能否保证崩溃时的数据完整性?,linux,io,mmap,persistent,data-integrity,Linux,Io,Mmap,Persistent,Data Integrity,我需要设计一个具有数据持久性和快速重新加载的系统,它是用mmap()实现的。但是使用mmap()进行持久化的系统经常在系统崩溃时丢失数据完整性,比如单节点MongoDB 我有一个非常扁平的数据结构来存储:数据被分块成1024个大小的块,块之间没有依赖关系。在服务器正常运行期间,块会被随机大量访问和更新。您可以使用msync将映射的数据刷新到磁盘 请参阅。已经多次使用mmap,但从未涉及到持久性问题,因此我没有涉足msync。学习已经发生。谢谢

我需要设计一个具有数据持久性和快速重新加载的系统,它是用
mmap()
实现的。但是使用
mmap()
进行持久化的系统经常在系统崩溃时丢失数据完整性,比如单节点MongoDB


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

您可以使用
msync
将映射的数据刷新到磁盘


请参阅。

已经多次使用
mmap
,但从未涉及到持久性问题,因此我没有涉足
msync
。学习已经发生。谢谢