文件系统之FAT32、NTFS

一、磁盘的MBR
MasterBootRecord,主引导记录
大小为一个扇区即512B=446(引导程序)+64(16*4,DiskPartitionTable硬盘分区表)+55 AA(结束标志)
四个DPT一般为“基本分区、扩展分区、保留、保留”对应“C、其它盘、无、无”


二、分区结构
1、FAT32
文件系统之FAT32、NTFS
DBR(DosBootRecord,引导记录)
FAT(FileAllocationTable,文件分配表)

→ 磁盘文件是以簇为单位进行存储的,簇的大小是扇区的倍数,通常最大32KB也就是64个扇区;FAT32的簇号     是32位即4B,类似的,FAT16是2B
文件系统之FAT32、NTFS

→ 根文件夹中的每一项对应一个文件,大小为32B,其中有该文件首簇号和文件簇数等信息
文件系统之FAT32、NTFS

→ FAT表记录了文件数据的簇链,通过根文件夹首簇可以跳转到FAT中对应位置,根据簇号来定位数据存储位置
文件系统之FAT32、NTFS


2、NTFS
文件系统之FAT32、NTFS
MFT(MasterFileTable,主控文件表)

→  MFT的表项叫做FR,FileRecord,文件记录,大小为1KB,0~15个FR是元数据文件记录,16之后的是用户文件或目录记录(目录也被看作是文件);其中$Bitmap的文件用数组方式记录了DATA区每一簇的使用情况
文件系统之FAT32、NTFS

→ FR由“表头+属性+FFFFFFFFH结束标志”构成,属性由“header+body”构成,其中header的前四字节是属性标志,如30H--文件名属性,、80H--数据属性

→ Data属性详解:
小文件(不超过700多字节)直接存在该属性的body中,大文件则以“运行”的方式来存储
PS:相当于一段连续的簇打了个包,包的首簇号和簇数等信息以“运行项”的形式存储在body中
PPS:一个文件有多个包时就有多个运行项,要注意的是,后面运行项的首簇号是相对于前一项首簇号的偏移值
eg:0x20处的0040H是data run的偏移值,由80H开始偏移0040H即data run;有三个运行项,“ 4 1 12 30 DD 81 00”中“1”和“4”分别指后面1B和4B是该运行的簇数和首簇号
运行一,首簇号0081DD30H,簇数12H;运行二,首簇号(81DD30+4A03)H,簇数02H;…
文件系统之FAT32、NTFS


三、直接删除文件的变动
1、FAT32
① 根文件夹中对应项的首字节置“E5”,首簇号高位两字节置“00 00”
② FAT表中对应簇链表的各簇号置“00 00 00 00”
2、NTFS
① 该文件的FR偏移16H处的一个字节改变:0--文件被删除,1--文件正被使用,2--是一个目录,3--目录被删除
② 该文件父文件夹的INDEX_ROOT属性(90H属性)或者INDEX_ALLOCATION(A0H属性)改变…
③ $Bitmap中把该文件所占用的簇对应的位置置0


四、一些问题
1、在存储文件时,FAT32先按顺序进行簇分配,先存的文件首簇号在前,后存的在后,存储顺序和簇链顺序是线性的;删除一些文件后簇链表之中出现一些未占用簇碎片,此时再存储新文件时就打破了线性规则,可能出现“后存的比先存的首簇号要小”“簇链中簇不是连续的”,这给FAT32的数据恢复增加了难度。
2、簇的大小和FAT表的大小之间的平衡关系。之所以引入簇作为文件存储的单位,是因为扇区512B的大小太小,如果以扇区为单位,就要花大量空间来记录扇区号;但是簇也不是越大越好,簇过大会导致“大材小用”的局面,也就是空间浪费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值