劫持/接管进程的所有文件读写

2020-04-01 07:55:28 +08:00
 Contextualist
我知道可以通过挂载动态库的方式改变已编译的程序的行为,就像 TCMalloc,可以通过环境变量 LD_PRELOAD 接管程序的 malloc 。

那存不存在一种方式可以劫持一个任意的二进制可执行文件的所有文件读写?

如果有,请也解释一下方案的实现难易和潜在的坑。

使用场景:需要在集群上跑的一些程序会产生许多小文件,而集群的硬盘读写很慢。希望在内存中集中暂存或归档这些文件。
1159 次点击
所在节点    问与答
4 条回复
des
2020-04-01 08:41:23 +08:00
我觉得你的方向错了,为什么非要劫持呢?
直接把文件放内存里面就好了
superrichman
2020-04-01 08:43:35 +08:00
你更需要的可能是 ramdisk
chinuno
2020-04-01 08:54:50 +08:00
遇到过同样的问题。一直生成临时文件把 ssd 的缓存写爆了导致装个系统性能暴降。后来给生成目录挂了 tmpfs 解决了
Contextualist
2020-04-01 09:35:08 +08:00
@des
@superrichman
@chinuno

感谢点拨!决定把小文件都尽量先写到各节点的 /dev/shm 里,然后定期转移到速度慢的网络文件系统上的单文件归档。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658159

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX