为什么同一个文件在不同地方大小不一样

2024-11-29 11:28:37
推荐回答(1个)
回答1:

我想你看了这个关于簇的解释你就明白了!
文件系统是操作系统的重要组成部分,现在我们常用的windows操作系统都可以支持多种文件系统,例如fat16、fat32以及ntfs文件系统等。文件系统是操作系统与驱动器之间的一个接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(fat16、fat32、ntfs)打开文件,而簇的概念也在此时出现。虽然我们知道扇区是磁盘最小的物理存储单元,但对于dos操作系统来说,扇区要小得多(仅仅512个字节),dos无法对数目众多的扇区进行寻址。根据dos的设计初衷,dos只能处理216个磁盘单元,而磁盘单元可以是扇区,也可以是由扇区集合所构成的簇。所以当使用fat16格式时,扇区必须组成“簇”的形式,每个簇可以包括2、4、8、16、32或者是64个扇区。簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。簇的大小直接影响硬盘分区表的大小,虽然簇变大之后能够管理更多磁盘空间,并且能加快读写速度,提高数据寻道时间,但由于分区表体积的增大以及簇容量的变大,也会导致磁盘空间的浪费。
举例来说,一个只有一字节的文件,在一个每簇为2kb的分区上,要占用2k字节磁盘空间;如果在每簇为16kb的分区上,则这一个字节的文件要占用16kb空间。从文件末尾到该文件簇末尾的空间称为簇悬置空间,积累的簇悬置空间越大,磁盘浪费的空间也越大。
这时,我们就需要找到一个即能考虑性能也能兼顾容量的分区方法。通常这样的方法被称为按簇分区,而要想如此操作则需要第三方分区软件的支持,比如pqmagic(分区魔术师),就是最常见的一款。
从pqmagic的分析图中我们不难看出,对于一个装有数据的分区来说,过大的簇会造成磁盘空间的浪费。
通常情况下,对于8gb以下的分区容量,把簇的大小设置为8kb即可获得性能与容量的平衡。如果想要最大限度地利用硬盘空间,就需要按照使用用途来进行按簇分区。例如,如果分区为8g,并且分区为引导分区,那么把簇设置成8kb将比把簇设置成16kb更能节约磁盘空间。因为引导分区经常需要进行数据读写,而这些数据通常都非常多而小,使用大的簇将非常浪费磁盘空间,并且也不利于数据的寻址。但如果这个分区是逻辑分区,并且只存储一些大容量的视频文件,就没有必要把簇的值设定得太低,这样反而不利于读写。我们不难看出,过大的簇会造成磁盘空间的浪费。
另外,也不能把容量非常大的分区的簇设定得太小,这样不仅影响读写速度,并且还容易产生文件碎片。