-
FAT32
文件系统简介
[
日期:
2008-09-27]
来源:
作者:
[
字体:
大
中
小
]
(一)
FAT32
文件系统将逻辑盘
的空间划分为三部分,依次是引导区(
BOOT
区)、文件分配
表区(
FAT
区)、
数据区(
DATA
区)。引导区和文件分配表区又合称为系统区。
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等
等重要参数
和引导记录。之后还留有若干保留扇区。而
FAT1
6
文件系统的引导区只占用一个扇区,没有保留扇区。
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是
通过
FAT
实现的,
< br>FAT
如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据
区的存储空间是按
簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件
总是占用若干个整簇,文件所使用的最后一簇
剩余的空间就不再使用,而是浪费掉了。<
/p>
从统计学上讲,平均每个文件浪费
0.5
簇的空间,簇越大,存储文件时空间浪费越多,利用率越
低。因此,簇的
大小决定了该盘数据区的利用率。
FAT16<
/p>
系统簇号用
16
位二进制数表示,
从
0002H
到
FF
EFH
个可用簇号
(FFF0H
到
p>
FFFFH
另有定义
,
用来表示坏簇,文件结束簇等
)
,允许每一逻辑盘的数据区
最多不超过
FFEDH(65518)
个簇。
< br>FAT32
系统簇号改用
32
位
二进制数表示,
大致从
00000002H
到
FFFFFEFFH
个可用簇号。
FAT
表按顺序依次记录了该盘各
簇的使用情况,是一种位示
图法。
每簇的使用情况用
32
位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已
分配的簇相应
位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为
FFFFFF0FH
,如果该簇不是文件的最后一簇,
填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在
FAT
表中。
0000000
< br>H
、
00000001H
两簇号
不使用,其对应的两个
DWORD
位置
(FAT
表开头的
8
个字节
)
用来存放该盘介质类型编号。
F
AT
表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。
(四)
F
AT32
系统一簇对应
8
个逻辑相邻的
扇区,理论上,这种用法所能管理的逻辑盘容量上限为
16TB(16384
GB)
,容量大于
16TB
时,可以用一簇对应
16
个扇区,依此类推。
FAT16
系统在逻辑盘容量介于
128MB
到
256MB
时,一簇对应
8
个扇区,容量介于
256MB
到
512MB
时,一簇对应
16
个扇区,容量介于
512MB
到
1GB
时,一簇对
应
32
p>
个扇区,容量介于
1GB
到
2GB
时,一簇对应
32
个扇
区,超出
2GB
的部分无法使用。显然,对于容量大于
51
2MB
的逻辑盘,采用
FAT32
的簇比采用
FAT16
的簇小很多,大大减少了空间的浪费。
p>
但是,对于容量小于
512MB
的盘,采用
FAT32
虽然一簇
8
个扇区,比使用
FAT16
一簇
16
个扇区,簇有所减
小,但
FAT
32
的
FAT
表较大,占用空间较多,
总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微
软建议对小于
512M
的逻辑盘不使用
FAT32
。
另外,
对于使用
FAT16
文件系统的用户提
一建议,
硬盘分区时,
不要将分区
(<
/p>
逻辑盘
)
容量正好设为某一区间的下
p>
限,例:将一逻辑盘容量设为
1100M(
稍大于
1024M)
,则使用时其有效存储容量比分区为
950M
的一般还少,因其簇
大一倍,浪费的
空间较多。还有,使用
FDISK
等对分区指定容量时,由于对
1MB
的定义不一样
(
标准的二进制的
1MB
为
10
48576B
,有的系统将
1MB
理解
为
1000000B
,
1000KB<
/p>
等
),
及每个分区需从新磁道开始等因素
,实际分配的容量
可能稍大于指定的容量,亦需注意掌握。
五)
根目录区
(
ROOT
区)
不再是固定区域、
固定大小,
可看作是数据区的一部分。
因为根目录已改为根目录文件,
采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数 目不再
受最多
512
的限制。
FAT16
文件系统的根目录区(
ROOT
p>
区)是固定区域、固定大小的,是从
FAT
区之后紧接着的
3
2
个扇区,最多保存
512
个目录项,作为系统区的一部分。
(六)目录区中的目录项变化较多,一个目录项仍占
32
字节,可以是文件目录项、子目录项、卷标项
(
仅跟目录
有
)
、已删除目录项、长文件名目录项等。目录项中原来在
DOS
下保留未用的
10
个字节都有了新的定义,全部
32
字
节的定义如下:
(1)
0--
7
字节
文件正名。
(2)
8--
10
字节
文件扩展名。
(3)
11
字节
文
件属性,按二进制位定义,最高两位保留未用,
0
至
5
位分别是只读位、隐藏位、系统位、卷标位、子
目录位、归档位。
(4)
11--
13
字节
仅长文件名目录项用,用来
存储其对应的短文件名目录项的文件名字节校验和等。
(5)
13--
15
字节
24
位二进制的文件建立时间,其中的高
5
位为小时,次
6
位为分钟。
(6)
16--
17
字节
16
位二进制的文件建立日期,其中的高
7
位为相对于
1980
年的年份值,次
4
位为月份,后
5
位为月
内日期。
p>
(7)
18--19
字节
< br>16
位二进制的文件最新访问日期,定义同
(6)
。
(8)
20--
21
字节
起始簇号的高
16
位。
(9)
22--
23
字节
16
位二进制的文件最新修改时间,其中的高
5
位为小时,次
p>
6
位为分钟,后
5
位的二倍为秒数。
(10)24--25
字节
16
位二进制的文件最新修改日期,定义同
(6
)
。
(11)26--27
字节
起始簇号的低
16
位。
(12)28--
31
字节
32
位的文件字节长度。
其中第
(4)
至
(8)
项为以后陆续定义的。
<
/p>
对于子目录项,其
(12)
为零;已删除
目录项的首字节值为
E5H
。在可以使
用长文件名的
FAT32
系统中,文件目录项保存该文件的短文
件名,长文件名用若干个长文件名目录项保存,长文件名
目录项倒序排在文件短目录项前
面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是
长文
件名的第几项
,11
字节一般为
0FH
,
12
字节指明类型,
13
字节为校验和,
26--
27
字节为零。
修复被
CIH
破坏的硬盘一例(
FAT32
)
1)
用无毒系统
Windows
9X
软盘启动计算机,进入
CMOS
SETUP
,将系统日期修改为
26<
/p>
日以前。
2)
用软盘重新引导计算机,运行
FDISK
/MBR
,清除主引导记录
MBR
代码区。
3)
运行
DEBUG
,输入以下程序:
-a
XXXX:0100
mov
ax,201
XXXX:0103
mov
bx,1000
XXXX:0106
mov
cx,1
XXXX:0109
mov
dx,80
XXXX:010C
int13
XXXX:010E
int3
XXXX:010F
[
回车
]
-g
....(
显示寄存器结果,略去
)
-f11BE
11FD
00
-f11FE
11FF
55
AA
-a100
XXXX:0100
mov
ax,301
XXXX:0103
[
回车
]
-g=100
......
-q
以上程序清空分区表。或者,直接运行
DISKEDIT
,选择物理驱动器
HARD
DISK
1
,按
Alt-P
选择物理扇区,
Side
0
,
Cylinder
0
,
Sector
< br>1
,用
00
清空偏移
01BE
至
01FD
,并
在扇区最
后输入
55
,
AA
< br>。在启动
DISKEDIT
后,系统自动设为
READ
ONLY
,从菜单中选
TOOLS-]CONFIGURATION
,
清除
READ
ONLY
标记并回车,就可以对硬盘进行写操作了。在写操作之后,按
Ctrl-W<
/p>
存盘。
4)
清空分区表后,用
NDD
重建原分区。如果硬盘上还有除
C
以外的逻辑
分区,可以一齐找回。
5)
为重建逻辑驱动器
C
,下面将计算
FAT
区:
a)
Windows
9X
操作系统的逻辑
驱动器
C
的
BOOT
< br>区在
Cylinder
0
,
Side
1
,
Sector
1
。
b)
用
D
ISKEDIT
的
FIND
功能寻找<
/p>
ASC
II
字符串:
COMMAND
COM
(
COMMAND
与
COM
中间有一个空格,
ASC
II
< br>值为
20
,找寻
FDT
表中
的原因是,根目录中一
般都有此文件,如果你的计算机里该文件不在根目录,就将上述字符串改为根目录中的其他文件名,如
或
MS
。但要注意文件名和后缀名之间要有空格,总长度为
11
字节)
c)
找到后,用
PgUp
向前翻页,直到上一扇区尾部出现连续的
00
(一般说,没见过硬盘的最后几十
K
还有存放数据的情况,否则,
Windows
9X
的虚拟内存恐怕就没法建立了,)
d)
记
录该扇区的
Cylinder
,
Sid
e
,
Sector
值。
——
ROOT
e)
寻找
FAT2
< br>的开始扇区,其特点是:
(
要选中
“Search
at
specified
sector
offset:[0...]”)
扇区偏移
0000H
处为
F8
FF
FF
;
FAT16
扇区偏移
0000H
处为
F8
FF
FF
FF
;
FAT32
找到后,确认上一扇区尾部出现连续的
00
,则该扇区为
FAT2
头部。<
/p>
(
FAT1
应与
FAT2
内容相同,但其头部数个扇区已被
CIH
破坏)
f)
记录该扇区的
Cylinder
,
< br>Side
,
Sector
值。<
/p>
——
FAT2
g)
计算
FAT2
的扇区数,用以下公式,其中,尾标
0
为
FAT2
地址,尾标
1
p>
为
ROOT
地址:
扇区数
=
(Cylinder1-Cylinder0)*Sectors/Cylinder+(Side1-Side
0)*Sides
*Sectors/Cylinder+Sector1-Sector0
说明:
S
ectors/Cylinder
为每道扇区数,
Sides<
/p>
为硬盘的总磁头数。
一个简单的查看方法是:
在
DISKEDIT
中按下
[En
d]
键,屏幕右下角的
Sector
值
即为每道扇区数,而
Side
值
+1<
/p>
即为总磁头数。
FAT1
扇区数与
FAT2
相同。
h)
计算出
FAT1
头部地址,并记录。
——
F
AT1
i)
< br>在
DISKEDIT
中按
Alt
-P
重选
Physical
Sect
or
,起始地址为步骤
e)
记录的地址
。扇区数为步骤
g)
计算出的扇区数。
按
Alt-W
将选中的扇区(即
FAT
2
)存至
FAT1
开始的地址(步骤<
/p>
h)
计算出的
FAT1
< br>头部)。
j)
至此,
FAT2-]FAT1<
/p>
的恢复工作宣告结束。
6)
下面恢复主引导记录中的标志:
用
DISKEDIT
选择
Cylinder
0
,
Side
0
,
Sector
< br>1
,将此扇区尾部偏移为
01C2H
地址的标志修复。如果为
FAT16
系
统,应为
06H
;如果为
FAT3
2
系统,应为
0CH
。均表示
PRI-DOS
分区。
7)
恢
复
BOOT
扇区,位置在
Cylind
er
0
,
Side
1
,
Sector
< br>1
,以下用
0-1-1
表示,以
此类推。
a)
在步骤
5)
中,已计算出了
FAT1
的起始位置。在
< br>FAT16
系统中,
FAT1
一
般自
0-1-2
开始;在
FAT32<
/p>
系统中,
FA
T1
一般自
0-1-33
开始。如果你的系统与此不同,以实际计
算出的数值为准。
b)
将
FAT1
的起始扇区号减
1
,就是系统的隐含扇区数,一般
FAT16
为
1
,
p>
FAT32
为
32
。
c)
如为
FAT16
系统,跳过本步骤,至
d)
。
选择一台无毒的
FAT32
系统作参考,将
0-1-1
至
< br>FAT1
前面的隐含扇区保存到
FAT16/FAT32
文件系统介绍
本文旨在给通用
PC
或数码相机用户介绍文件分配表
(FAT)
和簇的概念
和意义,并介绍
12
位、
16
位和
32
位
FAT
p>
的特
点和不同应用以及未来的发展趋势。
在开发最初的个人计算机时,人们用
180KB
的软磁盘,不久便采用
360KB
< br>的双面磁盘。为了组织这些存储设备上数
据,
最初的
p>
DOS
系统开发者设计一个表来指示哪个扇区属于哪些文件,
以及哪些扇区空闲,
这样操作系统可以最大限
度地利用这些磁盘空间,使文件可以存储在不连续的扇区上。文件数据可以分散有组织地存储在磁盘的不同扇区,
这
称为文件分割。
由于在
360KB
磁盘上有
7
20
个扇区,
因此,
表要做得足够大以
能标识每个扇区,
并预留一些空间以备未来采用更大存
储空间的
磁盘。表中的每个记录只用一个字节,这样只能有
256
个可能
值,不能满足这么多扇区的需要。如果采用两
个字节则最多可以有
65,536
个记录,但这样将浪费磁盘空间。因此,综合这两种情况,决定采用
p>
12
位作为表记录的
长度来跟踪磁盘上扇区
的利用情况。采用
12
位长度可以有
4
,096
个可能值,如果每个表记录对应一个
512
字节扇区,
那么这个
FAT
表可以处理高达
2MB
存储容量的存储设备。
但要从这么长的表中得到需要的信息将花太长时间
,因此,人们引入了簇
(cluster)
的概念。这使设备的
最小存储单元从
单个扇区增加到固定数量扇区,这些固定数量扇区称为簇。对于
180KB
磁盘,簇的大小为两个扇区
(1,0
24
字节
)
。因
此,如果要保存一个
500
字节的文件,将占用磁盘上
1,024
个字节。这看上去会浪费,但实际上簇的概念在存储大文<
/p>
件时效果很好,而实际上多数系统和用户文件都是较大的。表
1<
/p>
列出
FAT
所能代表簇的最大数字。
p>
簇的概念
磁盘上最小可寻址存储单元称为扇区,通常每个扇区为
512
个字节
(
或字
符
)
。由于多数文件
比扇区大得多,因
此如果对一个文件分配最小的存储空间,将使存储器能存储更多数据,这
个最小存储空间
即称为簇。根据存储设备
(
磁盘、闪卡和硬盘
< br>)
的容量,簇的大小可以不同以
使存储空间得到最有效的
应用。在早期的
360KB
磁盘上,簇大小为
< br>2
个扇区
(1,024
字节
p>
)
;
第一批的
10
MB
硬盘的簇大小增加到
8
个扇区
p>
(4,096
字节
)
;
现在的小型闪存设备上的典型簇大小是
8KB
或
16KB
。
2GB
以上的硬盘驱动器有
32KB
的簇。表
2
列出在给定簇大小和
FAT
类型的最大分区。
为什么
采用簇呢?通常,存储设备上的空间分配是随机的。在一个新存储设备上,文件连续存储,并知道开始和结束
p>
扇区和长度,在读取时可以根据这些信息重新得到所存储的文件。但是,过一段时间后,有些
文件将会被擦掉,同时
可能有些文件增大,这时不能保证同一个文件存储在连续的一系列
扇区里。因此,需要一种方法来辨别哪个扇区被分
配到某些文件,以及还有哪些扇区可用
。这时可以采用一种表结构来实现这种功能,使每个扇区对应一个表记录。然
而,由于大
多数文件存储在多个扇区,一个记录对应一个扇区的作法将造成一些浪费。因此,采用每个记录代表一个
固定数量扇区将更有意义,这个固定扇区被称为簇。
给文件分配扇区
如果给一个文件
(
< br>簇
)
分配的最小存储空间大小取决于保存该文件的介质类
型,
我们必须有一种方法来标明某个簇是否可
用或者已分配给一
个文件。如果已将一个簇分配给一个文件,我们必须知道这个簇分配给文件的哪部分了,这就是通
过一个链接列表来实现,即文件分配表
(FAT)
。<
/p>
FAT
仅仅是一个包含
N
个整数的列表,
N
是存储设备上最大的簇数。表
中每个记录的位数称为
FAT
大小,
是
12
、
16
或
32
三个数之一。
早
期的存储设备使用
12
位
(1.5
p>
字节
)FAT
以减少浪费,
12
位可以提供
4,096
个
簇。假定一个簇具有两个扇区
(1,024
字节
)
,则代表存储设备将近有
4.2MB
存储容量。更大的
簇就能实现更大的存储空间,但是在存储较小文件时,由于簇
没有完全装满而将造成存储空间的浪费。
< br>操作系统根据表现整个磁盘空间所需要的簇数量来确定使用多大的
FAT
。如果磁盘要求的簇少于
4,096
个,则可以
使
用
12
位
F
AT
;如果小于
65,536
但大于<
/p>
4,096
个簇,就使用
16
位
FAT
;否则,必须采用
32
位
FAT
。在存储设备的第
p>
一个扇区内以数据列表的形式定义了簇的大小,该数据列表被称为
B
IOS
参数块。在系统引导期间操作系统可以读该
扇区,这样就
能设定如何从存储设备中读取文件。
FAT
是一种链接列表,链接列表中相关记录之间互相指向对方。在存储设备目录中包
含了
FAT
表名称、该文件大小和
分配
给该文件的第一个簇的编号。存储该文件的第一个簇所对应的表记录中包含了该文件的第二个簇号码。同样,第<
/p>
二个簇对应的记录里包含有存储该文件的第三个簇编号,以此类推直到该文件的最后一个簇
。在新存储设备上存储的
第一个文件将保存在连续的簇内,因此第一个簇会指向第二个,
第二个指向第三个,如此类推。
实
际上,第一个簇
(
簇
0)
总是保留用于存储操作系统信息、根目录和两份
FAT
。系统建立两份
FAT
,其目的是在当修改
< br>其中一个时如果系统发生中断
(
崩溃
)
,另一份还完整无缺,恢复程序会检查
FAT
并使用这份
FAT
来恢复。
FAT
的作用
那么
FAT
的重要意义是什么呢?当前的闪存设备使用
12
位
FAT
或
16
位
FAT
,数码相机和
MP3
播放器被设计成利用
这种表结构进行读写。
随着
4GB
微硬盘逐渐进入实际应用,
16
位
FAT
将不能够满足这种硬盘的需求,
因为
16
位
FAT
只能实现
65,536
个簇,
对于最大的
32K
字节的簇而言只能提供最大
2.14GB
的容量。
对于更大容量存储设备有
两个解
决方案,即将
FAT
增加到
p>
32
位或者将驱动器分成多个区。
簇的概念
存储器分区
一个存储设备可以分成多个区
(
其
中
每个区看起来像单独的存储设
备
)
,每
个区有自己的目录和
FAT
。
大多数工
程师在自己的
PC
硬盘上
已经体验过多
分区,
通常仅有一个
硬盘的计算机具有
“C:”
和
“D:”
盘。
多
数
< br>便
携
式
设
备
如
数
码
相
机
和
MP3
播
放器都没有设计成采用存储器分区,而
PDA
是真正的计算机,
其文件系统程序是按分区来设计的。以数码相
机市场为例,
存储
器必须只有单个分区才能兼容。
对用户来说,
每个区有自己的逻
辑驱动器字母,
通常指定为驱动器
“C:”
、
“D:”
和
< br>“E:”
等。
FAT
兼容性
在一个兼容
FAT32
的主机里可以无缝使用
FAT16
存储设备,因为支
持
FAT32
的操作系统也支持
FAT
16
。唯一需要注
意的是在对
FAT1
6
设备重新格式化的时候,有些兼容
FAT32
的主机
(
如一些
PDA)
p>
在没有特别选择下会默认为
FAT32
格式
。第一次对存储设备格式化时,必须认真观察提示以保证用的是
FAT16
格式,除非你的相机
/PDA/MP3
播放器支
p>
持
FAT32
。
在一个兼容
FAT16
的主机里使用
FAT32
设备会有几个可能结果,最
普遍的是在显示屏上显示的
“CF
错误
”
指示。如果
4GB
的存储器在只兼容
FAT16
的主机里格式化,将可能不出现错误提示,但显示的
容量将为
2G
。通常,不同的程序
设计
工程师会采用不同的方法来处理这个问题,对于这个特例,其结果不是总可预测的。如果
4GB
设备是用
FAT16
来格式化,
就能在兼容
FAT32
的主机里对这个设备重新格式化,只要在
格式化期间规定了
FAT32
。这样,用户可以在
兼容
FAT32
的主机里恢复整个
< br>4GB
容量。
本文小结
由于相机和
MP3
播放器在处理多分区上有困难,
FAT32
是提供它们超过
2.14GB
存储容量的唯一途径。所以,有些公
司推出新的
4
GB
微驱动器在出厂前将采用
FAT32
格式化。为实现与更多设备的兼容,
2GB
的微驱动器将继续
使用
FAT16
,
其他容量超过
2GB
的
CF
设备必
须采用
FAT32
。
目前,
有几家公司已经在其相机和
MP3
播放器中支持<
/p>
FAT32
,
现在多数有
CF
插槽的
PDA
都支持
p>
FAT32
。如果你计划要购买一台新的数码相机或
MP3
播放器,最好能验证它是否
支持
FAT32
,以便将来与最新的
CF
< br>存储设备兼容。
FAT32
文件系统简介
Windows95
OSR2
和
Windows
98
开始支持
FAT32
文件系统,
它是对早期
DOS
的
FAT16
文件系统
的增强,由于文件系统的核心
p>
--
文件分配表
FAT
由
16
位扩充为
32
位,所以称为
FAT32
文件系
统。在一逻辑盘(硬盘的一分区)超过
512
兆字节时使用这种格式,会更高效地存储数
< br>据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此
< br>
是使用大容量硬盘存储文件的极有效的系统。本人对
W
indows 98
下的
FAT32
文件系统做了
分析实验,总体上与<
/p>
FAT16
文件系统变化不大,现将有关变化部分简介如下:
p>
(一)
FAT32
文件系统将逻辑盘的空间划分为三部分,依次是引导区(
BOOT
区)
、文
件分配表区(<
/p>
FAT
区)
、数据区(
< br>DATA
区)
。引导区和文件分配表区又合称为系统区。
p>
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每
簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇区。
而
FAT16
文件系统的
引导区只占用一个扇区,没有保留扇区。
p>
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间
(簇链)及空闲空间的管理都是通过
FAT
p>
实现的,
FAT
如此重要,保存两个以便第
一个损坏
时,还有第二个可用。文件系统对数据区的存储空间
是按簇进行划分和管理的,簇是空间
分配和回收的基本单位,
即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余
的空间就不再使用,而是浪费掉了。
从统计学上讲,平均每个文件浪费
0
.5
簇的空间,簇越大,存储文件时空间浪费越多,
利用率越低。因此,簇的大小决定了该盘数据区的利用率。
FAT16<
/p>
系统簇号用
16
位二进制数
表示,从
0002H
到<
/p>
FFEFH
个可用簇号
(FFF0H
p>
到
FFFFH
另有定义
,
用来表示坏簇,文件结束簇
等
)
,允许每一逻辑盘的数据区最多不超过
FFEDH(65518)
个簇。
FAT32
系统簇号改用
32
位二
p>
进制数表示,大致从
00000002H
到
FFFFFEFFH
个可用簇号。
FA
T
表按顺序依次记录了该盘各簇
的使用情况,是一种位示图法。
每簇的使用情况用
32
位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入
特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的< p>
值为
FFFFFF0FH
,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇
号,这样,正好将文件占用的各簇构成一个簇链,保存在
FAT
表中。
0000000H
、
00000001H
两簇号不使用,其对应的两个
DWOR
D
位置
(FAT
表开头的
8
个字节
)
用来存放该盘介
质类型编
号。
FAT
表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。
(四)
FAT32
系统一簇对应
8
个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘
容量上限为
16TB(16384GB)
,容量大于<
/p>
16TB
时,可以用一簇对应
16
个扇区,依此类推。
FAT16
系统在逻辑盘容量介于
128MB
到
256MB
时,一簇对应
8
个扇区,容量介于
256MB
到
512
MB
时,一簇对应
16
个扇区,容量
介于
512MB
到
1GB
时,一簇对应
32
个扇区,容量介于
1GB
到
2GB
时,一簇对
应
32
个扇区,超出
2GB
的部分无法使用。显然,对于容量大于
512MB
的逻辑盘,
采用
FAT32
的簇比采用
FAT16
的簇小很多,大大减少了
空间的浪费。
< br>但是,对于容量小于
512MB
的盘,采用
FAT32
虽然一簇
8
个扇
区,比使用
FAT16
一簇
16
个
扇区,簇有所减小,但
< br>FAT32
的
FAT
表较大,占
用空间较多,总数据区被减少,两者相抵,
实际并不能增加有
效存储空间,所以微软建议对小于
512M
的逻辑盘不使用
p>
FAT32
。
另外,对于使用
FAT16
文件系统的用户提一建议,硬盘分区时,不要将分区
(
< br>逻辑盘
)
容
< br>量正好设为某一区间的下限,例:将一逻辑盘容量设为
1100M(
稍大于
1024M)
,则使用时其
< br>
有效存储容量比分区为
950M
的一般还少,因其簇大一倍,浪费的空间较多。还有,使用
FDISK
等对分区指定容量时,由于对
1MB
的定义不一样
(
标准的二进制的
1MB
为
1048576B
,有
p>
的系统将
1MB
理解为
1000000B
,
1000K
B
等
),
及每个分区需从新磁道开始等
因素,实际分配的
容量可能稍大于指定的容量,亦需注意掌握。
(五)
根目录区(
ROOT
区)不再是固定区域、固定大小,可看作是
数据区的一部分。
因为根目录已改为根目录文件,采用与子目
录文件相同的管理方式,一般情况下从第二簇
开始使用,大小
视需要增加,因此根目录下的文件数目不再受最多
512
的限制
。
FAT16
文件
< br>系统的根目录区(
ROOT
区)是固定区域、固定大小的
,是从
FAT
区之后紧接着的
32
p>
个扇区,
最多保存
512
个目录项,作为系统区的一部分。
(六)
目录区中的目录项变化较多,一个目录项仍占
32
字节,可以是
文件目录项、子
目录项、卷标项
(<
/p>
仅跟目录有
)
、已删除目录项、长文件名
目录项等。目录项中原来在
DOS
下
保留未用的
10
个字节都有了新的定义
,全部
32
字节的定义如下:
(1) 0--
7
字节
文件正名。
(2) 8--10
字节
文件扩展名。
(3) 11
字节
< br>文件属性,按二进制位定义,最高两位保留未用,
0
至<
/p>
5
位分别是只读位、隐藏
位、系统位、卷标位、子目录位、归档位。
(4) 11--
13
字节
仅长文件名目录项用,用来
存储其对应的短文件名目录项的文件名字节校
验和等。
(5) 13--15
字节
24
位二进制的文件建立时间,其中的高
5
p>
位为小时,次
6
位为分钟。
(6) 16--
17
字节
16
位二进制的文件建立日期,其中的高
7
位为相对于
1980
年的年份值,次
4
位为月份,后
5
位为月内日期。
(7) 18--
19
字节
16
位二进制的文件最新访问日期,定义同
(6)
。
(8) 20--
21
字节
起始簇号的高
16
位。
(9) 22
--23
字节
16
< br>位二进制的文件最新修改时间,其中的高
5
位为小时,次
6
位为分钟,后
5
位的二倍为秒数。
(10)24--
25
字节
16
位二进制的文件最新修改日期,定义同
(6)
。
(11)26--
27
字节
起始簇号的低
16
位。
(12)28--31
字节
32
位的文件字节长度。
p>
其中第
(4)
至
(
8)
项为以后陆续定义的。
对于子目
录项,其
(12)
为零;已删除目录项的
首字节值为
E5H
。在可以使用长
文件名的
FAT32
系统中,文件目录项保存该文件的短文件<
/p>
名,长文件名用若干个长文件名目录项保存,长文件名目录项倒
序排在文件短目录项前
面,全部是采用双字节内码保存的,每
一项最多保存十三个字符内码,首字节指明是长文
件名的第几
项
,11
字节一般为
0FH
,
12
字节指明类型,
1
3
字节为校验和,
26--
27
字节为零。
(七)以前版本的
Windows
和
DOS
与
FAT32
不兼容,不能识别
FAT
32
分区,有些程序
也依赖于
FAT16
文件系统,不能和
FAT32
驱动器一道工作。将硬盘转换为
FAT32
,就不
能再用双引导运行以前版本的
Windows
(
Windows
95 [Version
4.00.950]
、
Windows NT
3.x
、
Windows NT
4.0
和
Windows
3.x
)
。
NTFS
、
FAT
、
FAT16
、
FAT32
的区别
(2010-01-27 19:10:44)
FAT16
:
FAT16
就是
FAT
,
以前用的
DOS
、
Windows 95
都使用
FAT16
文件系统,现在常用的
Windows 98/2000/XP
等系
统均支持
p>
FAT16
文件系统。它最大可以管理大到
2GB
的分区,但每个分区最多只能有
65525
个簇(簇是磁盘空间的配
置单位)
。随着硬盘或分区
容量的增大,每个簇所占的空间将越来越大,从而导致硬盘空间的浪费。
FAT32
:随着大容量硬盘的出现,从
Windo
ws 98
开始,
FAT32
开始流行
。它是
FAT16
的增强版本,可以支持大到
< br>2TB
(
2048GB)
的分区
。
FAT32
使用的簇比
FAT16<
/p>
小,从而有效地节约了硬盘空间。
FAT32
是
FAT16
文件系统的派生,比
FAT16
支持更小的簇和更大的分区,这就使得
FAT32
分区的空间分配更有效率。
FAT32
主要应用于
Windows 98
及后
续
Windows
系统(
实际从未正式发布的
Windows
97
,即
OSR2
就开始支持了)
,它
可以增强磁盘性能并增加可用磁盘
空间,同时也支持长文件名。
NTFS
(
New
Technology File
System
)
:微软
Windows
NT
内核的系列操作系统支持的、一个特别为网络和磁盘配额、文
件加密等管理安全特性设计的磁盘格式。它与旧的
FAT
文件
系统的主要区别是
NTFS
支持元数据(
metadata
)
,并且可
以利用
先进的数据结构提供更好的性能、稳定性和磁盘的利用率。随着以
NT
< br>为内核的
Windows
2000/XP
的普及,很
多个人用户开始用到了
NTFS
。
NTFS
也是以簇为单位来存储数据文件,但
NTFS
中簇的大小并不依赖于磁盘或分区的
< br>大小。簇尺寸的缩小不但降低了磁盘空间的浪费,还减少了产生磁盘碎片的可能。
NTFS
支持文件加密管理功能,可为
用户提供更高层次的安全
保证。
NTFS
有三个版本:
在
NT 3.51
和
NT 4
< br>中的
1.2
版,
Windows
2000
中的
3.0
版和
Windows
XP
中的
3.1
版。这些版本有时被提及为
4.0
版、
5.0
版和
5.1
版。更新的版本添加了额外的特性,比如
Windows
< br>2000
引入了配额。在兼容性方面,
Windows<
/p>
的
95/98/98SE
和
Me
版都不能识别
NTFS
文件系统。
下面介绍每个文件系统与各种操作系统的兼容性
:
NTFS:
运行
Windows XP
或
Windows 2000
的计算机可以访问
NTFS
分区上的文件。运行带有
Service Pack
4
(或更
高版本)的
Windows NT 4.0
的计算机可能可以访问某些文件。其它操作系统则无法访问。
FAT:
可以通过
MS-DOS
、所有版本的
Windows
、
Windows
NT
、
Windows
2000
、
Windows XP
和
OS/2
进行访问。
FAT32:
只能通过
Windows 95
OSR2
、
Windows
98
、
Windows
Millennium Edition
、
Windows
2000
和
Windows XP
进行
访问。
下面是每个文件系统支持的磁盘和文件大小
:
NTFS:
推荐的最小容量大约为
10 MB
,也可使用大于
2 TB
的卷。无法在软盘上使用。文件大小只受卷的容量限制。
FAT:
容量可从软盘大小到
4
GB
。不支持域。最大文件大小为
2
GB
。
FAT32:
容量从
512 MB
到
2 TB
。在
Windows XP
中,只能格式化最多达
32 GB
的
FAT32
卷。不支持域。最大文件
大小为
4
GB
。
FAT32
与
NTFS
的区别
在推出
FAT32<
/p>
文件系统之前,通常
PC
机使用的文件系
统是
FAT16
。像基于
MS-
DOS
,
Win
95
等系统都采用了
FAT16
文件系统。在
Win 9X
下,
FAT16
支持的分区最大为
2GB
。我们知道计算机将信息保存在硬盘
上称为
“
簇
”
的区域内。使
用的簇越小,保存信息的效率就越高。在
FAT1
6
的情况下,分区越大簇就相应的要增大,存储效率就越低,势必造成
< br>存储空间的浪费。并且随着计算机硬件和应用的不断提高,
FAT16
文件系统已不能很好地适应系统的要求。在这种情
况下,推出了增强的文件
系统
FAT32
。同
FAT16
相比,
FAT32
主要具有以下特点:
1.
同
FAT1
6
相比
FAT32
最大的优点是可以支
持的磁盘大小达到
2TB
(
2047G
B
)
,但是不能支持小于
512MB<
/p>
的分区。
基于
FAT32
的
Win 2000
可以支持分区最大为
32GB
;而基于
FAT16
的
Win 2000
支持的分区最大为
4GB
。
< br>
2.
由于采用了更小的簇,
FAT32
文件系统可以更有效率地保存信息。
如两个分区大小
都为
2GB
,
一个分区采用了
FAT16
文件系统,另一个分区采用了
FAT
32
文件系统。
采用
FAT16
的分区的簇大小为
32KB
,
而
FAT32
分区的簇只有
4
KB
的
大小。这样
FAT32
就比
FAT16
的存储效率要高很多,通常情况
下可以提高
15%
。
3. FAT32
文件系统可以重新定位根目录和使用
FAT
的备份副本。另外
FAT32
分区的启动记录被包含在一个含有关键数
据的结构中,减少了计算机系统崩
溃的可能性。
NTFS
文件系统
< br>NTFS
文件系统是一个基于安全性的文件系统,
是
p>
Windows NT
所采用的独特的文件系统结构,
它是建立在保护文件和
目录数据基础上,同时照顾节省存储资源、减少磁盘占
用量的一种先进的文件系统。使用非常广泛的
Windows NT
4.0
采用的就是
NTFS 4.0
文
件系统,
相信它所带来的强大的系统安全性一定给广大用户留下了深刻的印象。
Win 2000
采用
了更新版本的
NTFS
文件系统
??NTFS
5.0
,它的推出使得用户不但可以像
Win 9X
那样方便快捷地操作和管理计算机,
同时也可享受到
NTFS
所带来的系统安全性。
NTFS
5.0
的特点主要体现在以下几个方面:
1.
NTFS
可以支持的分区
(
如果采用动态磁盘则称为卷
)
大小可以达到
2TB
。而
W
in
2000
中的
FAT32
支持分区的大小最
大为
32GB
。
2. NTFS
是一个
可恢复的文件系统。在
NTFS
分区上用户很少需要运行磁盘修
复程序。
NTFS
通过使用标准的事物处理
日志和恢复技术来保证分区的一致性。
发生系统失败事件时,
NTFS
使用日志文件和检查点信息自动恢复文件系统的一
致
性。
3.
NTFS
支持对分区、文件夹和文件的压缩。任何基于
Windows
< br>的应用程序对
NTFS
分区上的压缩文件进行读写时不<
/p>
需要事先由其他程序进行解压缩,当对文件进行读取时
,
文件将自动进行解压缩;文件关闭或保存时会自动对文件进行
压缩。
p>
4.
NTFS
采用了更小的簇
,
可以更有效率地管理磁盘空间。在
Win
2000
的
FA
T32
文件系统的情况下
,
分区大小在
2GB
~
8GB
时簇的大小为
4KB
;
分区大小在<
/p>
8GB
~
16GB
时簇的大小为
8KB
;
分区大小在<
/p>
16GB
~
32GB
时
,
簇的大小则达到了
16KB<
/p>
。而
Win
2000
< br>的
NTFS
文件系统,当分区的大小在
< br>2GB
以下时
,
簇的大小都比相
应的
FAT32
簇小
;
当分区的大小
在
2GB
以上时
(2GB
~
2TB),
簇的大小都为
4KB
。相比之下,
NTFS
可以比
FAT32
更有效
地管理磁盘空间,最大限度地
避免了磁盘空间的浪费。
5.
在
NTFS
分区上
,
可以为共享资源、文件夹以及文件设置访问许可权
限。许可的设置包括两方面的内容:一是允许哪
些组或用户对文件夹、文件和共享资源进
行访问;二是获得访问许可的组或用户可以进行什么级别的访问。访问许可
权限的设置不
但适用于本地计算机的用户
,
同样也应用于通过网络的共享文件
夹对文件进行访问的网络用户。与
FAT32
文件系统下对文件
夹或文件进行访问相比,安全性要高得多。另外
,
在采用
NTFS
格式的
Win
2000
中
,
应用审核策略可
p>
以对文件夹、文件以及活动目录对象进行审核,审核结果记录在安全日志中,通过安全日志就
可以查看哪些组或用户
对文件夹、文件或活动目录对象进行了什么级别的操作,从而发现
系统可能面临的非法访问
,
通过采取相应的措施,将
这种安全隐患减到最低。这些在
FAT32
文件系
统下
,
是不能实现的。
6.
在
Win 2000
的
NTFS
文件系统下可以进行磁盘配额管理。<
/p>
磁盘配额就是管理员可以为用户所能使用的磁盘空间进行
配额限制
,每一用户只能使用最大配额范围内的磁盘空间。设置磁盘配额后,可以对每一个用户的磁盘使用情况进行
跟踪和控制,通过监测可以标识出超过配额报警阈值和配额限制的用户,从而采取相应的措施。
磁盘配额管理功能的
提供,使得管理员可以方便合理地为用户分配存储资源,避免由于磁
盘空间使用的失控可能造成的系统崩溃,提高了
系统的安全性。
7. NTFS
使用一个
“
变更
”
日志来跟踪记录文件所发生的变更。
小提示
(
选取
p>
FAT32
和
NTFS
的建议
)
在系统的安全性方面,
NTFS
文件系统具有很多
FAT32
文件系统所不具备的特点,而且基于
NTFS
的
Win 2000
运行要
快于基于
FAT32
的
Win
2000
;而在与
Win 9X
的兼容
性方面,
FAT32
优于
NTFS
p>
。所以在决定
Win 2000
中采用什么
样
的文件系统时应从以下几点出发:
1.
计算机是单一的
Win
2000
系统,还是采用多启动的
Win
2000
系统;
2.
本地安装的磁盘的个数和容量;
3.
是否有安全性方面的考虑等。
基于以上的考虑,如果要在
Win 2000
< br>中使用大于
32GB
的分区的话,那么只能选择
NTFS
格式。如果计算机作为单机
使用,不需
要考虑安全性方面的问题,更多地注重与
Win
9X
的兼容性,那么
FAT32
是最好的选择。如果
计算机作为
网络工作站或更多的追求系统的安全性,而且可以在单一的
< br>Win
2000
模式下运行,强烈建议所有的分区都采
用
NTFS
格式;
如果要兼容以前的应
用,
需要安装
Win 9X
或其它的操
作系统,
建议做成多启动系统,
这就需要两个以上的分区,
p>
一个分区采用
NTFS
格式,
另外的分区采用
FAT32
格式,
< br>同时为了获得最快的运行速度建议将
Win 2000
的
系统文件放
置在
NTFS
分区上,其它
的个人文件则放置在
FAT32
分区中
别让文件系统迷糊你
——
NTFS
p>
、
FAT32
解析
经常使用电脑的用户一定经历过重装系统、重新分区、分区文件的一些转换这些操作,而
其中一定会遇到
NTFS
、
FAT32
问题,若不正确的选择或错误的分区,则会导致某些文件操作无法完成或出现兼容性的问
题,随着操作系统的
不断更新,
FAT32
逐渐走出历史的舞台,但许多刚接触电脑的用户一定常被这两种分区弄迷糊,今天小编就对
< br>NTFS
、
FAT32
两种形式
进行详细介绍,彻底将这两种形式存在的各种迷团揭开。
NT
FS
、
FAT32
解析:
NTFS
:
NTFS
全称为:
New
Technology File
System
,
是
Windows
NT
操作环境和
Windows NT
高级服务器网络操作系统环
境的文件系统,用来代替
FAT
p>
文件系统,
NTFS
通过可恢复能力
(
事件跟踪
)
和热定
位的容错特征实现,增加功能性的一
个平台,并增加对
POSI
X
需求的支持,消除
FAT
和
HPFS
文件系统中的限制。
NTFS
提供长文件名、
数据保护和恢复,
并通过目录和文件许可实现安全性,
NTFS
支持
大硬盘和在多个硬盘上存
储文件,
提供内置安全性特征,
控制文件的隶属关系和访问,
从
DOS
或其他操作系统上不能直接访问
NTFS<
/p>
分区上的
文件。
FAT
32
:
FAT32
< br>实际上是文件分区表采取的一种形式,该标准的是相对于
FAT16
而言的,而最早的
FAT32
是在
< br>Windows95OSR2
中第一次出现的,
FAT3
2
能大限度的节约磁盘空间。在推出
FAT32
文件系统之前,通常
PC
机使用的
文件系统是
FAT16
,如基于
M
S-DOS
,
Win
95
等系统都采用了
FAT16
文件系统,在
Win
9X
下,
FA
T16
支持的分区最
大为
2GB
,文件在磁盘上是以簇的方式存放的,但簇里仅能存放一个文件,
FA
T32
的优势就在于其能够将簇的大小控
制到最小,使用的簇越
小,这样在相同大小的盘符内
FAT32
的形式则能存放更多的
文件。
相比
FAT16
,
FAT32
有如下特
点:
1.
同
FAT16
相比
FAT32
最大的优点
是可以支持的磁盘大小达到
2TB
(
2
048GB
)
,但是不能支持小于
51
2MB
的分
区。
2.
由于采用了更小的簇,
FAT32
文件系统可以更有效率地保存信息。
32
文件系统可以重新定位根目录和使用
FAT
的备份副本
,分区的启动记录被包含在一个含有关键数据的结
构中,减少了系统崩溃的可能性,保持
系统的稳定运行。
NTFS
相对
< br>FAT
的优点:
1.
具备错误预警系统
在
NTFS
分区中,最开始的
16
个扇区是分区引导扇区,
其中保存着分区引导代码,接着就是主文件表
(Master File
p>
Table
,简称
MFT)
,如果其所在的磁盘扇区恰好出现损坏,
NTFS
文件
系统会比较智能地将
MFT
换到硬盘的其他扇区,
保证了文件系统的正常使用,确保了
Windows
的稳定运行,而以往的
FAT32
则只能固定在分区引导扇区的
后面,一旦
遇到扇区损坏,则会造成整个文件系统的瘫痪。
2.
高效读取速度
< br>对比
FAT32
,
NTFS
p>
在文件的读取速度上更为高效,在
NTFS
文件系统中的文件属性可以分成常驻属性和非常驻
属性两类
:
①常驻属性
NTFS
中的常驻属性直接保存在
MFT
中,如文件名和相关时
间信息都属于常驻属性。
②非常驻属性
非常驻属性保存在
p>
MFT
之外,使用一种复杂的索引方式来进行指示,导致读取速度相
对较慢。
系统中的多数常用文件都为
MFT
,熟悉系统的用户都应该知道
MFT
是随系统启动就会载入到内存中的,因此已
处于缓存状态的
MFT
文件则能高效的被用户访问,
NTFS
< br>的高效性也就得于此。
3.
磁盘修复功能
< br>NTFS
采用一种可修复的系统,可以对硬盘上的逻辑错误和物理错误进行自动侦
测和修复,在
FAT16
和
FAT32
时
代,用户需要借助
Scandisk
这个程序来标记磁盘上的坏扇区,但当发现错误时,数据往往已经被写在了坏的扇区上了
,
损失已经造成。
NTFS
文件系统则彻底避免了这个问题,在每次读写时,其都会检查扇区正确与否,当读取时发现错误,
NTFS
会
报告这个错误,而当向磁盘
写文件时发现错误,
NTFS
会自动更换正常的位置存储数据,
操作不会受到任何影响,在这
两种情况下,
NTFS
都会在坏扇区上作标记,
协助用户进行各种处理,
这样的工作模式可以使磁盘错误可以较早地被发
现,避免灾难性的事故发生。
4.
事件日志功能
< br>在
NTFS
文件系统中,任何操作都被记录成为
“
事件
”
,这样的记录
方式相当于监督着整个操作,若操作过程中出
现断电、
死机等突
发性的状况,
NTFS
则可以在来电后重新完成刚才的事件,<
/p>
事件日志的作用并不在于能直接挽回损失,
而在于其能够监督所有
事件,从而让系统明确完成了哪些任务,那些任务还没有完成,保证系统不会因为突发事件而
导致更大的损失,将各类文件、数据的安全性进一步提高。
5.
动态磁盘功能
动态磁盘是从
Windows
2000
时代开始的新特性,
Windows Server
2003
继续使用了这个相当棒的特性,相比基本
磁盘,其提供
更加灵活的管理和使用特性,用户可以在动态磁盘上实现数据的容错、高速的读写操作、相对随意的修
改卷大小等操作,而不能在基本磁盘上实现。
动
态磁盘没有卷数量的限制,只要磁盘空间允许,用户就可以在动态磁盘中任意建立卷,并可以将数块磁盘中的
p>
空余磁盘空间扩展到同一个卷中来增大卷的容量,目前采用
NTFS
系统的磁盘读写速度均由硬件决定,并不存在任何
以往的软件瓶
颈问题,高端硬件的性能得到充分的发挥。
目前主流的文件系统为
NTFS
,但许多用户在电脑
的使用中也会遇到
FAT32
形式,通过小编上面的介绍,相信
对
于文件系统的
NTFS
与
FAT32
,大家都有了较明确的认识,对于两者之间的区别再不会迷糊。
FAT
文
件系统原理一
[
转
]
FAT
文件系统原理
——
表
1
分区表参数
文本结构索引:
图片表格索引:
表
2
扩展分区表项的内容
表
3 FAT32
分区
DBR
的位置划
分
表
4 FAT32
分区的
BPB
字段
一、硬盘的物理结构
图
1
硬盘的物理结构
二、硬盘的逻辑结构
3.1
MBR
扇
三、
磁盘引
区
导原理
3.2
扩
展
分
区
图
2
winhex
下的磁盘
MBR
图
3 winhex
给出的
MBR
参数的意
表
5 F
AT32
分区的扩展
BPB
字
义
段
图
4
分区表类型标志
表
6 FAT16
分区上的
DBR
组成
4.1
4.1.1
FAT32
DBR
扇
图
5
一个
4
分区的磁盘结构图示
表
7 FAT16
分区的
BPB
字段
关
于
区
4.1.2
FAT16
DBR
扇
区
图
6
分区表链接图示
表
8 FAT16
分区的扩展
BPB
字
段
表
9
FAT16
分区大小与对因簇
大小
DBR
四、
FAT
分
区原理
4.2
关
于保
留扇区
图
7
磁盘的整体结构图示
图
8
winhex
< br>下的
FAT32
基本分区
DBR
图
表
11
FAT16
目录项的定义
4.3
FAT
表
和数据的存
< br>4.3.1
存储过程假想
图
9
winhex
< br>给出的图
8DBR
参数
表
12
FAT32
分区大小与对因簇
说明
大小
储原则
4.3.2 FAT16
存储原理
图
10 winhex
所截
FAT16
的文件分
配表
表
13
FAT
表的取值含义
4.3.3
FAT32
存储原理
图
4.3.11
Fat16
的组织形式
表
14
FAT32
短文件目录项的定
义
表
15
FAT32
长文件目录项的定
义
五、结束
图
4.3.12
Fat32
的组织形式
一、硬盘的物理结构:
硬盘存储数据是根据电、磁
转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘
片
两面所安装的磁头和相应的控制电路组成
(
图
< br>1)
,其中盘片和磁头密封在无尘的金属壳中。
硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定
位置然后将数据存储
或读取出来。当系统向硬盘写入数据时,磁头中
“
写数据
”
电流产生磁场使盘片表
面磁性物质状态发生改变,并在写电
流磁场消失后仍能保持,这样数据就存储下来了;当
系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场
使磁头产生感应电流或线
圈阻抗产生变化,经相关电路处理后还原成数据。因此只要能将盘片表面处理得更平滑、磁
头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。这是因为盘片表面
处理
越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计
越小越精密就能使磁头在盘片上
占用空间越小,使磁头在一张盘片上建立更多的磁道以存
储更多的数据。
[
返回索引
]
二、硬盘的逻辑结构。
硬盘由很多盘片
(platter)
组成,每个盘片的每个面都有一个读写磁头。如果有
N
个盘片。就有
2N
个面,对应
< br>2N
个
磁头
(Heads)
p>
,从
0
、
1
、
2
开始编号。每个盘片被划分成若干个同心
圆磁道
(
逻辑上的,是不可见的。
)<
/p>
每个盘片的划分
规则通常是一样的。这样每个盘片的半径均为固定
值
R
的同心圆再逻辑上形成了一个以电机主轴为轴的柱面
(Cylinders)
,
从外至里编号为<
/p>
0
、
1
、
2……
每个盘片上的每个磁道又被划分为几十个扇区
< br>(Sector)
,
通常的容量是
512byte
,
并按照一定规则编号为
1
、
2
、
3……
形成
Cylinders×
He
ads×
Sector
个扇区。这三个参数即是硬盘的物理参数
。我们下面
的很多实践需要深刻理解这三个参数的意义。
[
返回索引
]
三、磁盘引导原理。
3.1 MBR(master boot
record)
扇区:
计算机在按下
power
键以后,开始执行主板
bios
程序。进行完一系
列检测和配置以后。开始按
bios
中设定的系统引
导顺序引导系统。假定现在是硬盘。
Bios
执行
完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪
里的程序呢。其实
,
称为
mbr
的一段代码起着举足轻重
的作用。
MBR(master boot record),
即主引导记录,有时也称主引
导扇区。
位于整个硬盘的
0
柱面
0
磁头
1
扇区
(
可以看作是硬
盘的第一个扇区
)
,
bios
在执行自己固有的程序以后就会
jump
到
p>
mbr
中的第一条指令。将系统的控制权交由
mbr
来执行。在总共
512byte
的主引导记录中,
MBR
的引导程序占了其
< br>中的前
446
个字节
(
偏移
0H~
偏移
1BD
H)
,随后的
64
个字节
(
偏移
1BEH~
偏移
p>
1FDH)
为
DPT(Disk
PartitionTable
,硬盘
分区表<
/p>
)
,最后的两个字节
“55 AA”(<
/p>
偏移
1FEH~
偏移
1FFH)
是分区有效结束标志。
MBR
不随操作系统的不同而
不同,
意即不同的操作系统可能会存在相同的
MBR
,
即使不同,
MBR
也不
会夹带操作
系统的性质。具有公共引导的特性。
我们来分析一段
mbr
。下面是用
< br>winhex
查看的一块希捷
120GB
硬盘的
mbr
。
[
返回索引
]
你的硬盘的
MBR
引导代码可能并非这样。不过即使不同,所执行的功能大体是一样的。
这是<
/p>
wowocock
关于磁盘
mbr
的反编译
,已加了详细的注释,感兴趣可以细细研究一下。
我们看
DPT
部分。操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念。即将一块磁盘逻辑
划分为几块。
磁盘分区数目的多少只受限于
C
< br>~
Z
的英文字母的数目,在上图
DPT
共
64
个字节中如何表示多个分
区的属性
呢
?microsoft
通过
链接的方法解决了这个问题。在
DPT
共
64
个字节中,以
16
个字节为分区
表项单位描述一个分区的
属性。也就是说,第一个分区表项描述一个分区的属性,一般为
基本分区。第二个分区表项描述除基本分区外的其余
空间,一般而言,就是我们所说的扩
展分区。这部分的大体说明见表
1
。
表
1
图
2
分区表第一字段
字节位移
字段长
值
字段名和定义
度
引导指示符
(Boot
0x01BE
BYTE
0x80
Indicator)
指明该分区
是否是活动分区。
0x01BF
BYTE
0x01
开始磁头
(Starting
Head)
开始扇区
(Starting
Sector)
只用了
0~5
位。
0x01C0
6
位
0x01
后面的两位
(
第
6
位和第
7
位
)
被开始柱面字段所
p>
使用
开始柱面
(Starting
Cylinder)
除了开始扇
区字段的最后两位外,
0x01C1
10
位
0x00
还使用了
< br>1
位来组成该
柱面值。开始柱面是一
个
10
位数,最大值为
1023<
/p>
系统
ID(System ID)
定
0x01C2
BYTE
0x07
义了分区的类型,详细
p>
定义,请参阅图
4
0x01C3
BYTE
0xFE
结束磁头
(Ending Head)
结束扇区
(Ending
0x01C4
6
位
0xFF
Sector)
只使用了
0~5
位。
< br>最后两位
(
第
6
、
7
位
)
被结束柱面字段所使用
结束柱面
(Ending
Cylinder)
除了结束扇区
字
段最后的两位外,还
0x01C5
10
位
0x7B
使用了
1
位,以组成该
柱面值。结束柱面是一
个
10
位的数,最大值为
1023
相对扇区数
(Relative
0x01C6
DWORD
0x0000003F
Sectors)
从该磁盘的开
始到
该分区的开始的位
移量,以扇区来计算
总扇区数
(Total Sectors)
该分区中的扇区总数
0x01CA
DWORD
0x00DAA83D
[
返回索引
]
注:上表中的超过
1
字节的数据都以实
际数据显示,就是按高位到地位的方式显示。存储时是按低位到高位存储的。
两者表现不
同,请仔细看清楚。以后出现的表,图均同。
也可以在
winhex
中看到这些参数的意义:
[
返回索引
]
说明:每个分区表项占用<
/p>
16
个字节,假定偏移地址从
0
开始。如图
3
的分区表项
3
。分区表项
4
同分区表项
3
。
1
、
0H
偏移为活动
分区是否标志,只能选
00H
和
80H
。
80H
为活动,
00H
为非活动。其余值对
microsoft
而言为非法
值。
2
、
重新说明一下
(
这个非常重要
)
:
大于
1
个字节的数被以低字节在前的存储格式格式<
/p>
(little endian format)
或称反字节
p>
顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六
进制数符号中。例如,
相对扇区数字段的值
0x3F00000
0
的低字节在前表示为
0x0000003F
< br>。这个低字节在前的格式数的十进制数为
63
。
3
、系统在
分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区是输
入分区的大小为
7000M
,
< br>分出来却是
6997M
,
就是这
个原因。
偏移
2H
和偏移
6H
的扇区和柱面参数中
,
扇区占
6
位
(bit)
,
柱面占
10
位
(bit)
,
以偏移
6H<
/p>
为例,
其低
6
位
用作扇区数的二进制表示。
其高两位做柱面数
10
位中的高两位,
偏移
7H
组
成的
8
位做柱面数
10
位中的低
8
位。由此可知,实际上用这种方式表示的分
区容量是有限的,柱面和磁头从
0
开始
编号
,
扇区从
1
开始编号
,
所以最多只能表示
102
4
个柱面
×
63
个扇区
×
256
个磁头
×
512byte=8455716864byte
。即通常的
8.4GB(
实际上应该是
7.8GB
左右
)
限制。实际上磁头数
通常只用到
255
个
(
由汇编语言的寻址寄存器决定
),
即使把这
3
个
字节按线性寻址,依然力不从心。在后来的操
作系统中,超过
8.4GB
的分区其实已经不通过
C/H/S
的方式寻址了。而
是通过偏移
CH
~偏移
FH
共
4
个字节
32
位线性
扇区地址来表示分区所占用的扇区总数。可知通过
4
个字节可以
表示
2^32
个扇区,
即
2TB=2048GB
,
目前对于大多数计算机而言
,
这已经是个天文数字了。
在未超过
8
.4GB
的分区上,
C/H/S
的表示
方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也
p>
以线性寻址为准。
(
可能在某些系统中会提
示出错
)
。
超过
8.4GB
的分区结束
C/H/S
一
般填充为
FEH FFH FFH
。
即
C/H/S
所能表示的最大值。有时候也会用柱面对
1024
的模来填充。不过这几个字节是什么其实都无关紧要了。
虽然现在的系统均采用线性寻址的方
式来处理分区的大小。但不可跨柱面的原则依然没变。本分区的扇区总数加上
与前一分区
之间的保留扇区数目依然必须是柱面容量的整数倍。
(
保留扇区
中的第一个扇区就是存放分区表的
MBR
或
虚拟
MBR
的扇区,
分区的扇区总
数在线性表示方式上是不计入保留扇区的。
如果是第一个分区,
保留扇区是本分区前
的所有扇区。
附:分区表类型标志如图
4
3.2
扩展分区:
扩展分区中的每个逻辑驱动
器都存在一个类似于
MBR
的扩展引导记录
( Extended Boot Record, EBR)
,
< br>也有人称之为
虚拟
mbr
或扩展
mbr
,意思是一样的。扩展引导记录包括一个扩展分区表和该
扇区的标签。扩展引导记录将记录只包
含扩展分区中每个逻辑驱动器的第一个柱面的第一
面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区
32
或
63
。但是,如果磁盘上没有扩展分区,那么就不会有扩展引
导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中
的第一项指向它自身的引导扇区
。第二项指向下一个逻辑驱动器的
EBR
。如果不存在进一步的
逻辑驱动器,第二项就
不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那
么第二个逻辑驱动器的扩展分区表的第一项会指向
它本身的引导扇区。第二个逻辑驱动器
的扩展分区表的第二项指向下一个逻辑驱动器的
EBR
。扩展分
区表的第三项和
第四项永远都不会被使用。
通过一幅
4
< br>分区的磁盘结构图可以看到磁盘的大致组织形式。如图
5
:
[
返回索引
]
关于扩展分区,如图
6
所示,扩展分区中逻辑驱动器的扩展引导
记录是一个连接表。该图显示了一个扩展分区上的
三个逻辑驱动器,说明了前面的逻辑驱
动器和最后一个逻辑驱动器之间在扩展分区表中的差异。
[
返回索引
]
除了扩展分区上最后一个逻辑驱动器外,表
2
中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:第一
p>
个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的
EBR
。最后一个逻辑驱动器的扩展分区
表只会列出它
本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。
表
2
扩展分区表项的内容
扩展分区表项
分区表项的内容
包括数据的开始地址
在内的与扩展分区
第一个项
中当前逻辑驱动器有关的信息
有关扩
展分区中的下一个逻辑驱动器的
信息,包括包含下一个逻辑驱动器的
第二个项
EBR
的扇区的地址。
如果不存在进一步
的逻辑驱动器的话,该字段不会被使用
第三个项
第四个项
未用
未用
[
返回索引
]
扩展分区表项中的相对扇区数字段所显示的是从扩展分
区开始到逻辑驱动器中第一个扇区的位移的字节数。总扇区
数字段中的数是指组成该逻辑
驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱
动
器末尾的扇区数。
有时候在
磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以
1
柱面的容量为分区粒度的,那
么如果磁盘总空间不是整数个柱面的话,不够一
个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所
以一般无法利用。照
道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为什么会有不够一个
< br>柱面的空间呢。在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇 区大于里
圈的扇区这种管理方式,只是为了与操作系统兼容而抽象出来
< br>CHS
。可能其实际空间容量不一定正好为整数个柱面的
容量吧。关于这点,如有高见,请告知
或
zymail@
。
FAT
文件系统原理二
[
转
]
四、
FAT
分区原理。
先来一幅结构图:
-
-
-
-
-
-
-
-
-
上一篇:语法填空之词类转换II 形容词和副词
下一篇:(完整版)KMV模型