Node.js 的大量索引节点

Lots of Inodes with Node.js

这是一个与编程相关的问题,但更多是关于服务器管理方面的问题。

我有一台服务器有 256K 个 INodes 可用(这应该足够了),但另一方面,我在这台服务器上有 5 个项目 运行,有很多节点依赖项(和很多嵌套依赖项).对于这 5 个项目的 npm install,我使用了所有可用 inode 的 70%(准确地说是 251844 中的 176215)。

我的问题是:

有没有办法压缩节点依赖?要每个文件有更多数据但文件更少?

谢谢

我不知道有什么方法可以自动减少 node_modules 中的文件数量(这是 npm 存储其依赖项的地方。)但是,我可以想到一些减少 inode 使用的选项。

1) 如果这些项目之间存在共享依赖项(相同版本号),您可以将一些依赖项从一个项目符号链接到另一个项目。如果你得到一个有很多嵌套依赖的依赖,这真的可以节省相当多的 inode。 (未经测试)

2) 如果有很多共享依赖项,另一种选择是使用 cp -l 将项目 1 的 node_modules 复制到项目 2。在这种情况下,每个副本都是指向同一文件的硬链接,不使用任何额外的索引节点。之后,运行 npm install && npm p运行e 在项目 2 中下载任何更改/附加依赖项。 (也未经测试)

3) 但是,这两个选项都是 hacky,并且可能会或可能不会在以后给您带来难以调试的问题,在复制之后,在恢复备份之后等等。真正的解决方案是重新创建具有更多 inode 的文件系统。对于 ext4,可以使用 mkfs.ext4 -i 来完成。参见 https://unix.stackexchange.com/questions/26598/how-can-i-increase-the-number-of-inodes-in-an-ext4-filesystem