複製鏈接
請複製以下鏈接發送給好友

硬盤容量限制

鎖定
系統無法完全識別或正常使用超過一定容量的硬盤。
中文名
硬盤容量限制
對    象
硬盤
症    狀
在加電自檢時當機
解決方法
升級BIOS、LBA模式設置硬盤

硬盤容量限制歷史發展

1957年IBM公司研製成功的IBM 350(RAMAC)是第一台真正意義上的硬盤存儲器,之後經歷了漫長的技術革新,於80年代初期引入PC(個人電腦),當時的容量僅為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尋址方式來舉例:數據傳輸的開始地址是寫到4個8位寄存器裏的,分別是:
柱面低位寄存器
柱面高位寄存器
扇區寄存器
設備/磁頭寄存器
因此,柱面地址是16位[柱面低位寄存器(8位),柱面高位寄存器(8位)]。扇區地址是8位(注意:扇區寄存器裏第一個扇區是1扇區,而不是0扇區)。而磁頭地址是4位(沒有完全佔用8位)。因此,硬盤柱面的最大數是65,536(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(CHS裏扇區不能從0開始計算),其能尋址的扇區數是268,435,456 (65,536x16x256),這時IDE硬盤的最大容量為137.4GB。
INT 13管理:INT 13管理其實也是按照寄存器的模式來設計的,它的高層即文件管理器層發佈數據讀寫命令和有關的參數給CPU,然後觸發INT 13中斷的進行,激活BIOS的磁盤服務來執行數據傳輸。數據的開始地址被寫到3個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。

硬盤容量限制具體容量限制

硬盤容量限制問題很早就出現了,最初是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容量限制的由來。
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,048MB(2,147,483,648 /1,0242)。因此超過這個容量的硬盤,如果使用FAT格式,就最大隻能識別2.048GB的硬盤容量。
3.2GB的容量限制:
一些版本的BIOS不能識別超過6322柱面的硬盤,不過這種BIOS比較少見,由於柱面有限制,其最高支持扇區數為6,372,576(6322x16x63),如果乘以512扇區容量的話,其最高支持容量為6,372,576x512=3,262,758,912/1024=3.18GB。
4.2GB的硬盤容量限制:
當時一些操作系統使用8位寄存器來存儲磁頭數,這樣當BIOS報告硬盤的磁頭數等於256(最高容量)時,只有磁頭數的最先一位(即0)被系統保存,從而導致硬盤配置錯誤。一旦硬盤的磁頭數是16,柱面數大於8,192(2的13次方,由於後三位寄存器已經被磁頭寄存器借用,其實這裏牽涉到一個突破528MB容量限制的轉換做法的問題,由於這一段比較負責,在這裏就不詳細介紹了,我們只要明白有這個限制就夠了),系統就無法正常識別了,因此其最大的容量就被限制在了4.2GB=8192x16x63x512/1024。
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由於獨特的尋址模式就不存在這個問題,這個容量限制具體為:65535x16x63x512/1024=33.8GB。
137GB的容量限制
相信這個問題就不用提了,目前的磁盤工作方式就註定IDE硬盤存在這個問題,前面介紹IDE(ATA)界面的時候,這個問題就已經出現了 那麼遇到容量限制問題的時候,系統會出現什麼狀況呢?並且遇到這些問題如何解決呢?
2.1TB的容量限制
MBR,主引導記錄(Master Boot Record),也就是現有的硬盤分區模式。MBR分區的標準決定了MBR只支持在2TB以下的硬盤,超過2TB的硬盤只能管理2TB!為解決這個大問題,微軟和英特爾在EFI方案中開發了GPT分區模式。

硬盤容量限制症狀解決方法

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位,從而支持更大的硬盤)
2.1TB
症狀:不能識別2.1TB外的磁盤容量
解決方法:使用GPT分區表和EFI BIOS的主板,windows7或windows xp 64bit 。如使用傳統的BIOS則硬盤只能當從盤使用,不能啓動操作系統

硬盤容量限制解決方案要點

硬件解決方法:
從硬件思路上來看,既然很多問題都是由BIOS引起的,那麼升級到合適的版本也就可以突破很多容量限制了,比如:3.2GB、4.2GB、8.4GB、33.8GB,這也是目前解決硬盤容量限制最簡單的辦法了。
另外選擇BIOS擴展卡也是一個解決方法,不過此方法用於老主板上,目前的主板的BIOS都支持擦寫,BIOS擴展卡使用起來即麻煩又要我們多投入一些金錢。
軟件解決方法:
從上面的解決方法來看,很多方法就是隻要硬盤支持LBA尋址模式就可以解決問題了,因此一些公司推出了針對這個問題修補方法,其中最優秀的就是Maxtor的MaxBlast和Western Digital的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的其它硬盤空間了,因此使用此操作系統要注意。