文件和文件夹的个数是否对磁盘的IO有影响?
在linux和windows的亦或是其他操作系统的 文件系统 中,文件的个数、文件夹的个数、文件夹的层级数是否对磁盘的IO有影响? 如果有,那么大概的阈值是多少?超过这个阈值会明显影响性能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在linux和windows的亦或是其他操作系统的 文件系统 中,文件的个数、文件夹的个数、文件夹的层级数是否对磁盘的IO有影响? 如果有,那么大概的阈值是多少?超过这个阈值会明显影响性能?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
回答一下LZ的问题,这里仅针对Linux下的情况来说:
文件的个数、文件夹的个数、文件夹的层级数
是否对磁盘的IO有影响要想了解问题的本质,需要知道一个文件和一个文件夹(以下都称为目录)在Linux下面是怎么表示的。
文件系统是个很大的范畴,这里简要说以下几点:
0. 文件是什么
我们创建一个文件然后看看文件都有哪些信息:
$>stat
命令Inode号就是这个文件的唯一标识,可以看做是数据库中的主键.
一个inode 一般占了128KB或者是256KB,是的,有可能比文件本身还大.
inode中存储了一个文件的以下信息:
inode号在系统中是会用完的,查看系统的inode整体信息可以用命令
(LZ问题:文件的个数是否会影响,答案是的)$>df -i
如果你的系统中零散的小文件很多,是会浪费掉很多的inode的.
有可能导致的情况就是磁盘任然有空间但是创建文件缺失败了
(LZ问题:文件的个数是否会影响,答案是的)1. 文件名有什么用
文件名的作用在于找到inode
2. 怎样根据文件名找到文件
目录也是文件
3. 目录是怎样索引的
把inode看做指针就明白了
文件的个数、文件夹的个数、文件夹的层级数
是否对磁盘的IO有影响?文件的个数、文件夹的个数 是会影响到对于找到文件时候的IO的,要知道有时候目录结构也是保存在磁盘的.
但是在找到了文件后,对磁盘IO影响就不大了。
文件夹的层级数 会对索引造成更多的操作,这是肯定的.和上一个问题答案一样.
大概的阈值是多少? 这个就是用
$> df -i
看看你的 Inodes IUsed IFree三个值了原理上讲,磁盘IO是以扇区为单位的,如果文件比较分散的话,会增加机械寻道的概率,应该会有一些影响,具体不知道怎么测算。
在linux下面如果文件多了,连ls都会卡得几乎没反应。这个我已经遇到了.....
但阈值多少也是和硬件有关的吧
你可以写个脚本生成空的文件或文件夹,然后记录不同的文件数量下ls得到返回的时间
在windows下面的话,文件夹的数量多,文件夹子目录深会对桌面的响应产生影响,个人用户的话,影响应该不明显,服务器的话,没有测试过。windows文件和文件目录好像可以通过日志检索,速度应该也不会慢。