V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Contextualist
V2EX  ›  问与答

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

  •  
  •   Contextualist · 2020-04-01 07:55:28 +08:00 · 1142 次点击
    这是一个创建于 1458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我知道可以通过挂载动态库的方式改变已编译的程序的行为,就像 TCMalloc,可以通过环境变量 LD_PRELOAD 接管程序的 malloc 。

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

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

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

    感谢点拨!决定把小文件都尽量先写到各节点的 /dev/shm 里,然后定期转移到速度慢的网络文件系统上的单文件归档。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3758 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:22 · PVG 18:22 · LAX 03:22 · JFK 06:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.