您目前已離線,請等候您的網際網路重新連線

Windows NT 開機程序和硬碟條件約束

結論
本文將告訴您 Windows NT 和 Windows NT Advanced Server 中的硬碟大小條件約束。如果要瞭解這些條件約束,就必須要瞭解定義磁碟分割的資料結構,以及在硬體和作業系統進行開機程序期間,Windows NT 與所使用之系統 BIOS 介面之間的互動。
其他相關資訊

磁碟分割表

描述硬碟分割的資料結構稱為磁碟分割表,其中包含 16 位元組的項目,最多可包含四個項目。在每個項目中有 10 個欄位,用來描述分割的下列屬性:
欄位大小
Boot Flag1 byte
Starting Side1 byte
Starting Cylinder10 bits
Starting Sector6 bits
System Indicator1 byte
Ending Side1 byte
Ending Cylinder10 bits
Ending Sector6 bits
Relative Sectors4 bytes
Number of sectors4 bytes

系統指示器

「系統指示器」(System Indicator) 是用來指定磁碟分割中包含的檔案系統類型。常見的一些值包括:
檔案系統
0x0BPrimary Fat32 Partitions up to 2047 GB
0x0CSame as 0x0B, uses Logical Block Address Int 0x13 extensions
0x0ESame as 0x06, uses Logical Block Address Int 0x13 extensions
0x0FSame as 0x05, uses Logical Block Address Int 0x13 extensions
0x05Extended partition
0x06BIGDOS File Allocation Table (FAT) format.
0x07Installable File System (IFS), eg:HPFS and NTFS
當磁碟分割為「容錯」(FT,Fault Tolerant) 集合的一部份時,Windows NT 會設定「系統指示器」(System Indicator) 的高位元,以由同類型的非容錯磁碟分割中區分出容錯磁碟分割。例如,容錯 FAT 磁碟分割的「系統指示器」(System Indicator) 數值為 0x86,而容錯 NTFS 磁碟分割的「系統指示器」(System Indicator) 數值為 0x87。

當容錯集合中的成員受到停用時,Windows NT 會設定最高的兩個位元。例如,停用的 FAT 磁碟分割「系統指示器」(System Indicator) 數值為 0xC6,而停用的容錯 NTFS 磁碟分割「系統指示器」(System Indicator) 數值為 0xC7。

開機旗標

「開機旗標」(Boot Flag) 會標示出哪一個磁碟分割在作用中或可以開機,而每個磁碟上只能有一個作用中的磁碟分割。作用中磁碟分割的「開機旗標」(Boot Flag) 值設定為 0x80,磁碟上的其他磁碟分割設定則為 0x00。「主開機記錄」會搜尋此旗標,以尋找作用中的開機磁區。稍後會有對「主開機記錄」更詳細的說明。

起始與結束磁面、磁柱以及磁區

對 Windows NT 與磁碟互動的方式而言,「起始磁面」(Starting Side)、「結束磁面」(Ending Side)、「磁柱」(Cylinder) 和「磁區」(Sector) 是非常重要的欄位。

「磁面」(Side) (讀/寫磁頭) 的最大數量為 256,可以用 1 個位元組表示;「磁柱」(Cylinder) 的最大數量為 1024,可以用 10 位元表示;而「磁區」(Sector) 最大數量為 63,可以用 6 位元表示。這是因為「磁區」(Sector) 從 1 開始計算,而相對的,「磁柱」(Cylinder) 和「磁面」(Side) 從 0 開始計算。

用 10 位元表示的「磁柱」(Cylinder) 值太大,不符合單一位元組。如果要儲存 10 位元,則會從儲存 6 位元「磁區」(Sector) 值的位元組中取用 2 個位元。

當使用 512 位元組的標準磁區大小時,用來記錄起始和結束磁區位址的 24 位元,會轉譯為 7.8 GB (8,455,716,864 位元組) 的最大磁區分割大小,以便能使用這些欄位加以描述。這一點非常重要,因為 INT 13 BIOS 介面會使用相同的欄位大小,來定義系統 BIOS 與硬碟互動的方式。

相對磁區

「相對磁區」(Relative Sector) 代表從磁碟分割表開頭至磁碟分割開頭的位移,以磁區計算。

磁區數量

「磁區數量」(Number of Sector) 代表磁碟分割中的磁區總數。

注意:「相對磁區」(Relative Sector) 和「磁區數量」(Number of Sector) 的欄位大小皆為 32 位元。在大部份的情況中,兩個欄位都包含與「起始磁面」(Starting Side)、「結束磁面」(Ending Side)、「磁柱」(Cylinder) 和「磁區」值相同的資訊 (「起始」和「結束」的總數都以 24 位元表示)。

Windows NT 開機程序

在 Intel 的電腦上,系統 BIOS 控制初始的作業系統開機程序。在初始開機自我測試 (POST,Power On Self Test) 初始化硬體元件後,系統 BIOS 會辨別出開機裝置。開機裝置通常是軟碟或硬碟。如果是硬碟,BIOS 會讀取磁碟上的第一個實體磁區 (稱為「主開機磁區」),然後將其映像載入記憶體。接著,BIOS 會將執行傳輸至「主開機磁區」的映像。

「主開機記錄」包含磁碟分割表以及少量的可執行程式碼。可執行程式碼會檢查磁碟分割表,然後識別作用中的 (或可開機的) 磁碟分割。接著,「主開機記錄」會尋找磁碟上作用中磁碟分割的起始位置,並將其第一個磁區 (稱為「開機磁區」) 的映像載入記憶體。然後,「主開機記錄」會將執行傳輸至該「開機磁區」映像。

「主開機記錄」通常與作業系統無關,但作用中磁碟分割的「開機磁區」卻同時與作業系統和檔案系統相關。在 Windows NT 和 Windows NT Advanced Server 的情況中,「開機磁區」負責找出可執行檔案 NTLDR。這個檔案會繼續開機程序。在此系統開機階段中,「開機磁區」程式碼唯一可用的磁碟服務是由 BIOS INT 13 介面所提供。「開機磁區」程式碼必須能夠尋找 NTLDR 和檔案系統資料結構,例如根目錄、MS-DOS FAT 磁碟區的檔案配置表 (FAT,File Allocation Table),或是 NTFS 磁碟區的主檔案表格 (MFT,Master File Table)。這些結構都必須出現在 BIOS INT 13 介面與磁碟分割表所使用的 24 位元磁面、磁柱和磁區結構裡,能夠定址的磁碟區域中。如此一來,不論使用何種檔案系統,都會將系統磁碟分割的大小限制在 7.8 GB。

注意:不同的電腦硬體與檔案系統,可能適用其他的條件約束。以下將討論一些其他的條件約束。

為了提供大於 7.8 GB 的磁碟分割,Windows NT 忽略在磁碟分割表中「起始」與「結束」區塊位址欄位中的值,而採用「相對位移」(Relative Offset) 和「磁區數量」(Number of sector) 欄位的值。如此一來,可提供 8 個額外的位元來表示磁區。藉著這些額外的位元,最多就可以使用 2^32 個磁區來描述磁碟分割。

當使用 512 位元組的標準磁區大小時,用來代表「相對位移」(Relative Offset) 和「磁區數量」(Number of Sector) 的 32 位元會轉譯為 2 TB 或 2,199,023,255,552 位元組的最大磁碟分割大小。

當磁碟進行分割時,Windows NT 會儘可能將正確的值寫入磁碟分割表欄位中。當磁碟分割中的磁區總數,超過了「磁面」(Side)、「磁柱」(Cylinder) 和「磁區」(Sector) 標記能夠描述的數目時,Windows NT 會在磁碟分割表中的相對欄位寫入所允許的最大值。如此一來,可避免系統 BIOS 根據錯誤的資料,嘗試計算「起始」和「結束」位址。

例如,假設您將 3.5 GB 的 SCSI 磁碟附加至 Adaptec 154x 系列的 SCSI 控制器上時,如果介面卡停用延伸磁區轉譯功能,就會將下列磁碟特性回報給系統 BIOS:
Cylinders:1023, Sides:64, Sectors: 32				
這些會轉譯為大約 1 GB 的大小。在啟用延伸轉譯的情況下,會回報在這個裝置上有下列的特性:
Cylinders:435, Sides:255, Sectors: 63				
這些會轉譯為大約 3.5 GB 的大小。

一旦啟用 Windows NT,其會使用本身的 SCSI 驅動程式直接與磁碟進行互動,而不會使用 BIOS INT 13 介面。因此,在正常作業期間 BIOS 參數大多無關緊要。然而,如果要使用單一磁碟分割格式化磁碟並且用來當做開機磁碟機,其中的差異便非常重要。

在不使用延伸轉譯的情況下,Windows NT 會發現磁碟大於 BIOS 參數指出的大小。當 Windows NT 在初始安裝期間對磁碟機進行磁碟分割時,會在起始與結束磁區位址中填入其可能的最大值。如此一來,儘管磁碟機大小少於 7.8 GB,「主開機記錄」程式碼仍將無法正常運作。

在使用延伸轉譯的情況下,Windows NT 將能在磁碟分割表中寫入起始與結束位址的有效值,使磁碟分割仍然能夠開機。

當延伸轉譯未啟用,且「主開機記錄」無法找到作用中磁碟分割的「開機磁區」時,會顯示下列錯誤訊息:
載入作業系統時發生錯誤。
- 或 -
遺失作業系統。

檔案系統

FAT 和 HPFS 都有 4 GB 的內部限制,因為有 32 位元的欄位要用來儲存檔案大小。NTFS 對所有大小都使用 64 位元的欄位,讓其資料結構最多可處理 2^64 位元組 (16 exabytes 或 18,446,744,073,709,551,616 位元組) 的磁碟區。

此數值為 NTFS 檔案系統的理論限制。實際限制則與上述的可允許最大磁碟分割大小有關,其將 NTFS 磁碟分割的大小限制在大約 2 TB。因為磁碟分割表的 32 位元欄位指的是磁碟分割中的磁區數目,擁有較大磁區大小的磁碟會轉譯為可允許的較大磁碟分割大小。目前 Windows NT 最多可支援 4 KB 的磁區大小。當使用 4 KB 的磁區大小時,Windows NT 可以支援 16 TB 的磁碟分割。當出現可用的新硬體或軟體配置時,NTFS 即能夠處理大幅增加的磁碟區大小。

磁碟機和控制器類型

IDE 磁碟機使用與磁碟分割表和 BIOS INT 13 介面不同的資料結構,來代表每個磁軌的磁柱、磁頭和磁區數。根據 IDE 規格,磁柱最大數目為 65536,磁頭最大數目為 16,每個磁軌的磁區最大數目為 255。這樣會提供最大 136.9 GB 的大小,但是因為 BIOS/IDE 介面受到限制,必須使用最小公分母,所以在 Intel 的 ISA Bus Computer 上,IDE 磁碟機的大小限制大約為 528 MB。有新的磁碟機和驅動程式使用「進階磁碟機參數表」(Enhanced Drive Parameter Table),在 IDE 磁碟機內建的邏輯磁區配置,和可由 BIOS INT 13 介面定址的邏輯磁區配置之間進行轉譯。這些驅動程式和裝置可以支援較大的磁碟。 SCSI II 命令集使用專屬格式的磁區定址方式,目前可支援約 7 GB 大的磁碟。

Windows NT 容錯磁碟區

藉由使用容量組和等量集,Windows NT 和 Windows NT Advanced Server 可允許自多重實體磁碟分割建構邏輯磁碟區。此技術讓 Windows NT 能夠克服各種磁碟控制器所造成的實體硬體限制,以建構大於單一磁碟本身所能支援大小的邏輯磁碟區。

注意:建構的邏輯磁碟區只是看起來像是實體磁碟分割,仍然必須符合上述的磁碟分割表配置。這表示如容量組一類之容錯建構的總磁區數,不能超過 2^32 (或在每個磁區為 512 位元組的情況時,不能超過 2 TB)。
prodnt gb eb
內容

文章識別碼:114841 - 最後檢閱時間:09/20/2004 09:27:00 - 修訂: 2.1

  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Advanced Server 3.1
  • kbhowto kbother KB114841
意見反應