來源:51CTO.com
一、問題提出
硬盤越做越大,然我喜歡讓我憂。10年前就遇到過在586電腦BIOS不認識超過8.4G容量硬盤的問題,以及Windows Nt操作系統(tǒng)不認大硬盤(容量超過8.4G)的問題,對于Linux 通過LILO啟動的時候也不能突破硬盤8.4G容量的限制。
原因主要是這樣,過去的BIOS使用的是8位尋址方式編號從0到7,故他表示的范圍是0-255之間變化,硬盤容量大小的計算方法是:512X磁頭數(shù)X柱面數(shù)X每磁道扇區(qū)數(shù),每個扇區(qū)的大小是512字節(jié),所以******尋址范圍是: (1024 * 255 * 63 * 512/1024/1024)=8.4G 。
目前的電腦主板BIOS普遍采用48位尋址,早已解決了137G硬盤的限制,***近我們機房服務器升級更換批舊服務器,需要把UNIX系統(tǒng)更換到新機器上,機房到了一批新Dell OptiplesGx755 PC,配置有120G硬盤,用作UNIX Server,操作系統(tǒng)為Sco UNIX Open Server 5.0.6。
先按默認參數(shù)在其上安裝UNIX,安裝完畢后發(fā)現(xiàn),進入UNIX后只能找到8G的硬盤空間。因為這批機器是專門配置為在UNIX下工作的,剩下約112G無法利用,硬盤的利用率只有7%,資源浪費極大。我們就開始做實驗繼續(xù)嘗試不同的方法解決問題。
二、一組實驗結(jié)果
為了攻克這一課題,我們用代替法反復實驗,在HP,IBM,多款120G硬盤的PC上,采用了不SCO 提供的大容量硬盤安裝模式,在biosgeom指定參數(shù)安裝Sco OpenServer 5.0.6,發(fā)現(xiàn)下列情況:
(a)在IBM、HP多款PC上安裝UNIX等正常引導,但發(fā)安裝OS的硬盤,拆到DELL機器上,卻不能正常引導,開機顯示“NO OS";
(b)在dell pc上安裝120G的UNIX,改用大硬盤安裝參數(shù)時,不能正常引導,開機顯示“NO OS”,使用默認方式只能認到8G磁盤空間,浪費極大。所以我認為,Dell Optiplex Gx755 pc 應該可以支持Unix,否則8G的UNIX也不能用。
三、分析原因
根據(jù)上述情況,我認為關(guān)鍵問題出在硬盤的主引導扇區(qū)(位于整個硬盤的0磁道0柱面1扇區(qū))上,再深入分析一下,硬盤的主引導扇區(qū)的組成為主引導記錄(1BEH byte)+分區(qū)表(40H byte)+結(jié)束標志(2H byte)。
UNIX系統(tǒng)的安裝程序會把硬盤參數(shù)寫入主引導記錄:******次安裝UNIX時,由于原硬盤上的主引導記錄不是UNIX格式,安裝程序會想硬盤寫入UNIX格式的主引導記錄;以后用缺省參數(shù)重裝UNIX;如果原有主引導記錄已經(jīng)是UNIX格式,則安裝程序不再修改主引導記錄;如果采用biosgeom指定參數(shù)安裝,UNIX的安裝程序?qū)⒅貙懼饕龑в涗洝?
默認安裝UNIX時,安裝程序識別硬盤***多有1024個Cylinder,當硬盤實際Cylinder數(shù)量小于1024,安裝程序在主引導記錄寫入實際的Cylinder,Head,Sectors數(shù)(磁盤大小=cylinders x heads x sectors per track x 512);當大于1024時,安裝程序在主引導記錄中標記硬盤的cylinder數(shù)為1024,連同head,sectors數(shù)一起寫到
硬盤的主引導記錄,這些參數(shù)表示硬盤的總?cè)萘看笮?而UNIX分區(qū)大小則在分區(qū)表中定義。在UNIX引導時系統(tǒng)顯示的Cylinder,Head,Sectors數(shù)就是從主引導記錄中讀取的。Dell P c引導UNIX時,如果主引導記錄中的Cylinder數(shù)超過1024,將導致BIOS 引導程序無法找到操作系統(tǒng),而顯示“NO OS"。
四、解決方法
現(xiàn)在市面上的硬盤的硬盤控制器內(nèi)部安裝了一個地址翻譯器,早已突破了1024柱面的限制,但我們在安裝系統(tǒng)的時候還是要注意,一定要在BIOS中將硬盤設(shè)置成LBA模式。下面我們解決問題的思路是這樣的,可以假設(shè)在安裝了120G的UNIX的硬盤上,主引導記錄換成能正常引導8G的UNIX硬盤的主引導記錄,引導系統(tǒng)時,應該可以找到操作系統(tǒng),只要機器能夠引導,UNIX就能夠找到的空間由分區(qū)表確定。真正有價值的東西不會輕易退出歷史的舞臺,Debug就是這樣的經(jīng)典作品之一,但到了關(guān)鍵時刻還得請他出馬。