|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
虽然硬盘存储技术的进步越来越慢,但容量的增大是拦不住的。IDC最近预测称,2015年的时候单块硬盘的容量将达到8TB(单碟容量怎么也得2TB),是目前的两倍还多。因为硬件、软件设计上的缺陷,大容量硬盘曾在历史上多次造成麻烦,最近一次硬盘容量问题出现在2.2TB身上,因此在开发Windows 8的时候,微软就充分考虑了大容量硬盘的完整支持问题,以及新的4KB扇区格式。. C/ t* z: w5 j/ {, R" U7 r* t# K" k' @
- o" W- @* H( j' w: b( @4 V微软畅谈Windows 8支持大容量硬盘、4KB扇区
9 r& N. x$ Y$ W7 h. r8 B: Z
7 T) J& K. Q; o3 E6 A* t$ r0 ?硬盘寻址方法
3 X9 O% |6 O7 H4 `/ x+ A7 \% P3 ]+ ~& [, p
硬盘最初使用的寻址方法是柱面/磁头/扇区(CHS),通过分别指定柱面、磁头、扇区来确定某个数据块的确切位置,但这种方法在137GB以上容量硬盘面前就失效了。
2 ? `. w- O6 f- s8 n' b9 l4 M) |( ?
- W# C/ |' v+ S: @5 N2 z- }8 |取而代之的是逻辑区块寻址(LBA),不再使用离散几何来指定扇区,而改用扇区编号来代表特定的数据块。每个扇区都有预定义的尺寸(之前是512字节),从0开始顺序编号,最大就是总容量除以扇区尺寸。) V7 S9 K/ X( V& U" E
1 k2 K0 u3 R, A0 p9 a
磁盘分区机制
( x- G% e/ ? t$ o, ?, k- ?
" B# A( ]* R; \: a, {5 w2 TLBA寻址方法理论上支持超大硬盘容量,但实际上扇区的数量还受制于磁盘分区机制。' J6 @) j" y' U8 {* E% z
9 N5 D' v" d& i7 H; @0 B! ~磁盘分区的概念可以追溯到二十世纪八十年代初,是系统管理员们为了方便使用不同文件系统存储数据而发明的。主引导记录(MBR)分区表支持最多32-bit信息,换算成字节数就是2的32次方,也就是大约2.2TB。, L, T+ D2 r0 o/ F6 @8 U! e& ~
+ n( z! ?# I# U W! u你也许会蔑视他们的“短视”,但在三十年前的人们看来,2.2TB几乎就是个遥不可及的天文数字,要知道当时最大的民用硬盘也不过5MB,而价格超过1500美元。
, l# g, {" F9 v" q3 A* B( z4 c9 S- j- W6 ]+ I1 i
其实刚刚进入九十年代的时候,人们就已经意识到了2.2TB容量限制问题,为此多家公司联合制定了一种弹性的分区机制,这就是GUID分区表,简称GPT,并将其做为UEFI(统一可扩展固件界面)规范的一部分。GPT支持最多64-bit信息,理论最大容量为9.4ZB,相当于9400000000TB。又是一个“天文数字”,不过说不定哪天就会成为第二个“2.2TB”。
; x) r+ N: l( ]* J @) t* f) z. D, O3 @, h, a7 X* U. O# D
Windows Vista 64位开始,微软就支持从GPT分区硬盘启动系统,但要求主板固件必须是UEFI,而不能是传统BIOS。9 G' t8 m1 i& V
" B, t4 h; a$ @PC里的固件:BIOS、UEFI+ t3 p8 D) i& r
- S7 @0 B" d$ L
BIOS的意思就代表了其用途:基本输入输出系统。三十年前PC发明的时候它就出现了,但时至今日基本都还是老样子。UEFI就是用来取代BIOS的,但长时间都未能投入实用,直到最新的Intel、AMD平台上才开始普及。
) q' n: R, _6 T8 M/ D: \' \. X8 p2 u5 o" }$ b1 ^! a
UEFI从设计之初就考虑了对GUID分区表合超大容量硬盘的支持,比之那些通过BIOS绕道而行的方法可靠得多。Windows 8开始,微软将会全面完善对UEFI的支持,借助UEFI固件、GTP分区表、LBA寻址方法共同管理超大硬盘。
$ O. F$ P5 X1 K+ D7 Q3 _" S) {7 J, p6 O& |. x8 `% f
下边就是在一块3TB硬盘上通过上述方法安装、启动操作系统的样子。
& o, L8 x4 Q. `9 I* p8 d' W( }$ `* B) f4 ~
) C7 y4 i/ ~; Mhttp://img.cnbeta.com/newsimg/111201/1622141908009106.png
' j% ], E. H, e" I& Z# H
- ~6 w! m5 m" C* l; o4KB扇区格式6 u6 Z; O2 |1 Y$ P
% n( o$ [6 j: {* P% L+ ~" S
所有硬盘都内建了某种形式的错误纠正信息和逻辑,以便在读取磁盘碟片的时候自动处理信噪比(SNR)。随着硬盘容量的增大,数据存储位越靠越近,SNR随之降低,硬盘的每个扇区就都不得不存储更多的ECC(错误校验码),以弥补读取错误,512字节的狭窄扇区空间慢慢就不够用了。
5 w5 p4 x3 `- c; a0 |8 r
. Q+ }7 a+ o1 L于是,硬盘厂商将扇区容量扩大到了4KB,称之为“高级格式”(AF),并使用了新的ECC编码机制,可以更高效地纠正错误,所占存储空间也更少,等同于扩大了可用容量。目前,西数、希捷等硬盘厂商都逐渐普及了4KB扇区格式。( @' y4 O N, o. `- @2 _$ K( W+ C/ |4 \' k
: \) S% u( u U7 M* _: A扇区容量增大到4KB,数据的更新也必须按照这个尺寸来,所以为了实现更小数据块的逻辑寻址,硬盘必须做一些额外的工作。 9 ~# r/ D) v0 P K! W4 q
p8 y" N% x+ b6 H+ B' C# V
微软畅谈Windows 8支持大容量硬盘、4KB扇区
Q. C2 f8 N5 ~' m; R2 R$ {- p7 l
如上图,一个4KB物理扇区仍然可以划分成512字节逻辑扇区进行逻辑寻址。为了写入单独一个512字节的逻辑扇区,硬盘不能简单地把磁头挪到 4KB物理扇区上就写入,而是需要先把整个物理扇区中的数据读取到缓存中,在那里修改相应的512字节逻辑扇区,然后再整体写回去,覆盖旧扇区。这叫做“读取-修改-写入”(Read-Modify-Write)。 . c* A9 T) F" {5 @: {
' j9 [$ N. e; M& r4 j/ b/ `有这种中间转换层的硬盘叫做“4K with 512-byte emulation”,缩写为512e,而没有的叫做“4K Native”,即一个是模拟的,一个是原生的。/ a- m, N5 T3 i$ U* |
. G U2 B. _) s' h读取-修改-写入可能会在面临大容量非一致性数据的时候影响实际性能,因为Windows必须确保应用程序能够提取整个4KB物理扇区,应用程序则需要确保I/O的一致性以报告物理扇区尺寸。
: M% M( w; a- L8 }* |7 |- @2 e3 ] ]; A( s- C
吸取了之前版本在高级格式上的经验教训之后,Windows 8将其做为了关键的设计点,将成为第一个完整支持512e、4K Native两种格式的操作系统,主要包括:5 u) g5 g" V2 A a4 E5 i. y, U8 _
K& z- W1 x9 O2 i6 e7 X- 增强现有API、引入新的API,方便应用程序更好地查询硬盘的物理扇区尺寸;
& {( Z7 ~5 J! n# [ F4 ^8 J0 ?
, S& s# E: V- o0 O7 _: U- 增强NTFS文件系统的大容量扇区识别,包括在执行扩展写入的时候确保合适的后续扇区(写入文件末尾的时候);( |- f* J8 H) {" z- S2 Y5 _8 j
( D+ L ^* t7 p* B4 F! e- Hyper-V虚拟化技术的新文件格式VHDx同样可以识别大容量扇区,完整支持两种格式;
4 Z* S: ^9 i5 t: `2 Q: M
$ ?& R0 X! {8 @1 S8 z2 A; P5 I8 X- 增强Windows启动代码,保证在4K Native原生硬盘上正确启动。- L9 J5 ~' I4 p, o, m
! m' z0 v8 e/ b/ W) B; \5 F还有更多工作将在Windows 8里默默进行。' m, A/ v# L0 N6 X" u
|
|