引述 (OneNet魔力小子 技術部落格)

克服Windows基本磁碟2TB分割區上限問題
 
在Windows下建立大型磁碟分割區時,最多只能建立到2TB,即使不需要多個分割區,仍會被迫將磁碟陣列切割為多個分割區,才能充分利用容量,這是什麼原因?如何突破限制?

在Windows下以實體磁碟機建立基本磁碟時,是以分割(Partition)作為儲存與管理的單位,又分為主要分割與延伸分割,主要磁碟分割中可存放引導系統開機用的主開機紀錄,藉由MBR分區表(partition table)可啟動各個延伸分割,進而啟始作業系統。

但問題在於受定址能力所限, MBR分割表對應的分割容量上限為2TB,若實體磁碟的容量大於2TB,則必須分割為多個基本磁碟區。
這對只有1~2臺硬碟的一般單機應用環境來說問題不大,但在磁碟陣列應用上就會造成許多限制。考慮到現在的硬碟容量越來越大,單臺容量750GB與1TB的產品都已經上市,若使用這類硬碟建立磁碟陣列,只要用上2或3臺硬碟就會遭遇2TB上限問題。

動態磁碟
微軟後來在Windows 2000上增加了動態磁碟(Dynamic disks)的概念,可提供基本磁碟所沒有的功能。動態磁碟是以磁碟區(Volume)為管理單位,透過檔案系統之下的磁碟區管理器(Volume Manager),可建立跨越多個磁碟的磁碟區,如跨距或等量磁碟區;或是建立有容錯功能的磁碟區,如鏡像磁碟區與RAID 5 磁碟區。

動態磁碟雖能透過跨距或等量磁碟的方式實現2TB以上的磁碟區,但因為動態磁碟必須透過Volume Manager來執行磁碟區的管理與存取,因此系統存取動態磁碟時必須經過Volume Manager與檔案系統兩層的處理,以致有效能方面的問題。

GUID 磁碟分割
根本解決方式是提高作業系統對磁碟分割的定址能力,如微軟在Windows Server 2003新增的GUID 磁碟分割表(GUID Partition Table,GPT)。GPT分割表支援的磁碟區分割最大可達18 EB,每個磁碟最多可有128個磁碟分割,相較下傳統的MBR分割則分別只有2TB與4個分割。

但在實際環境中,作業系統支援GPT分割只是建立2TB以上磁碟區的必要條件之一,其他條件包括磁碟陣列控制器或主機板上內建的磁碟控制晶片必須支援大於2TB的Volume定址,且該控制器或控制晶片在Windows中的驅動程式也必須支援64位元的邏輯區塊定址(Logical Block Addressing,LBA)。文⊙張明德

限制儲存容量的因素

從最上層應用程式資料到儲存裝置,資料必須經過應用程式、作業系統、檔案系統、磁碟區管理器(Volume Manager)、儲存裝置驅動程式、儲存裝置等環節,任一環節都會影響到可用的儲存容量。

1. 不同版本作業系統的硬碟分割方式(Partition styles)支援的分割區容量不同。如MBR分割的分割區上限為2TB,GPT分割則可達到18EB。

2. 不同檔案系統支援的分割區大小不同,FAT16上限為2GB,FAT32為2TB,NTFS為16EB。

3. Volume Manager的作用是將對磁碟的存取轉換為對應的指令,對於ATA設備發送ATA指令;對SCSI設備則發送一個包含SCSI的指令,而SCSI Block Command指令中的LBA位址變數長度,將決定一個目標上的LUN所能存取的儲存空間。原來的SCSI指令集中的LBA為32位元,而硬碟每個區塊大小為512Bytes,2的32次方乘以512等於2TB,也就有2TB的限制。而在SCSI Block Command第二版中,LBA已擴展到64位元,因而突破了限制。

4. 儲存設備與儲存設備驅動程式方面,舊的IDE硬碟採用的CHS定址上限為512MB,後來改用28位元LBA就達到137GB。目前SATA與SCSI/SAS硬碟多使用48位元LBA定址,容量上限為137TB。

早先的限制主要出在硬碟的定址能力方面,後來改用48位元LBA後消除了這個限制,但作業系統分割方式、檔案系統與存取指令又成為瓶頸。在Windows導入GPT磁碟後,目前的瓶頸又回到磁碟LBA定址能力上,不過目前48位元LBA應該還能維持很長的時間。

arrow
arrow
    全站熱搜

    yoonow 發表在 痞客邦 留言(0) 人氣()