自微软2001年推出Windows XP系统至今,已经有20年之久了,微软早已停止对Windows XP的技术支持,而很多电脑用户依然对Windows XP情有独钟、难分难舍。有人说,是由于大多数用户习惯了Windows XP的风格与操作习惯,也有人说是因为Windows XP支持一些更早的用户熟悉的软件。无论如何,现在使用Windows XP操作系统的仍然大有人在!同时,由于技术的飞速发展,各种软件越来越庞大,视频文件也越来越高清,这就需要更大容量的存储设备,当年几个G的硬盘早已捉襟见肘、羞愧难当躲进了收藏箱,于是,T字辈的硬盘成为了如今电脑的标配。可是,那些依旧为Windows XP痴狂的老电脑迷们,想使用超过2T的大容量硬盘,却遇到了新问题!众所周知,Windows XP属于32位操作系统,而32位操作系统的最大寻址能力为2的32次方,即4,294,967,296,这是针对磁盘扇区而言的寻址能力,一个扇区又等于512字节,那么,硬盘最大容量被32位系统限制在512×4,294,967,296=2T以内!  从20年前开始使用Windows XP的那些老牌电脑玩家,钻研精神的确令人佩服,他们心有不甘,夜以继日地研究如何让Windows XP突破2T硬盘的局限,终于得到一种“解决办法”,那就是替换大法!按照网上的方法,让Windows XP支持大于2T的硬盘,需要做两个方面的技术处理。GPT是全局唯一标识分区表(GUIDPartition Table)的缩写,是一个实体硬盘的分区表的结构布局的标准,详细内容请参考GPT相关技术规范。Windows XP操作系统和一些专业的磁盘管理软件,已经可以很好的将传统的MBR转换为GPT。从Windows server 2003 SP2操作系统中提取disk.sys文件,或者从网上下载Windows server 2003 SP2操作系统的disk.sys文件,分别替换掉Windows XP操作系统下面三个路径的同名文件:1)system32\dllcache里面的disk.sys,完整路径通常是C:\WINDOWS\system32\dllcache\disk.sys;2)windows\Driver Cache\drivers.cab中的disk.sys,完整路径通常是C:\WINDOWS\Driver Cache\drivers.cab;3)system32\drivers里面的disk.sys,完整路径通常是C:\WINDOWS\system32\drivers\disk.sys。看了网上介绍的方法,笔者手中正好有一块新的4T硬盘,决定Windows XP系统上进行测试。插上4T硬盘,无论BIOS如何设置、无论五花八门的各种磁盘管理软件如何分区,Windows XP都只把4T硬盘当成1.6T硬盘,超过1.6T的磁盘空间根本就无法识别!按照上述网传方法一番折腾,哈哈,果然4T容量被全部识别,甚至还可以往里面“正常”读写数据!成功的喜悦让笔者煮了一杯香浓的咖啡,在阳台上晒了半天的太阳!咖啡喝完,太阳晒够了之后,把平常下载的各种科幻电影、动作大片通通往这个4T硬盘里面移动,总算给这些超大容量的视频找到了一个好的安身之处,窃喜!
没隔几天,桌面右下角弹出如图1所示的提示,打开“我的电脑”,发现磁盘Q成了“本地磁盘”(如图2所示), 双击打开磁盘Q,提示未格式化(如图3所示)。  原本以为自己在电脑数据恢复方面还“战功卓越”,这点问题只是小菜一碟,上T容量的视频文件只是躲迷藏玩,小别之后还会回到身边!通过十六进制编辑软件WinHex、还有DiskGenius、DataExplore、EasyRecovery、FinalData……通通用上,无论是自动扫描恢复数据,还是手动修复分区表、MFT等等,激战数日,这些上T容量的视频文件就这样离我远去了,连手都没有挥一挥,更别说带走一片云彩!该走的迟早会走的,该来的迟早也会来。痛定思痛,笔者“断定”是硬盘质量问题,或者是被病毒破坏,于是将这个4T硬盘的损坏分区重新快速格式化,又准备再次往里面下载各种视频资源。可是,好景不长,没隔几天,另外一个分区(磁盘R)又出问题了,也是出现该分区未格式化(如图4所示)!看来事情没那么简单,得深入分析问题出在哪里,也算给自己一个完整的交代,下面才是本文的重点! 五、深入分析4T硬盘在Windows XP是如何工作的平常在Windows XP下,笔者使用WinHex14.2进行十六进制编辑,用WinHex14.2打开4T硬盘,显示如图5所示的分区信息。 奇怪的是,笔者分区的顺序是0.8T、0.8T、1.0T、0.9T、202G这样五个分区,应该是WinHex14.2中分区1、分区3、分区5、分区2、分区4的顺序才对,Windows XP磁盘管理器看到的分区顺序,和实际分区的顺序一样(如图6所示)。 用高版本的WinHex19.8打开4T硬盘,看到的分区情况如图7所示,这和实际分区的顺序一样! 让人感到奇怪的是:WinHex14.2和WinHex19.8显示起始扇区不同,在WinHex19.8中显示的分区4,就是WinHex14.2中显示的分区2,起始扇区却不一样;在WinHex19.8中显示的分区5,就是WinHex14.2中显示的分区5,起始扇区也不一样。WinHex19.8显示的分区信息(如图8所示),分区4、分区5的“扩展名”显示的是“?”,正确的应该和分区1、2、3一样,显示“NTFS”。 两种不同的WinHex软件显示的分区“第1扇区”到底有什么关联?笔者把它转换为十六进制进行分析,从“第1扇区”有差异的两个分区的十六进制数据可以看出,“第1扇区”十六进制低4字节相同的(图9中方框所示),区别在于WinHex14.2没有高位第5字节0x01(十六进制的01H)。 虽然WinHex19.8可以正确显示分区的第1扇区数值,但无法访问3519069871以后的扇区(如图10所示)。 笔者将4T硬盘连接到另外一台主板支持UEFI、操作系统为Windows 10的电脑,可以正常显示分区表,同时还在1207965696扇区找到了分区4(磁盘Q)的分区信息,在3095404544扇区找到了分区5(磁盘R)的分区信息。也就是说,在Windows XP系统中,虽然磁盘管理器能正常显示硬盘容量和分区信息,但在实际操作读写磁盘数据时,扇区数大于0x100000000的地址,其最高位1被忽略,所以0x148001800扇区的分区信息被写入到了0x48001800扇区,0x1B8802000扇区的分区信息被写入到了0xB8802000扇区。假设正确的扇区N,实际读写的地址却是N-4,294,967,296扇区(十六进制0x100000000对应的十进制是4,294,967,296),我们暂时不考虑分区3,只谈分区4和分区5,由于Windows XP操作系统只访问4个字节的扇区数,导致大于4,294,967,296扇区的数据被前移4,294,967,296个扇区(如图11所示)。 分区被前移之后,分区4、分区5的数据和小于4,294,967,296扇区(分区1、分区2、分区3)的数据重叠,读写时数据相互交错,导致数据频繁丢失,而且这种相互覆盖写操作,将导致数据严重破坏,无法恢复!根据上面的分析,通过对系统文件的替换,Windows XP操作系统表面上是可以支持大于2T的硬盘了,但由于Windows XP操作系统自身的限制,导致了大于4,294,967,296扇区的数据被前移了4,294,967,296个扇区,和前面的数据相互覆盖,以至于硬盘数据频繁丢失!所以,Windows XP操作系统不支持大于2T的硬盘。本文只在笔者的电脑上测试过,并且只针对Windows XP32位操作系统,没有在更多硬件和软件环境进行测试,结论仅供参考。如果读者有其它不同看法,欢迎共同探讨。 |