GPT磁盤與MBR磁盤區別!!!

摘要:   Windows 2008磁盤管理器中,在磁盤標籤處右擊鼠標,隨磁盤屬性的不一樣會出現「轉換到動態磁盤」,「轉換到基本磁盤」「轉換成GPT磁盤」,「轉換成MBR磁盤」等選項,在此作簡單介紹。部分資料參照網絡上的資源。 小程序

基本磁盤與動態磁盤
    磁盤的使用方式能夠分爲兩類:一類是「基本磁盤」。基本磁盤很是常見,咱們平時使用的磁盤類型基本上都是「基本磁盤」。「基本磁盤」受26個英文字母的限制,也就是說磁盤的盤符只能是26個英文字母中的一個。由於A、B已經被軟驅佔用,實際上磁盤可用的盤符只有C~Z 24個。另外,在「基本磁盤」上只能創建四個主分區(注意是主分區,而不是擴展分區);另外一種磁盤類型是「動態磁盤」。「動態磁盤」不受26個英文字母的限制,它是用「卷」來命名的。「動態磁盤」的最大優勢是能夠將磁盤容量擴展到非鄰近的磁盤空間。
    動態硬盤,是指在磁盤管理器中將本地硬盤升級得來的。動態磁盤與基本磁盤相比,最大的不一樣就是再也不採用之前的分區方式,而是叫作卷集(Volume),卷集分爲簡單卷、跨區卷、帶區卷、鏡像卷、RAID-5 卷。基本磁盤和動態磁盤相比,有如下區別:
    一、卷集或分區數量。動態磁盤在一個硬盤上可建立的卷集個數沒有限制。而基本磁盤在一個硬盤上只能分最多四個主分區。
    二、磁盤空間管理。動態磁盤能夠把不一樣磁盤的分區建立成一個卷集,而且這些分區能夠是非鄰接的,這樣的大小就是幾個磁盤分區的總大小。基本磁盤則不能跨硬盤分區而且要求分區必須是連續的空間,每一個分區的容量最大隻能是單個硬盤的最大容量,存取速度和單個硬盤相比也沒有提高。
    三、磁盤容量大小管理。動態磁盤容許咱們在不從新啓動機器的狀況下調整動態磁盤大小,並且不會丟失和損壞已有的數據。而基本磁盤的分區一旦建立,就沒法更改容量大小,除非藉助於第三方磁盤工具軟件,好比PQ Magic。
    四、磁盤配置信息管理和容錯。動態磁盤將磁盤配置信息放在磁盤中,若是是RAID容錯系統會被複制到 其餘動態磁盤上,這樣能夠利用RAID-1的容錯功能,若是某個硬盤損壞,系統將自動調用另外一個硬盤的數據,保持數據的完整性。而基本磁盤將配置信息存放在引導區,沒有容錯功能。
    基本磁盤轉換爲動態磁盤能夠直接進行,可是該過程是不可逆的。要想轉回基本磁盤,只有把全部數據所有拷出,而後刪除硬盤全部分區後才能轉回去。windows

GPT磁盤與MBR磁盤
    GPT(Globally Unique Identifier Partition Table Format)一種由基於 Itanium 計算機中的可擴展固件接口 (EFI) 使用的磁盤分區架構。與主啓動記錄 (MBR) 分區方法相比,GPT 具備更多的優勢,由於它容許每一個磁盤有多達 128 個分區,支持高達 18 千兆兆字節的卷大小,容許將主磁盤分區表和備份磁盤分區表用於冗餘,還支持惟一的磁盤和分區 ID (GUID)。
    與支持最大卷爲 2 TB (terabytes) 而且與每一個磁盤最多有 4 個主分區(或 3 個主分區,1 個擴展分區和無限制的邏輯驅動器)的主啓動記錄 (MBR) 磁盤分區的樣式相比,GUID 分區表 (GPT) 磁盤分區樣式支持最大卷爲 18 EB (exabytes) 而且每磁盤最多有 128 個分區。與 MBR 分區的磁盤不一樣,相當重要的平臺操做數據位於分區,而不是位於非分區或隱藏扇區。另外,GPT 分區磁盤有多餘的主要及備份分區表來提升分區數據結構的完整性。
    在運行帶有 Service Pack 1 (SP1) 的 Windows Server 2003 的基於 x86 的計算機和基於 x64 的計算機上,操做系統必須駐留在 MBR 磁盤上。其餘的硬盤能夠是 MBR 或 GPT。
    在基於 Itanium 的計算機上,操做系統加載程序和啓動分區必須駐留在 GPT 磁盤上。其餘的硬盤能夠是 MBR 或 GPT。
    在單個動態磁盤組中既能夠有 MBR,也能夠有 GPT 磁盤。也使用將基本 GPT 和 MBR 磁盤的混合,但它們不是磁盤組的一部分。能夠同時使用 MBR 和 GPT 磁盤來建立鏡像卷、帶區卷、跨區卷和 RAID-5 卷,可是 MBR 的柱面對齊的限制可能會使得建立鏡像卷有困難。一般能夠將 MBR 的磁盤鏡像到 GPT 磁盤上,從而避免柱面對齊的問題。能夠將 MBR 磁盤轉換爲 GPT 磁盤,而且只有在磁盤爲空的狀況下,才能夠將 GPT 磁盤轉換爲 MBR 磁盤。不然數據將發生丟失!!!
    不能在可移動媒體,或者在與羣集服務使用的共享 SCSI 或 Fibre Channel 總線鏈接的羣集磁盤上使用 GPT 分區樣式安全

MBR,全稱爲Master Boot Record,即硬盤的主引導記錄。
爲了便於理解,通常將MBR分爲廣義和狹義兩種:廣義的MBR包含整個扇區(引導程序、分區表及分隔標識),也就是上面所說的主引導記錄;而狹義的MBR僅指引導程序而言。
硬盤的0柱面、0磁頭、1扇區稱爲主引導扇區(也叫主引導記錄MBR)。它由三個部分組成,主引導程序、硬盤分區表DPT和硬盤有效標誌(55AA)。在總共512字節的主引導扇區裏主引導程序(boot loader)佔446個字節,第二部分是Partition table區(分區表),即DPT,佔64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。第三部分是magic number,佔2個字節,固定爲55AA。
MBR是不屬於任何一個操做系統,也不能用操做系統提供的磁盤操做命令來讀取它,但能夠經過命令來修改和重寫,如在minix3裏面,能夠用命令:installboot -m /dev/c0d0 /usr/mdec/masterboot來把masterboot這個小程序寫到mbr裏面,masterboot一般用匯編語言來編寫。咱們也能夠用ROM-BIOS中提供的INT13H的2號功能來讀出該扇區的內容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來讀取。
用INT13H的讀磁盤扇區功能的調用參數以下:
入口參數:AH=2 (指定功能號)
AL=要讀取的扇區數
DL=磁盤號(0、1-軟盤;80、81-硬盤)
DH=磁頭號
CL高2位+CH=柱面號
CL低6位=扇區號
CS:BX=存放讀取數據的內存緩衝地址
出口參數:CS:BX=讀取數據存放地址
錯誤信息:若是出錯CF=1 AH=錯誤代碼
用DEBUG讀取位於硬盤0柱面、0磁頭、1扇區的操做以下:
A>DEBUG
-A 100
XXXX:XXXX MOV AX,0201 (用功能號2讀1個扇區)
XXXX:XXXX MOV BX,1000 (把讀出的數據放入緩衝區的地址爲CS:1000)
XXXX:XXXX MOV CX,0001 (讀0柱面,1扇區)
XXXX:XXXX MOV DX,0080 (指定第一物理盤的0磁頭)
XXXX:XXXX INT 13
XXXX:XXXX INT 3
XXXX:XXXX (按回車鍵)
-G=100 (執行以上程序段)
-D 1000 11FF (顯示512字節的MBR內容)
在windows操做系統下,例如xp,2003,Vista,windows7,有微軟提供的接口直接讀寫mbr;
FILE * fd=fopen("\\\\.\\PHYSICALDRIVE0","rb+");
char buffer[512];
fread(buffer,512,1,fd);
//then you can edit buffer[512] as your wish......
fseek(fd,0,SEEK_SET); //很重要
fwrite(buffer,512,1,fd); //把修改後的MBR寫入到你的機器
fclose(fd); //大功告成
MBR組成
一個扇區的硬盤主引導記錄MBR由如圖6-15所示的4個部分組成。
·主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行系統引導程序。
·出錯信息數據區,偏移地址0089H--00E1H爲出錯信息,00E2H--01BDH全爲0字節。
·分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,每一個分區表項長16個字節,共64字節爲分區項一、分區項二、分區項三、分區項4。
·結束標誌字,偏移地址01FE--01FF的2個字節值爲結束標誌55AA,若是該標誌錯誤系統就不能啓動。
服務器

補充知識:EFI(可擴展固件接口)
    可擴展固件接口(英文名Extensible Firmware Interface 或EFI)是由英特爾,一個主導我的電腦技術研發的公司推出的一種在將來的類PC的電腦系統中替代BIOS的升級方案。BIOS技術的興起源於IBM PC/AT機器的流行以及第一臺由康柏公司研製生產的「克隆」PC。在PC啓動的過程當中,BIOS擔負着初始化硬件,檢測硬件功能,以及引導操做系統的責任,在早期,BIOS還提供一套運行時的服務程序給操做系統及應用程序使用。BIOS程序存放於一個掉電後內容不會丟失的只讀存儲器中,系統加電時處理器的第一條指令的地址會被定位到BIOS的存儲器中,便於使初始化程序獲得執行。

EFI的產生 網絡

    衆所周知,英特爾在近二十年來引領以x86系列處理器爲基礎的PC技術潮流,它的產品如CPU,芯片組等在PC生產線中佔據絕對領導的位置。所以,很多人認爲這一舉動顯示了英特爾公司欲染指固件產品市場的野心。事實上,EFI技術源於英特爾安騰處理器(Itanium)平臺的推出。安騰處理器是英特爾瞄準服務器高端市場投入近十年研發力量設計產生的與x86系列徹底不一樣的64位新架構。在x86系列處理器進入32位的時代,因爲兼容性的緣由,新的處理器(i80386)保留了16位的運行方式(實模式),此後屢次處理器的升級換代都保留了這種運行方式。甚至在含64位擴展技術的至強系列處理器中,處理器加電啓動時仍然會切換到16位的實模式下運行。英特爾將這種狀況歸咎於BIOS技術的發展緩慢。自從PC兼容機廠商經過淨室的方式複製出第一套BIOS源程序,BIOS就以16位彙編代碼,寄存器參數調用方式,靜態連接,以及1MB如下內存固定編址的形式存在了十幾年。雖然因爲各大BIOS廠商近年來的努力,有許多新元素添加到產品中,如PnP BIOS,ACPI,傳統USB設備支持等等,但BIOS的根本性質沒有獲得任何改變。這迫使英特爾在開發更新的處理器時,都必須考慮加進使效能大大下降的兼容模式。有人曾打了一個比喻:這就像保時捷新一代的全自動檔跑車被人生套上去一個蹩腳的掛檔器。
然而,安騰處理器並無這樣的顧慮,它是一個新生的處理器架構,系統固件和操做系統之間的接口均可以徹底從新定義。而且這一次,英特爾將其定義爲一個可擴展的,標準化的固件接口規範,不一樣於傳統BIOS的固定的,缺少文檔的,徹底基於經驗和晦澀約定的一個事實標準。基於EFI的第一套系統產品的出現至今已經有五年的時間,現在,英特爾試圖將成功運用在高端服務器上的技術推廣到市場佔有率更有優點的PC產品線中,並承諾在2006年間會投入全力的技術支持。

比較EFI和BIOS 數據結構

    一個顯著的區別就是EFI是用模塊化,C語言風格的參數堆棧傳遞方式,動態連接的形式構建的系統,較BIOS而言更易於實現,容錯和糾錯特性更強,縮短了系統研發的時間。它運行於32位或64位模式,乃至將來加強的處理器模式下,突破傳統16位代碼的尋址能力,達處處理器的最大尋址。它利用加載EFI驅動的形式,識別及操做硬件,不一樣於BIOS利用掛載實模式中斷的方式增長硬件功能。後者必須將一段相似於驅動的16位代碼,放置在固定的0x000C0000至0x000DFFFF之間存儲區中,運行這段代碼的初始化部分,它將掛載實模式下約定的中斷向量向其餘程序提供服務。例如,VGA圖形及文本輸出中斷(INT 10h),磁盤存取中斷服務(INT 13h)等等。因爲這段存儲空間有限(128KB),BIOS對於所需放置的驅動代碼大小超過空間大小的狀況無能爲力。另外,BIOS的硬件服務程序都已16位代碼的形式存在,這就給運行於加強模式的操做系統訪問其服務形成了困難。所以BIOS提供的服務在現實中只能提供給操做系統引導程序或MS-DOS類操做系統使用。而EFI系統下的驅動並非由能夠直接運行在CPU上的代碼組成的,而是用EFI Byte Code編寫而成的。這是一組專用於EFI驅動的虛擬機器指令,必須在EFI驅動運行環境(Driver Execution Environment,或DXE)下被解釋運行。這就保證了充分的向下兼容性,打個比方說,一個帶有EFI驅動的擴展設備,既能夠將其安裝在安騰處理器的系統中,也能夠安裝於支持EFI的新PC系統中,而它的EFI驅動不須要從新編寫。這樣就無需對系統升級帶來的兼容性因素做任何考慮。另外,因爲EFI驅動開發簡單,全部的PC部件提供商均可以參與,情形很是相似於現代操做系統的開發模式,這個開發模式曾使Windows在短短的兩三年時間內成爲功能強大,性能優越的操做系統。基於EFI的驅動模型可使EFI系統接觸到全部的硬件功能,在操做操做系統運行之前瀏覽萬維網站再也不是天方夜譚,甚至實現起來也很是簡單。這對基於傳統BIOS的系統來講是件不可能的任務,在BIOS中添加幾個簡單的USB設備支持都曾使不少BIOS設計師痛苦萬分,更況且除了添加對無數網絡硬件的支持外,還得憑空構建一個16位模式下的TCP/IP協議棧。
一些人認爲BIOS只不過是因爲兼容性問題遺留下來的無足輕重的部分,不值得爲它花費太大的升級努力。而反對者認爲,當BIOS的出現制約了PC技術的發展時,必須有人對它做必要的改變。

EFI和操做系統 架構

    EFI在概念上很是相似於一個低階的操做系統,而且具備操控全部硬件資源的能力。很多人感受它的不斷髮展將有可能代替現代的操做系統。事實上,EFI的締造者們在初版規範出臺時就將EFI的能力限制於不足以威脅操做系統的統治地位。首先,它只是硬件和預啓動軟件間的接口規範;其次,EFI環境下不提供中斷的訪問機制,也就是說每一個EFI驅動程序必須用輪詢的方式來檢查硬件狀態,而且須要以解釋的方式運行,較操做系統下的驅動效率更低;再則,EFI系統不提供複雜的存儲器保護功能,它只具有簡單的存儲器管理機制,具體來講就是指運行在x86處理器的段保護模式下,以最大尋址能力爲限把存儲器分爲一個平坦的段,全部的程序都有權限存取任何一段位置,並不提供真實的保護服務。當EFI全部組件加載完畢時,系統能夠開啓一個相似於操做系統Shell的命令解釋環境,在這裏,用戶能夠調入執行任何EFI應用程序,這些程序能夠是硬件檢測及除錯軟件,引導管理,設置軟件,操做系統引導軟件等等。理論上來講,對於EFI應用程序的功能並無任何限制,任何人均可以編寫這類軟件,而且效果較之前MS-DOS下的軟件更華麗,功能更強大。一旦引導軟件將控制權交給操做系統,全部用於引導的服務代碼將所有中止工做,部分運行時代服務程序還能夠繼續工做,以便於操做系統一時沒法找到特定設備的驅動程序時,該設備還能夠繼續被使用。

EFI的組成 框架

通常認爲,EFI由如下幾個部分組成:
1. Pre-EFI初始化模塊
2. EFI驅動執行環境
3. EFI驅動程序
4. 兼容性支持模塊(CSM)
5. EFI高層應用
6. GUID 磁盤分區 模塊化


    在實現中,EFI初始化模塊和驅動執行環境一般被集成在一個只讀存儲器中。Pre-EFI初始化程序在系統開機的時候最早獲得執行,它負責最初的CPU,主橋及存儲器的初始化工做,緊接着載入EFI驅動執行環境(DXE)。當DXE被載入運行時,系統便具備了枚舉並加載其餘EFI驅動的能力。在基於PCI架構的系統中,各PCI橋及PCI適配器的EFI驅動會被相繼加載及初始化;這時,系統進而枚舉並加載各橋接器及適配器後面的各類總線及設備驅動程序,周而復始,直到最後一個設備的驅動程序被成功加載。正因如此,EFI驅動程序能夠放置於系統的任何位置,只要能保證它能夠按順序被正確枚舉。例如一個具PCI總線接口的ATAPI大容量存儲適配器,其EFI驅動程序通常會放置在這個設備的符合PCI規範的擴展只讀存儲器(PCI Expansion ROM)中,當PCI總線驅動被加載完畢,並開始枚舉其子設備時,這個存儲適配器旋即被正確識別並加載它的驅動程序。部分EFI驅動程序還能夠放置在某個磁盤的EFI專用分區中,只要這些驅動不是用於加載這個磁盤的驅動的必要部件。在EFI規範中,一種突破傳統MBR磁盤分區結構限制的GUID磁盤分區系統(GPT)被引入,新結構中,磁盤的分區數再也不受限制(在MBR結構下,只能存在4個主分區),而且分區類型將由GUID來表示。在衆多的分區類型中,EFI系統分區能夠被EFI系統存取,用於存放部分驅動和應用程序。不少人擔憂這將會致使新的安全性因素,由於EFI系統比傳統的BIOS更易於受到計算機病毒的攻擊,當一部分EFI驅動程序被破壞時,系統有可能面臨沒法引導的狀況。實際上,系統引導所依賴的EFI驅動部分一般都不會存放在EFI的GUID分區中,即便分區中的驅動程序遭到破壞,也能夠用簡單的方法獲得恢復,這與操做系統下的驅動程序的存儲習慣是一致的。CSM是在x86平臺EFI系統中的一個特殊的模塊,它將爲不具有EFI引導能力的操做系統提供相似於傳統BIOS的系統服務。

EFI的發展 工具

    英特爾無疑是推廣EFI的積極因素,近年來因爲業界對其認識的不斷深刻,更多的廠商正投入這方面的研究。包括英特爾,AMD在內的一些PC生產廠家聯合成立了聯合可擴展固件接口論壇,它將在近期推出初版規範。這個組織將接手規劃EFI發展的重任,並將英特爾的EFI框架解釋爲這個規範的一個具體實現。另外,各大BIOS提供商如Phoenix, AMI等,原先被認爲是EFI發展的阻礙力量,如今也不斷的推出各自的解決方案。分析人士指出,這是因爲BIOS廠商在EFI架構中從新找到了諸如Pre-EFI啓動環境之類的市場位置,然而,隨着EFI在PC系統上的成功運用,以及英特爾新一代芯片組的推出,這一部分市場份額將會不出意料的在英特爾的掌控之中。

關於UEFI     UEFI中圖形化的硬件設置界面Extensible Firmware Interface(EFI,可擴展固件接口)是 Intel 爲全新類型的 PC 固件的體系結構、接口和服務提出的建議標準。其主要目的是爲了提供一組在 OS 加載以前(啓動前)在全部平臺上一致的、正確指定的啓動服務,被看作是有近20多年曆史的PC BIOS的繼任者。 因爲電腦教育普及,不少人都知道BIOS就是Basic Input/Output System,翻成中文是「基本輸入/輸出系統」,是一種所謂的「固件」,負責在開機時作硬件啓動和檢測等工做,而且擔任操做系統控制硬件時的中介角色。 然而,那些都是過去DOS 時代的事情,自從Windows NT出現,Linux 開始嶄露頭角後,這些操做系統已將過去須要經過BIOS完成的硬件控制程序放在操做系統中完成,不再須要調用BIOS功能。通常來講,當今所謂的「電腦高手」,多半是利用BIOS來對硬件性能作些超頻調校,除了專業人士外,鮮有人再利用 BIOS 進行底層工做。 由於硬件發展迅速,傳統式(Legacy)BIOS 成爲進步的包袱,如今已發展出最新的EFI(Extensible Firmware Interface)可擴展固件接口,以如今傳統 BIOS 的觀點來講,將來將是一個「沒有特定 BIOS」的電腦時代。 UEFI是由EFI1.10爲基礎發展起來的,它的全部者已再也不是Intel,而是一個稱做Unified EFI Form(www.uefi.org)的國際組織,貢獻者有Intel,Microsoft,AMI,等幾個大廠,屬於open source,目前版本爲2.1。與legacy BIOS 相比,最大的幾個區別在於: 1. 編碼99%都是由C語言完成; 2. 一改以前的中斷、硬件端口操做的方法,而採用了Driver/protocal的新方式; 3. 將不支持X86模式,而直接採用Flat mode(也就是不能用DOS了,如今有些 EFI 或 UEFI 能用是由於作了兼容,但實際上這部分不屬於UEFI的定義了); 4. 輸出也再也不是單純的二進制code,改成Removable Binary Drivers; 5. OS啓動再也不是調用Int19,而是直接利用protocol/device Path; 6. 對於第三方的開發,前者基本上作不到,除非參與BIOS的設計,可是還要受到ROM的大小限制,然後者就便利多了。 UEFI將是近3年的趨勢,到時候對於PC的利用以及維護都將步入一個新的時代。 [編輯本段]UEFI結構 uEFI概念根據UEFI概念圖的結構,咱們將把uEFI概念劃爲兩部分:uEFI的實體 (uEFI Image)跟平臺初始化框架。 uEFI的實體-uEFI Image(圖中藍框圍起部分) 根據uEFI規範定義,uEFI Image包含三種:uEFI Applications, OS Loaders and uEFI Drivers。 uEFI Applications是硬件初始化完,操做系統啓動以前的核心應用,好比:啓動管理、BIOS設置、uEFI Shell、診斷程式、調度和供應程式、調試應用...等等 OS Loaders是特殊的uEFI Application,主要功能是啓動操做系統並退出和關閉uEFI應用。 uEFI Drivers是提供設備間接口協議,每一個設備獨立運行提供設備版本號和相應的參數以及設備間關聯,再也不須要基於操做系統的支持。 啓動隊列 平臺初始化框架 uEFI框架主要包含兩部分,一是PEI(EFI預初始化),另外一部分是驅動執行環境 (DXE)。 PEI主要是用來檢測啓動模式、加載主存儲器初始化模塊、檢測和加載驅動執行環境核心。 DXE是設備初始化的主要環節,它提供了設備驅動和協議接口環境界面。

相關文章
相關標籤/搜索