正文 1991字数 448,710阅读

第一种情况:求极限情况下一个文件夹A内,放无限多的文件,无限多的小体积文件组成无限大的容量,那么最大是多大?不考虑硬盘大小。
Run code
Cut to clipboard


    决定一个文件夹下能存放多少个文件的,是文件系统,而不是操作系统。
    文件系统是给硬盘分区格式化时选择的格式。

    Windows有两种主流的文件系统:FAT32和NTFS

    FAT32 标搜索称为单目录下最高支持65534个文件,实际到2万+时已不稳定。
    NTFS 似乎没有明确限制单目录文件数量,但有人反应在生成10万+ 文件的目录时遇到报错,想来应该是和文件属性(文件名等)、磁盘使用状况相关,至于对效率的影响,可以参考以下内容,以下内容为转载

    似乎 FAT32 文件系统下的单一目录下的文件数限制在 20000 -30000 之间的一个数字。。。

    具体就不知道是哪个了。。因为我在 解压一个有 30000 多个文件的 rar 文件到 fat32 目录的时候出现磁盘满的提示。。但是磁盘并没有满。。。每个目录都要描述它的内容所在的磁盘位置,名字等信息。这些信息是连续存放的,而且空间有限,用完了就不能再加了。改进的文件系统,目录信息自身也是在磁盘上不连续分布的,就没有这个问题了。不过一般来讲这个都不是问题。在文件很多的系统中,往往会自己创建子目录进行分类。比如VSS.
    对于 FAT16文件系统,可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte);卷的最大体积是4GB;每个卷上最多可以保存的文件数量是65,536个 (2^16);根目录下可以保存的文件和文件夹数量最大值是512个(如果使用了长文件名,该数字还会减小)

    对于FAT32文件系统, 可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte);Windows自带的工具可以创建的卷的最大体积是32GB;每个卷中最多可以保存的文件数量是4,177,920个;一个特定文件夹中最多可以保存的子文件夹和文件的数量是65,534(如果使用了长文件名,那么该数字会减小)

    对于NTFS文件系统,可以保存的文件的大小的最大值,理论上是16EB - 1 KB (2^64 bytes - 1 KB)(1EB=1024PB=1024TB=1024GB) ,实际实现过的最大值是16TB - 64 KB (2^44 bytes - 64 KB);卷的体积最大值,理论上可以达到2^64个簇 - 1个簇,实际实现过的最大值是2^56 TB - 64 KB ( 2^32 个簇 - 1个簇);每个卷可以包含的文件个数的最大值是4,294,967,295个 (2^32 - 1)

    理论上FAT32单个目录下,最多可以包括65534个子目录或者文件。但是如果采用长文件名命名的话,实际可以容纳的文件数目会远远小于6万多。2万多属于正常现象。

    NTFS克服了这个问题,但是对于单个目录下多文件的操作(拷贝,移动或者删除),比如说几万个小文件,每个十几k大,仍然十分头疼,个人觉得是死穴,也是正常现象。

    Linux的文件系统就多了去了:ext2, ext3, ext4, reiserfs, cramfs, jfs, xfs, bfs等等等等……
    我无法给你逐一列举,但是可以确定的告诉你,Linux就是用来作服务器的,主流的三种分区格式ext3, ext4, reiserfs不会有个人用户有能力达到其最高容量的,你的硬盘尺寸肯定都达不到不到他们的“最大文件尺寸”限制。 我曾经给Linux服务器的一整块76G硬盘dump成一个76G的文件,再大也没问题。


    linux一个文件夹内最多能放多少文件 文件夹权限为:777. 写入方式为php用for循环6000000次,页面显示,写到大约350000+的时候,就没反应了,文件夹容量不再变化,文件不大,平均4kb一个。 还有一个问题是:一个文件夹内能存放多少子文件夹。容量有何限制。
    Run code
    Cut to clipboard


      文件数限制:
      系统所能生成的总的文件数受系统所剩节点数限制,执行
      tune2fs -l /dev/sda1(目录所在的分区) |grep inodes
      可以查看剩余节点数
      在一台ext3的系统中执行,结果为 Free inodes: 845504
      目录数限制:

      RHEL4.3中,在
      同一个路径下,一级子目录的个数限制为31998 。如果你的应用生成的目录可能会超过这个数,那要注意进行目录分级。例如,如果目录
      名为数字的话,可以将数字除以10000后的整数值做为父目录名(/data/1/13892);如果是目录名为字幕的,可以用前几个字符来做为父一级目
      录(/data/ab/abcdefg)等等