mmap的数据可靠性分析

本文探讨了在UPS项目中使用mmap进行增量数据管理时的数据可靠性。mmap内存写操作会进入page-cache,msync用于将脏数据持久化。操作系统自带的page-cache管理策略包括定时刷新和脏数据比例触发。然而,通过mmap更新文件时不更新mtime和ctime,可能是kernel的已知bug。实验表明,进程崩溃时数据不会丢失,但机器掉电可能导致page-cache数据丢失,建议通过msync策略减少数据丢失。
摘要由CSDN通过智能技术生成

UPS项目打算用mmap做增量数据管理,对数据可靠性有一定要求,简单做了些实验,结果与大家分享下。

1.      对mmap内存的写操作,会直接进入系统page-cache;msync调用负责把脏的page-cache持久化到硬盘。

2.      Page-cache操作系统自身也有管理策略:一个是定期把脏数据(有过更新的)刷回硬盘(默认30s);一个是脏数据达到一定比例,也会触发刷新(默认10%)。

具体可参考:http://www.westnet.com/~gsmith/content/linux-pdflush.htm

3.      通过mmap更新文件(PROT_WRITE和MAP_SHARED模式),文件的mtime和ctime没有发生更新,与man中对mmap的描述不一致。据说是kernel的一个bug,目前还没有修复。

可参考:http://forum.soft32.com/linux/mmap-mtime-updates-ftopict338320.html

https://lkml.org/lkml/2006/5/17/138

 

从上面实验结果可以判断:

1.      如果使用mmap的进程挂了&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值