漫钰维修网
硬盘容量限制问题的形成以及解决方案
时间:2020-11-19 16:27浏览:

Ibm 350 (Ramac)是Ibm在1957年成功开发的,是第一个真正意义上的硬盘内存。经过长期的技术创新,个人电脑于20世纪80年代初被引入。当时硬盘容量只有20-40m。经过10多年的发展,硬盘的容量逐渐增加。但是当时的一些设计错误造成了今天硬盘容量可能的限制。(容量限制问题:系统无法完全识别或正常使用一定容量的硬盘。)容量限制问题的原因

要理解这个原因,需要介绍ide接口硬盘的工作模式。即使是现在,我们的ide硬盘仍然使用以前的dos-bios(磁盘操作系统-基本输入输出系统)的分层结构。它的基本工作模式是:程序调用->: Dos函数调用->:文件管理设备->: Int 13中断管理(读/写)->: Bios磁盘服务->: Ide(ata)接口->:磁盘控制器,也就是说,如果我们需要操作硬盘,就必须经过上面的一系列步骤,那么我们来看看这一系列步骤的功能。

文件管理设备:负责文件与其在磁盘上的存储位置的映射关系,但需要通过磁盘读写中断int13执行读写命令来存储和调入文件。保存新文件时,文件管理器决定其在当前目录中的存储位置,向文件分配表中添加文件目录条目,并将文件写入磁盘。读取文件时,文件管理器在fat中找到文件在磁盘上的位置,然后调入文件。

Ide(ata)接口:在介绍ide(ata)接口之前,简单说一下硬盘的结构:硬盘分为一定数量的圆柱体(以硬盘中心为中心的同心圆),每个圆柱体需要一个磁头读写数据。此外,硬盘上的数据以每个扇区512字节的格式存储,所有数据传输都基于扇区(等分柱面的圆弧轨迹)。Ide(ata)接口是寄存器驱动的并行总线。为了传输数据,bios首先将数据的起始地址和数据传输的长度写入ide(ata)中的特定寄存器,然后向特定寄存器发送相关的读/写命令以开始数据传输。

今天的硬盘通常支持逻辑块寻址(lba)和柱面磁头扇区寻址(chs)。让我们以chs寻址为例:数据传输的起始地址被写入四个8位寄存器,它们是:

柱面低位寄存器柱面高位寄存器扇区寄存器设备/磁头寄存器因此,柱面地址是16位。扇区地址为8位(注意:扇区寄存器中的第一个扇区

是1扇区,不是0扇区)。而头地址是4位(8位没有完全被占用)。所以硬盘柱面最大65536(2次方到16次方),磁头最大16(2次方到4次方),扇区最大255(2次方到8次方-1,注意刚才说的扇区注册问题)。因此,可寻址扇区的最大数量为267,386,880 (65,536x16x255)。一个扇区是512字节,这意味着如果通过chs寻址,ide硬盘的最大容量是136.9gb。在lba寻址模式下,上述28位(16+8+4)的总可用寄存器空间被视为一个完整的lba地址,因为它包括位0(0中的扇区(chs不能从0开始计算),可寻址扇区的数量为268,435,456 (65,536x16x256),此时ide硬盘的最大容量为137.4gb。

Int 13管理:其实int 13管理是按照寄存器模式设计的,它的更高层,即文件管理器层,向cpu发出数据读写命令和相关参数,然后触发int 13中断,激活bios磁盘服务,执行数据传输。数据的起始地址写入三个8位寄存器,它们是:

柱面下寄存器柱面上寄存器/扇区寄存器头寄存器的柱面地址为10位(柱面下寄存器占8位,柱面上寄存器占2位),扇区地址为6位(计算出的上寄存器的8位-2位)。头部寄存器为8位。因此,如果发生这种情况,最大柱面数为1024(2到10次方),最大磁头数为256(2到8次方),最大扇区数为63(2到6次方-1)。因此,int 13管理可寻址的扇区数量为16,515,072 (1,024x256x63)。一个扇区是512字节,这意味着如果通过chs寻址,ide硬盘的最大容量是8.456gb。lba可寻址的扇区数量为16,777,216(1024x256x64),ide硬盘最大容量为8.601gb。

看到这里,我们应该觉得硬盘容量限制的原因有一些“眼睛”,那么我们具体来说一下是什么让硬盘有所谓的限制:

1.528mb容量限制:

由于之前的硬盘容量相对较小,在bios设计为将地址从int 13的地址寄存器转换为ide(ata)的地址寄存器时,只使用int 13管理中的10位柱面地址对应ide(ata)接口中的16位柱面寄存器,未使用的6位(高位寄存器)地址全部设为0。只有6位扇区地址对应于ide(ata)接口的8位扇区寄存器,其中未使用的2位设置为0。

int 13管理的头寄存器有4位(去掉4位)对应ide(ata)。因此,此时,最大磁盘柱面数为1024(2到10次方),最大磁头数为16(2到4次方),最大扇区数为63(2到6次方-1)。因此,可寻址扇区的数量为1,032,192(1,024x16x63)。一个扇区的容量是512字节,这意味着如果用chs寻址,ide硬盘的最大容量是528.4mb。所以出现了528mb的硬盘容量限制。

2.1gb容量限制:

这里有两个部分,一个是磁盘服务的限制造成的,一个是磁盘格式造成的。通常我们称前者为2.1gb硬件容量限制,后者为2.1gb软件容量限制。

硬件容量硬件

当时,为了限制528mb的容量,人们提出了一些不同的方法,其中之一是将int 13服务的头寄存器未使用的4位中的2位(确切地说是高2位)保留给列号的第11位和第12位。这样,磁头的最大数量是64(2的6次方)。但是当时的操作系统没有使用这种转换方式,认为头寄存器的所有位只能记录头的个数。例如,为了正确转换具有2,048列和64个磁头的硬盘,操作系统需要将列数除以4(512个逻辑列),并将磁头数乘以4(256个逻辑磁头)。然而,由于在bios中所有的磁头编号寄存器都没有打开,当然不可能记录这样的磁头编号。因此,当遇到具有这种运行机制的bios时,系统会在自检时崩溃。

软件容量限制

当时dos分区的限制是由文件分配表(fat)决定的。脂肪加工的存储空间是集群的。FAT处理一个簇的最大长度是32,768字节,最多可以处理65,536个簇。如果两个数相乘,dos的最大分区限制值为2,147,483,648字节或2,048 MB (2,147,483,648/1,648)因此,如果超过此容量的硬盘使用fat格式,则只能识别最大硬盘容量2.048gb。

3.2gb的容量限制:

某些版本的bios无法识别超过6322柱面的硬盘,但这种bios很少见。由于柱面的限制,其最大支持扇区数为6,372,576(6322x16x63),如果乘以512扇区数,其最大支持容量为6,372,5。

76x512=3,262,758,912/1024=3.18gb .

硬盘容量限制为4.2gb:

当时有些操作系统使用8位寄存器存储磁头数量,所以当bios报告硬盘磁头数量等于256(最高容量)时,系统只保存了磁头数量的第一位(即0),导致硬盘配置错误。一旦硬盘头数为16,列数大于8192(2的13次方,因为最后三个寄存器已经被头寄存器借用,实际上就出现了突破528mb容量限制的转换问题。由于这一段是负责的,这里就不详细描述了,所以我们只需要理解有这个限制),系统无法正常识别,所以它的最大容量限制在4.2 GB。

8.4gb的容量限制

我们已经知道int 13服务的寻址方式可以支持高达8.4gb的容量(列、头和扇区的最大数量分别为16,383、16和63,三者的乘积为8.456gb)。所以这个容量限制出现只是时间问题。所以这个限制是目前最常遇到的容量限制。为了解决这个问题,一些供应商定义了一个新的服务扩展标准,扩展了int 13。新的int 13服务扩展标准不使用操作系统的寄存器来传递硬盘的寻址参数,而是使用存储在操作系统内存中的地址包。64位lba地址存储在地址包中。如果硬盘支持lba寻址,低28位将直接传递到ata接口。如果没有,操作系统将首先把lba地址转换成chs地址,然后把它传递给ata接口。这样基于ata总线的chs寻址最大容量为136.9 gb,lba寻址最大容量为137.4gb。

33.8gb的容量限制

在chs寻址中,由于ide(ata)接口的限制,最大列数支持65,535(2到16次方-1),所以当列数大于65,535时,系统无法识别这类硬盘,但lba由于其独特的寻址方式,没有这个问题,具体容量限制为65,535 x 16 x 63 x 512。

137gb的容量限制

这个问题我相信不用提了。目前ide硬盘的磁盘工作模式注定会有这个问题。前面介绍ide(ata)接口的时候,这个问题就已经出现了。当遇到容量限制时,系统会发生什么情况?见见这个

有些问题怎么解决?

容量限制的症状和解决方案:

528 mb

症状:硬盘容量再大,操作系统标识也不超过528mb。解决方案:lba模式设置硬盘,但是当时很多硬盘和bios都不支持这个设置,所以只能更换主板

2.1 gb

硬件问题

症状:开机自检时死机。解决方案:升级bios,强制硬盘跳线,将硬盘设置为lba模式

软件问题

症状:分区的时候发现主分区分成2.1gb容量。解决方法:替换fat 32文件分配(但是早期一些软件无法使用,不支持这种文件格式的操作系统无法使用)。划分多个分区。

3.2gb

症状:开机自检时死机。解决方案:升级bios和lba模式来设置硬盘

4.2gb

症状:在硬盘上创建分区后启动机器时,机器会崩溃。解决方案:升级bios和lba模式设置硬盘

8.4gb

症状:系统报告硬盘容量不超过8.4gb,bios自检时可能会报告硬盘参数错误并崩溃。解决方案:升级bios,采用专用分区软件

33.8gb症状:系统自检时崩溃。解决方案:升级bios,使用专用硬盘管理软件,强制硬盘跳线,使用lba模式管理硬盘

137gb症状:系统自检时无法识别硬盘或崩溃。解决方案:硬盘和主板(可由ata 133控制卡支持)都需要支持最新的ata 133规范(ata 133规范是maxtor刚刚提出的新硬盘传输规范,将当前最大可用寄存器空间从28位增加到48位

同时支持更大的硬盘)

解决方案的要点:

硬件解决方案:

从硬件的角度来说,由于很多问题都是由bios引起的,升级到合适的版本可以突破很多容量限制,比如3.2gb、4.2gb、8.4gb、33.8gb,这是目前解决硬盘容量限制最简单的方法。

另外,选择bios扩展卡也是一个解决方案,但是这个方法是用在旧主板上的。目前主板的bios支持擦写,所以bios扩展卡使用起来比较麻烦,需要我们投入更多的资金。

软件解决方案

根据以上解决方案,只要硬盘支持lba寻址模式,很多方法都可以解决问题。因此,一些公司针对这个问题引入了修补方法,其中最好的是迈拓的迈拓和西部数码的ez drive。这两种解决方案其实都是软件解决方案,可以转换大容量硬盘的各种参数,从而达到满容量使用硬盘的目的。但这类软件不是在操作系统启动后才加载(在磁盘分区中设置一个磁盘管理bios与系统bios进行通信),而是在bios启动后、操作系统启动前加载,所以实现相对简单。

此外,使用专用硬盘分区软件也是一个很好的解决方案。因为新版硬盘分区软件已经附加了int 13扩展标准,可以支持更大容量的硬盘。然而,像maxblast和ez drive一样,它会在系统启动后加载int 13扩展。当硬盘分区表损坏或被覆盖时,磁盘使用又会出现问题。

操作系统限制:

目前有几个操作系统不支持大容量硬盘:dos 6.22或更低,不支持大于8.4 gb的硬盘,也没有解决方案。Windows 95(nt 3.5x)支持int 13扩展和更大容量的硬盘,但fat 16将其每个分区支持的最大容量限制为2gb。另外,以上两种操作系统不支持fat 32格式,所以在使用大硬盘时尽量不要使用以上操作系统。Windows nt 4.0有一个奇怪的问题:当引导分区的容量大于8.4 gb时,nt无法使用超过8.4 gb的其他硬盘空间,所以要注意使用这个操作系统。

Dana >综上所述,我们应该对磁盘容量受限的原因和解决方案有一个感性的认识。一般来说,避免容量限制的问题是更新bios,尽量不要使用chs硬盘寻址模式。以上两点是解决容量限制最简单有效的方法,因为我们不需要投入任何成本,而且适用于所有硬盘,不需要设置或安装繁琐的软件。

附:8.4gb容量限制问题的新解决方案;

一个大容量硬盘在bios中只限于8.4gb,不管它,保存cmos信息,启动系统执行fdisk,先在系统识别的8.4gb硬盘上划分一个分区(即c盘,随机大小),在划分的分区(c盘)上安装windows系统。(注意,只能先划分一个分区。)然后,把这个大硬盘连接到能识别大硬盘满容量的电脑上,完成剩余容量(注意每个逻辑分区的容量不能大于8.4gb)。最后,把这个大硬盘接回一台无法识别8.4gb以上容量的电脑,cmos还是把这个硬盘当成8.4gb,不管他,保存cmos信息,重启系统,进入windows系统,找到全部

注意:以上分区必须按照fat 32模式进行

  • 上一篇:打印机维修不求人 五种简单的维修法
  • 下一篇:电脑主板电容爆浆的原因分析
  • 头条推荐
    相关推荐
    Copyright © 2012 - 2019 www.haiercq.com All Rights Reserved. 漫钰维修网
    蜀ICP备14029888号-1   

    您要预约的项目是

    已有人预约

  • 立即预约