我想在一个假写环境中运行一个 Linux 进程,其中所有文件都写入(使用写(2)系统调用)被重定向到内存缓存,后续读取(仅限同一区域)将从缓存中提供服务。进程完成后可以丢弃缓存。
该进程将修改的文件很大(几 TB),但写入的数据总量很小(几兆字节)。因此,overlayfs 不是一个选项,因为我没有几 TB 的可用空间。
请注意,我不关心假设备节点或假权限,因此假根(1)对我没有帮助。
这应该可以通过 LD_PRELOAD 来实现,跟踪(2),保险丝(8)或者DM快照。是否有现有的工具可以为我做这件事,如下所示:
$ fakewrites ./myprog myfile.dat
答案1
https://launchpad.net/libeatmydata
LD_PRELOAD 库禁用所有形式的安全地将数据写入磁盘。 fsync() 变为 NO-OP,O_SYNC 被删除等。这个想法是在测试中使用,以在不需要真正持久性的情况下获得更快的测试运行。