现在160G硬盘的价格越来越平民化了,宽带网也开始普及,很多人都想拥有一个大硬盘,用来存放从网上下载的大型软件,动画,电影等资料。经过笔者的艰苦摸索后,发现光是主板支持大于137G的大硬盘还是不够的,要正常使用还需要磁盘驱动程序和操作系统的支持才行。
7 @$ W7 P- D9 ]5 O1 _& m硬盘太大惹的祸!
$ w/ ?6 P( M" X6 ^. K文 / 图:Ultra
m8 H$ X# O1 Y% j7 x' m : @. [0 i* `6 g, B8 f
暑假期间,笔者购买了新电脑。主板选用了nVIDIA nForce2 Ultra 400芯片的磐正 8RDA3+ ,硬盘选用了160G 并口的金钻9代。当时没有买软驱,给后来的硬盘修复工作带来了一定的麻烦。跟硬盘对战快一个月了,才把那个桀骜不逊的160G硬盘驯服,笔者写这篇文章的目的,是希望那些将要买大硬盘的朋友能吸取教训,少走弯路。 / i- ~3 R0 @* s- J/ i8 T! z5 N
一、恶梦的开始 笔者对Partition Magic(PM)情有独钟,从3.0用到现在的8.02,经过11小时的漫长分区和格式化,把硬盘分了10个区,如图一所示。当然,那么缓慢的其中一个原因是PM在格式化之前会进行坏区检查。虽然硬盘是新的,但也有可能在运输过程中损坏。第一次格式化最好还是检查清楚,不然硬盘那么大,坏区不存放文件就很有可能长期不被发现。前面3个主分区分别用来安装Pwin98,Pwin2000pro和PwinXP,分区后3个操作系统都能顺利安装。把操作系统安装在不同的主分区就可以最大限度的减少不同操作系统之间的干扰,安装PM配套的Boot Magic(BM)就可以轻易选择要进入的操作系统。
1 h# j0 W7 | S& t) \9 ?9 ` 8 C/ R! @2 \) h( E3 Y8 W. `/ k
图一
1 i+ \0 ]( o: T
1 e; f% N2 Y* H6 s/ `% h; \ 1.安装Pwin98第二版 安装后最后一个TEMP分区显示没有格式化,在Pwin98里面格式化之后就能使用了,但是会在最后增加一个盘符,大小和里面存放的文件都跟TEMP分区一样。即: 名称 类型 大小 GAMES(G:) 本地硬盘 19.5G TEMP(H:) 本地硬盘 1.95G 光盘(I:) 光盘 TEMP(J:) 本地硬盘 1.95G 也许Pwin98把这两个盘符都指向同一个分区了。所有关键补丁都安装了还是无济于事。 & B+ Z" o2 g3 b4 }+ r
2.安装Pwin2000pro + sp4和PwinXP + sp1 安装后无法认出最后一个TEMP分区,如果在“运行”中键入compmgmt.msc,在磁盘管理中手动把剩下的空间创建分区和格式化,之后表面上可以正常使用。但是在不同操作系统中看到的TEMP分区是不同的版本,例如在PwinXP存放的文件在Pwin2000是看不到的,反之亦然。
% H& i# E8 r+ g+ g4 z7 Z% H 二、恶梦的延续 既然主板已经能够支持大于137G的硬盘,也安装了nForce2 芯片最新的2.45驱动程序,操作系统也全部安装了最新的补丁,难道问题出自分区软件吗?
0 T, l* N6 v1 k9 c5 O 1. 丢失分区 笔者想起PM5.0曾经有个bug,就是在DOS分区后进入Windows会发现部分逻辑分区没有被分区格式化,用Norton Disk Doctor(NDD)可以重新找出来。于是运行NDD,它会自动提示存在部分未格式化的空间,询问是否查找硬盘扇区,重新建立丢失的分区。在此之前它会建议你备份好分区表和重要数据。也许是艺高人胆大吧,笔者没有理会,马上开始。折腾了一个多小时,NDD没有发现什么新的分区,而且有部分已经存在的分区也没有发现。重启之后,扩展分区里面的7个逻辑分区全部不见了,只留下一大片没有格式化的空间,真是马上晕死!NDD,PM和BM都需要软盘才能备份分区表,由于笔者没有买软驱,根本没有备份分区表。这下可惨了,不过想起Disk Genius2.0(Diskgen)可以自动搜索和重建分区表,于是就用移动硬盘启动,在DOS运行Diskgen试一试。可惜Diskgen只找到3个主分区和扩展分区,但是扩展分区里面的逻辑分区就一个也找不到。笔者只能使出最后一招了,Diskgen里面有一个手动修改分区参数的设置,幸好笔者还记得每个逻辑分区的大小,然后推算出每个分区的引导标志,系统标志(分区类型),起始和结束的柱面,磁头和扇区,按F11手动填写7个分区的资料,如图二。最后,Diskgen应用新的分区表时会提示在每个分区的第一个扇区中找到分区的引导信息,询问是否覆盖。当然选择否,不然清空了有关FAT的信息,分区里面的所有数据都不能正常访问了。其实PM的DOS版本也有一个能直接编辑分区参数的程序――PTEDIT.EXE,但是用起来没有那么直观,还需要手动计算更多的分区参数。重启后进入Pwin2000,所有分区都重现了,除了扩展分区中的第一个逻辑分区SW2K里面的数据丢失以外,其他6个逻辑分区里面的文件没有损坏和丢失,真是万幸!由于在Pwin2000 里运行Diskgen无法找到硬盘,所以连忙退出系统,再用移动硬盘启动,运行Diskgen,按F9把分区表备份到移动硬盘里,以备不时之需。 也许可以这样解释,NDD把第一个逻辑分区SW2K的MBR清空了,很自然SW2K分区的数据就丢失了。同时由于逻辑分区是以链式结构相互连接起来的,后面的分区也就找不到了。 # z" R W" H7 t) C( F) W
' a# ]9 X: f1 ?% b: B! s Z e
图二
; V; h6 M3 o$ u$ l; i: h) C( v2.主分区的FAT和FDT损坏 难道最新的操作系统也无法正常使用大于137G的硬盘吗?为了证实这个猜想,笔者在PwinXP中用PM对最后3个分区做了调整,原来GAMES分区跨越137G的界线,而TEMP分区完全在137G以后。现在把倒数第三个MUSIC&MOVIE分区扩大,跨越137G的界线,那么GAMES分区和TEMP分区就完全在137G以后了,如图三。
/ U3 x. G J* c ^# [+ ^, s
0 E: \8 c$ ^# |% l" r5 b图三 , O5 t, a/ T$ v9 B
重启进入PwinXP后,发现第二个主分区Pwin2000的FAT和FDT损坏,里面的目录和文件的名字都是乱码,而且本来有5G的剩余空间,现在只剩下十几K了。还有,GAMES和TEMP两个分区看不见了。进入Pwin98发现可以认出GAMES和TEMP分区,但是同样显示没有被格式化。格式化后可以使用,同样在最后增加了两个分别指向这两个分区的盘符。即: 名称 类型 大小 MUSIC&MOVIE(F:) 本地硬盘 29.2G GAMES(G:) 本地硬盘 19.5G TEMP(H:) 本地硬盘 1.26G 光盘(I:) 光盘 GAMES(J:) 本地硬盘 19.5G TEMP(K:) 本地硬盘 1.26G 这一切正好证实了笔者的猜想。为了尝试恢复Pwin2000里面的文件,只好用Diskgen把上次备份的分区表覆盖,但笔者马上发现自己做了蠢事。因为最后3个分区做了改动啊!而且就算恢复分区表也不可能恢复Pwin2000分区中的FAT和FDT。因此导致MUSIC&MOVIE分区里面除了根目录没问题,其他的目录和文件都是乱码。不知为何,就算重施故伎用Diskgen把最后3个分区的信息填写正确也没办法解决问题。看来这次确实要为自己的一时冲动付出代价了,从这里大家也应该明白一个道理:无论情况怎么坏也应该把当前的状态备份好,难保以后可能有更坏的情况出现,那就可以恢复当前的状态了。无奈之下只好在PwinXP中运行EasyRecovery 6.0 Professional,用里面的RawRecovery功能把MUSIC&MOVIE分区里面15G 的MP3音乐和8G 的Tofle听力文件还原出来,如图四和图五。大部分文件还是可以还原的,不过或多或少有交叉连接的问题,例如十几首MP3连在一起成为一个几十兆的大文件,或者在音乐的中间跳转等,如何把那么多文件的名字改回原来的名字也十分令人头疼,只好日后慢慢修改了。
/ f3 ^9 ^! a9 C E/ ~# Q1 z ! l% m8 u5 ?. i1 l
图四
) E o0 e+ Q0 @; }- v+ @* \7 t+ Q% Y$ F5 q5 e* ^/ d% @6 }
+ X/ o5 s% b3 k( w7 G# d
图五 8 a: l. [3 {$ P6 [
因为MUSIC&MOVIE分区跨越137G界线,如果里面的文件存放在137G以后,也会出问题。笔者有两次在Pwin2000用BT下载影片,发现第一个主分区Pwin98的FAT和FDT突然损坏。狂汗啊!又得重新安装系统和软件了。原因是BT把文件写到137G以后了。
% ~9 Y( y+ e# f6 a; k3.文件丢失 写到137G以后的文件在重启之后或者大量的文件移动后很容易会丢失,而且在另一个操作系统是看不到这些文件的。本来不同操作系统中看到各个分区的内容应该是一样才对,但现在是137G以前的分区中的内容是一样的,以后的就不相同了。折中的方法就是只在一个操作系统中使用137G以后的空间,不过还是不用为妙。也可以把那部分空间都做Temp分区,就算文件丢了也关系不大。 0 |5 g8 o- Y; i% |! _. K
三、恶梦的终结 至此,硬盘变得史无前例的不稳定,以前长期使用硬盘的安全感已荡然无存。每天使用硬盘的时候都战战兢兢的,不知道哪天又会丢失数据。其实也可以得过且过,不使用137G以后的空间即可,不过这不是解决问题的办法。在DOS下无论用PM或者Diskgen查看分区都是好好的,PM8.0开始已经明确支持单个分区是160G的情况,应该不是分区软件的问题。但进入Pwin98却发现137G以后的分区没有格式化,而NT内核的Pwin2000和PwinXP则看不到137G以后的分区。这无疑让人想到问题一定是出自微软的操作系统了。 / Y; g+ p2 x. X. J& y! P; W
1.Pwin2000的解决方法 根据Microsoft Knowledge Base Article – 305098( http://support.microsoft.com/default.aspx?scid=kb;en-us;305098)中的描述,需要版本为5.0.2195.4529或以上的Atapi.sys文件,才可以支持48位的逻辑块地址(LBA)。虽然从Windows2000的sp3开始就支持48位的LBA,已经可以支持大于137G的硬盘,但是默认状态下并不打开这个选项,我们需要手动修改注册表来激活。方法如下: (1)在“运行”中输入regedit,启动注册表编辑器。 (2)找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters 并点击此子键。 (3)如果使用Windows2000的sp3或以上,名称为EnableBigLba ,类型为REG_DWORD的键值项已经存在,则点击鼠标右键,把数据修改为0x1(十六进制的“1”),默认是0x00000000(0)。如果此键值项不存在,则点击鼠标右键,新建一个“双字节值”,把名称改为EnableBigLba,把数据改为0x1即可,如图六。 (4)退出注册表编辑器
# V8 Y: N0 X1 s2 p) u/ J# ^6 E0 L2 W1 q4 i, [) o+ v; z4 }$ G% S* i3 M
图六 7 ^/ ?1 o* `. S" j# v
2.PwinXP的解决方法 根据Microsoft Knowledge Base Article – 303013( http://support.microsoft.com/default.aspx?scid=kb;EN-US;303013 )中的描述,需要Windows XP的sp1或以上才支持48位的LBA,才可以正常使用137G以上的硬盘,但是默认状态下也不打开这个选项,我们同样需要手动修改注册表来激活,方法跟Windows2000的相同。而且,根据Microsoft Knowledge Base Article – 331958( http://support.microsoft.com/default.aspx?scid=kb;[LN];331958 )中的描述,使用大于137G的硬盘在进入待机或休眠状态时硬盘可能会损坏,需要版本为5.1.2600.1135或以上的Atapi.sys文件才能解决问题。如果是64位的Windows XP,则版本是5.1.2600.1152。但是SP1所带的Atapi.sys文件版本是5.1.2600.1106,你可以用“查找”,找出在 %systemroot%\system32\drivers 中的Atapi.sys文件,然后用鼠标右键点击文件查看文件的版本属性。你可以在这里下载中文版的补丁文件 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=b997cc5f-4483-4edc-a17e-6f659a033b0d ,以更新Atapi.sys文件。 $ x/ b. H, ?% n2 T
3.Pwin98/ME的解决方法 比较遗憾的是,暂时没有发现通用的解决的方法。
, Z, [3 P* K& q4 K; @ 4.其他工具 (1)如果你跟笔者一样,使用的是钻石的硬盘,那你可以使用Maxtor公司专为钻石硬盘提供的补丁程序Maxtor Big Drive Enabler,下载地址: http://www.maxtor.com/en/support/downloads/big_drive_enabler.htm 。这个程序的作用只是免去自己手动修改注册表而已,当然前提是你使用的操作系统是Windows2000 + sp3或以上,或者是Windows XP + sp1或以上。其他品牌的硬盘暂时没发现类似的软件。
+ m3 |! r/ C* l (2)你也可以使用“超级兔子魔法设置 2003”中的高级设置2,在“启动48位的LBA,以支持大硬盘”前打勾,如图七,然后保存退出。其作用跟上面的Maxtor Big Drive Enabler是一样的。 , D7 P' P" S" ^$ k; R% s. Z6 B
9 J& X" x# H& m0 \: {9 Q% M
图七 , z( [/ O5 i4 k b
四、恶梦醒来 其实,大于137G的硬盘不能正常使用,主要有以下几个原因: c1 g+ F4 F5 |9 d% v
(1)主板BIOS不支持48位的LBA 这是最基本的问题,首先把BIOS刷新到最新版本,如果还是不行,可以根据硬盘的品牌安装相应厂商免费提供的软件来打破主板BIOS的限制。例如金钻的硬盘可以安装MaxBlast 3,西数的硬盘可以安装Data Lifeguard v10.0。另外,也可以购买支持48位LBA的硬盘扩展卡,把硬盘直接接上去,而不接在主板上。
; r/ i6 Q0 m) I" I: M9 ?# e+ o (2)磁盘的驱动程序不支持48位的LBA (i)如果主板的芯片是使用INTEL的810, 810E, 810E2, 810L, 815, 815EP, 815G, 815EG, 815P, 820, 820E, 840, 845, 845E, 845G, 845GE, 845GL, 845GV, 845PE, 850, 850E, 860中的其中一种,那么你可以安装Intel Application Accelerator。使用这个软件提供的支持48位LBA 的磁盘驱动程序 (IntelATA.MPD) 取代Windows 98/Me, Windows2000/XP 中的磁盘驱动程序 (ESDI_506.PDR)。 (ii)如果你是使用支持48位LBA的硬盘扩展卡,或者使用主板的Raid功能或Raid卡,则可以在安装Windows2000/XP时使用其对应的支持48位LBA的驱动程序。 (iii)如果你的主板使用非INTEL芯片,例如笔者选用的nVIDIA nForce2 Ultra 400芯片,那暂时可能只有安装Windows2000 + sp3或sp4,或者Windows XP + sp1或以上的操作系统了。
+ G: v; ]( _. m6 i (3)没有打开Windows注册表中支持48位LBA的选项 这个就最简单,按照上面所说的方法修改注册表就可以了。 1 t6 b1 ~* g: J7 q4 c u
虽然现在好像已经安枕无忧了,但还是有几点需要注意的: (1)使用Windows自带的磁盘驱动程序安装Windows2000/XP的时候,要注意一定要安装在137G以前的分区中,因为安装过程中还不支持137G以后的分区。 (2)如果日后重装Windows2000/XP的时候,要注意使用已经集成了SP3或以上的Windows2000安装盘,或已经集成了SP1或以上的Windows XP安装盘,不然137G以后的分区的数据可能会丢失。 (3)虽然已经激活了Windows对大硬盘的支持,但是激活前在137G以后存放的文件还是有可能丢失的,即使激活后把那些文件拷贝到其他的分区中,也可能会出现文件错误。当然,激活后新存放的文件是不会有问题的。 & y# C' P0 _1 g8 |/ ~: I
笔者跟这个160G硬盘搏斗了近一个月,已经筋疲力尽了。但值得庆幸是,如果你近期想购买大于137G的硬盘,只要预算充足,基本上已经不需要再顾虑什么了。 |