文件存储细节

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:55:57
举例说明:比如同时下载两个文件,每个文件2G,它们同时往硬盘上面写数据,那么数据是不是就不连续了?这样就形成了数据碎片。还是第一个文件需要2G的存储空间,就规划好2G的连续扇区,第二个文件就从2G以后的扇区开始写数据呢?

我发出这样的疑问是因为连续的数据肯定比不连续的数据读取速度快

在创建文件时,文件系统根据文件大小为文件分配相应大小的存储空间(FAT/NTFS文件系统分配的最小单位为簇,EXT3/Reiserfs文件系统分配的最小单位为块,根据文件系统不同称谓一般不同)。
以NTFS文件系统(windows默认文件系统)为例对创建文件的过程进行简单讲解:
第一步:读取文件系统第一个扇区的引导扇区,获取簇大小,MFT起始位置以及每个MFT项的大小。
说明:一个MFT项用于标识一个目录或者文件。
第二步:读取第一个MFT项,并通过该MFT找到文件系统中其它的MFT项。
说明:当你在一个目录下创建文件时,每个目录均对应了一个MFT项,第一个MFT目录项用于描述文件系统自身。
第三步:为创建的文件创建MFT项。
第四步:初始化MFT项。
说明:该步骤主要是建立文件的一些基本信息,包括文件名,创建时间等信息。
第五步:使用6号MFT项查找空闲簇并根据文件大小将相应的簇分配给该文件。
说明:NTFS使用最佳分配策略来分配存储空间,即尽量为每个文件分配连续的存储空间。
第六步:为创建的文件添加文件名项。
说明:该操作主要通过访问第5个MFT(根目录)项,找到其父目录所在的MFT项,并在其中更新其父目录的访问时间。
第七步:跳转到创建文件所在的父目录所在的MFT项,为新创建的文件建立索引关系。
说明:该操作主要目的是文件系统能有效查找和管理文件。
第八步:将以上每个步骤的操作实时记录到文件系统日志中。
说明:该操作主要用于文件系统的快速恢复,目前主流文件系统均具有该特性。
通过上面对文件创建过程的讲解,针对你提出的问题我们可以作出如下判断:
如果文件系统没有进行过频繁的数据写入和删除操作或者已经进行过碎片整理,那么在创建文件时很可能分配的就是两个独立的连续存储空间,即同时下载2个文件时不会存在文件碎片问题。即便是同时下载2个文件,也是往文件系统为新建文件预分配的不同空间进行写数据的操作。
如果要准确判断文件分布是否存在碎片受文件系统中空闲空间分布情况,文件本身大小等关系的影响,需要具体分析。