在我拥有的一台较旧的 Linux 机器上,有一个 Netapp 的 NFS 挂载。一旦此机器上的单个目录中有 10 万个文件,就无法再写入文件。有人知道是什么原因造成的吗?我被告知符号链接仍然可以写入。
我会在查找时添加更多具体信息。请跳过“使用更好的文件/文件夹结构和/或数据库”,我知道……
答案1
您可能遇到了两个限制。
inode(不太可能)
您已使用完该卷的所有可用 inode。您可以使用命令
df -i
和 来确认这一点maxfiles
。maxdirsize
(更倾向于)ONTAP 对目录大小施加了限制。大小是元数据/硬链接的产物,而不是文件内容。此限制默认(假设 >6.5)为系统 RAM 的 1%。这样做是为了确保大型目录不会影响系统性能。因为线性目录扫描需要将目录数据结构加载到内存中。快速概览:
- 您可以使用 检查目录大小
ls -lkd
。 - 提高
maxdirsize
音量有点像单向操作。 - 仅以小幅度的增量提高它。
- 您不能通过删除目录的内容来减小目录的大小。
- 我已收藏这两个链接,其中包含更多信息。
- 您可以使用 检查目录大小
如果不是这两个问题,那么我建议检查并发布您的 ONTAP 日志。
答案2
系统正在达到目录的链接限制,这是 NetApp ONTAP 文件系统的固定限制。 来自此知识库文章:
从 Data ONTAP 6.5 开始,单个目录可以拥有的最大子目录数为 99998 (100K)。Data ONTAP 6.4 及更早版本限制为 65534 (64K) 个子目录。此数字不可更改。要了解此限制的原因,请参阅下面有关硬链接和子目录实现的部分。
答案3
http://www.unixunderground.com/blog/?cat=11
有点过时,但可能会有帮助。我相信文件数量取决于磁盘/节点的数量。
答案4
在较新版本的 NetApp(8.1+)中,您可以使用以下命令覆盖每个卷的默认限制:
vol options vol_name maxdirsize 150000
要查看当前设置,请运行
vol options vol_name
无法从 GUI 客户端更改这些。