单碟1TB的硬盘也已经面市,3T、4T硬盘在2012年已经降价进入普通用户电脑。超过2TB的硬盘在使用过程中需要一些必要条件,下面就来讲一下。

  其实,硬盘容量限制问题很早就出现了,最初是528MB、2.1GB,后来是3.2GB、4.2GB,但引起人们注意当属8.4GB容量的硬盘。虽然LBA(Ligical Block Address)逻辑块寻址模式突破了DOS系统下8.4GB容量的限制,但由于自身的限制,柱面的最大数是65536(216),磁头的最大数是16(24),扇区的最大数是255(28-1),因此能寻址的最大扇区数是267,386,880 (65536×16×255),一扇区是512字节,也就是说如果以CHS寻址方式,IDE硬盘的最大容量为136.9GB,这就是137GB容量限制的由来。
超过137GB容量的硬盘,可能会在一些主板上遭遇所谓的28bit LBA限制,当然主要是指一些推出时间较早的主板,但NVIDIA nForce2却仍然在使用28bit LBA IDE控制器。在这样的主板上虽然可以使用大容量的硬盘,但超出137GB以外的空间将无法识别,换句话说也就是被浪费了。


Technical Committee T13组织为了解决28bit LBA寻址模式的限制,对于ATA/ATAPI-6标准进行了一些修改,通过48bit LBA来支持更多的扇区,从而突破这一限制,其实后来Compaq、Microsoft、Maxtor联合推出的Big Drives规范就是T13组织提出的48bit方案为基础的,这种规范的中心思想就是增加CHS的位数,而柱面寄存器不变,这样就将原来LBA寻址中可用的寄存器空间从24bit提高到了48bit,可以寻址的扇区数就为281,474,976,710,655(65536×65535×65536),这样可支持的硬盘容量就达到了281,474,976,710,655×512=144,115,188,075,855,872字节,大致相当于144PB(1PB=1000,000,000,000,000字节),在一定时间内应该是足够使用了。

   从这里来说,支持2T,应该不成问题才对的啊?但为什么又会出现这个限制的呢,这个要从MBR说起。


   MBR,主引导记录(Master Boot Record),也就是现有的硬盘分区模式。MBR分区的标准决定了MBR只支持在2TB以下的硬盘,超过2TB的硬盘只能管理2TB(参见后文MBR介绍)!为解决这个大问题,微软和英特尔在EFI方案中开发了GPT分区模式。


   GPT,全局唯一标识分区表(GUID Partition Table),GUID,全局唯一标识符 (Globally Unique Identifier) 。GPT是EFI方案的一部分,但并不依赖于EFI主板,在BIOS主板的PC中也可使用GPT分区。与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB。


对于使用2T以上硬盘的要求

由于MBR分区模式最大只能支持2TB硬盘,2.5T硬盘必须使用GPT分区模式!我们先未雨绸缪,看看Windows对GPT分区的支持情况:

  1. Windows 95/98/ME、Windows NT 4、Windows 2000、Windows XP 32 位版本不支持GPT分区,只能查看GPT的保护分区,GPT不会被装载或公开给应用软件;
  2. Windows XP x64 版本只能使用GPT磁盘进行数据操作,只有基于安腾处理器 (Itanium)的 Windows系统才能从 GPT 分区上启动;
  3. Windows Server 2003 32bit Server Pack 1 以后的所有Windows 2003版本都能使用GPT分区磁盘进行数据操作,只有基于安腾处理器(Itanium)的Windows系统才能从 GPT 分区上启动;
  4. Windows Vista 和 Windows Server 2008的所有版本都能使用GPT分区磁盘进行数据操作;但只有基于EFI主板的系统支持从GPT启动。

看到这里,我们知道了要想用2.5T硬盘:

  1. 首先,你得放弃2K和XP 32位版,改成人见人不爱的Vista或是人见人爱的WIN7;
  2. 你还得把基于BIOS的主板给扔了,换成EFI主板,否则即使换成Vista了,也只能把2.5T硬盘当从盘用。

否则,我们就只能对2.5T硬盘干瞪眼,哗哗地流口水。。。

MBR介绍
  在传统硬盘分区模式中,引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。
  MBR是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写,如在minix3里面,可以用命令:installboot -m /dev/c0d0 /usr/mdec/masterboot来把masterboot这个小程序写到mbr里面,masterboot通常用汇编语言来编写。我们也可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。
  用INT13H的读磁盘扇区功能的调用参数如下:
  入口参数:AH=2 (指定功能号)
  AL=要读取的扇区数
  DL=磁盘号(0、1-软盘;80、81-硬盘)
  DH=磁头号
  CL高2位+CH=柱面号
  CL低6位=扇区号
  CS:BX=存放读取数据的内存缓冲地址
  出口参数:CS:BX=读取数据存放地址
  错误信息:如果出错CF=1 AH=错误代码
  用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:
  A>DEBUG
  -A 100
  XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)
  XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)
  XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)
  XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)
  XXXX:XXXX INT 13
  XXXX:XXXX INT 3
  XXXX:XXXX (按回车键)
  -G=100 (执行以上程序段)
  -D 1000 11FF (显示512字节的MBR内容)
  在windows操作系统下,例如xp,2003,Vista,windows7,有微软提供的接口直接读写mbr;
  FILE * fd=fopen("\\\\.\\PHYSICALDRIVE0","rb+");
  char buffer[512];
  fread(buffer,512,1,fd);
  //then you can edit buffer[512] as your wish......
  fseek(fd,0,SEEK_SET); //很重要
  fwrite(buffer,512,1,fd); //把修改后的MBR写入到你的机器
  fclose(fd); //大功告成
  MBR组成
  一个扇区的硬盘主引导记录MBR由如图6-15所示的4个部分组成。
  •主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。
  •出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
  •分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
•结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。

GPT介绍
  GPT(Globally Unique Identifier Partition Table Format)是一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构。与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
  与支持最大卷为 2 TB (terabytes) 并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR) 磁盘分区的样式相比,GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB (exabytes) 并且每磁盘最多有 128 个分区。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。
  在“磁盘管理”中的磁盘属性对话框中的“卷”选项卡上,具有 GPT 分区样式的磁盘显示为 GUID 分区表 (GPT) 磁盘,而具有 MBR 分区样式的磁盘显示为主启动记录 (MBR) 磁盘。如果发生下列意外事件,可以在 GPT 磁盘上执行 MBR 磁盘支持的操作:
  在运行带有 Service Pack 1 (SP1) 的 Windows Server 2003 的基于 x86 的计算机和基于 x64 的计算机上,操作系统必须驻留在 MBR 磁盘上。其他的硬盘可以是 MBR 或 GPT。
  在基于 Itanium 的计算机上,操作系统加载程序和启动分区必须驻留在 GPT 磁盘上。其他的硬盘可以是 MBR 或 GPT。
  不能将 GPT 移至运行 Windows NT 4.0、Windows 2000、Windows XP 或 Windows Server 2003 的基于 x86 的计算机上。不过,可以将 GPT 磁盘从运行带有 SP1 的 Windows Server 2003 的基于 x86 的计算机或基于 x64 的计算机移至运行 Windows Server 2003 或 Windows XP 的基于 Itanium 的计算机上,反之亦然。
  不能使用基于 Itanium 的 Windows 版本,将 GPT 磁盘从基于 Itanium 的计算机移至运行带有 SP1 的 Windows Server 2003 的基于 x86 的计算机或基于 x64 的计算机,然后启动该操作系统。在非基于 Itanium 的计算机上使用的 GPT 磁盘必须仅用于数据存储。
  在单个动态磁盘组中既可以有 MBR,也可以有 GPT 磁盘。也使用将基本 GPT 和 MBR 磁盘的混合,但它们不是磁盘组的一部分。可以同时使用 MBR 和 GPT 磁盘来创建镜像卷、带区卷、跨区卷和 RAID-5 卷,但是 MBR 的柱面对齐的限制可能会使得创建镜像卷有困难。通常可以将 MBR 的磁盘镜像到 GPT 磁盘上,从而避免柱面对齐的问题。
  可以将 MBR 磁盘转换为 GPT 磁盘,并且只有在磁盘为空的情况下,才可以将 GPT 磁盘转换为 MBR 磁盘。
  不支持 EFI 系统分区的镜像。必须使用 bootcfg 命令克隆 EFI 系统分区。
  不能在可移动媒体,或者在与群集服务使用的共享 SCSI 或 Fibre Channel 总线连接的群集磁盘上使用 GPT 分区样式。
  可以使用 DiskPart.exe 命令行实用程序或 EFI 固件实用程序 Diskpart.efi 在基本 GPT 磁盘上创建分区。有关 DiskPart.exe 的详细信息,请参阅 DiskPart。有关“磁盘管理”管理单元的详细信息,请参阅磁盘管理概述。有关 Diskpart.efi 的详细信息,请参阅 Intel 网站。
  在基于 Itanium 的计算机上的系统恢复方案中,请参阅计算机所附带的制造商文档来重新创建或恢复 GPT 磁盘。
  有关管理 GPT 和 MBR 磁盘的详细信息,请参阅可扩展固件接口 或 Microsoft Windows 资源工具包网站上的“Disk Management”(磁盘管理)。

GPT的分区信息是在分区中,而不象MBR一样在主引导扇区,为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区(Protective MBR)的MBR分区表,这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。