MBR&GPT分區基本原理

1、磁盤系統為什么要分區?

    ?     優化I/O性能

    ?     實現磁盤空間配額限制

          ?     提高修復速度

          ?     隔離系統和程序

   ?     安裝多個OS


2、目前計算機磁盤流行的兩種分區方式:MBRGPT


3、MBR分區原理

   MBR: Master Boot Record, 1982年, 使用32位表示扇區數, 分區不超過2T

如何分區:按柱面
     0磁道0扇區: 512bytes
                446bytes: boot loader主引導分區,可以安裝引導加載程序的地方
                64bytes:分區表,記錄整塊硬盤分區狀態
        其中16bytes: 標識一個分區
                2bytes: 55AA

1.png

2.png

由于分區表只有64字節,因此最多容納4個分區,這四個分區我們稱為主或擴展分區。根據上面的圖示和說明,我們知道:

a、主分區和擴展分區最多只能有四個(硬盤的限制)

b、擴展分區最多只能有一個

c、邏輯分區是由擴展分區持續切割出來的分區

d、能夠被格式化后做數據訪問的分區是主分區與邏輯分區,擴展分區是無法格式化的



4、GPT分區原理

GPT:GUID patition table 支持128個分區,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)
? 使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
? UEFI (統一擴展固件接口)硬件支持GPT

3.png


    EFI部分又可以分為4個區域: EFI信息區(GPT頭)、分區表、 GPT分區、備份區域

    在MBR硬盤中,分區信息直接存儲主引導記錄(MBR)中(主引導記錄中還存儲著系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出于兼容性考慮,硬盤的第一個扇區仍然用作MBR,之后才是GPT頭。

跟現代的MBR一樣,GPT也使用邏輯區塊地址(LBA)取代了早期的CHS尋址方式。傳統MBR信息存儲于LBA 0,GPT頭存儲于LBA 1,接下來才是分區表本身。64位Windows操作系統使用16,384字節(或32扇區)作為GPT分區表,接下來的LBA 34是硬盤上第一個分區的開始。

    為了減少分區表損壞的風險,GPT在硬盤最后保存了一份分區表的副本。總的來說,GPT都將修復 MBR 的許多限制:

  • (1)GPT只使用LBA,因此,CHS問題就不復存在。

  • (2)磁盤指針的大小為64位,假設512字節扇區,這意味著GPT可以處理的磁盤大小最高達512 x 264字節(8zebibytes,即86億TiB)。

  • (3)GPT數據結構在磁盤上存儲兩次:開始和結束各一次。在因事故或壞扇區導致損壞的情況下,這種重復提高了成功恢復的幾率。

  • (4)循環冗余檢驗值針對關鍵數據結構而計算,提高了數據崩潰的檢測幾率。

  • (5)GPT將所有分區存儲在單個分區表中(帶有備份),因此擴展分區或邏輯分區沒有存在的必要。GPT默認支持128個分區,當然您也可以更改分區表的大小,如果您的分區軟件支持這種更改的話。

  • (6)雖然MBR提供1字節分區類型代碼,但GPT使用一個16字節的全局唯一標識符(GUID)值來標識分區類型。這使分區類型更不容易沖突。

  • (7)GPT支持存儲人類可讀的分區名稱。您可以使用這個字段來命名您的Linux /home、/usr、/var和其他分區,以便它們在分區軟件中更容易識別。


LBA 0

    在GPT分區表的最開頭,處于兼容性考慮仍然存儲了一份傳統的MBR(LBA 0),這個MBR也叫做保護性MBR。

    保護性MBR保護GPT磁盤不受以前發布的MBR磁盤工具(比如FDISK或WindowsNT磁盤管理器)的危害。這些工具不能感知GPT,也無法正確地訪問GPT磁盤。不能識別GPT的舊軟件在訪問GPT磁盤時只解釋保護性MBR。這些工具通過解釋保護性MBR,將GPT磁盤看成一個封裝的(可能無法識別)分區,而不是錯誤地當成一個未分區的磁盤,并且拒絕對硬盤進行操作,除非用戶特別要求刪除這個分區。這就避免了意外刪除分區的危險。例如,當在32位的Windows XP系統中掛載GPT磁盤時,會將其識別為“GPT 保護分區(GPT Protective Partition)”,并且用戶無法對這個分區進行任何操作(除非使用命令行工具),這是因為32位的Windows XP并不支持GPT,它僅僅只是知道掛載的是一個GPT磁盤而已。

    在支持從GPT啟動的操作系統中,這里也用于存儲第一階段的啟動代碼。在這個MBR中,只有一個標識為0xEE的分區,以此來表示這塊硬盤使用GPT分區表。

LBA 1

    分區表頭(LBA 1)定義了硬盤的可用空間以及組成分區表的項的大小和數量。在使用64位Windows Server 2003的機器上,最多可以創建128個分區,即分區表中保留了128個項,其中每個都是128字節。(EFI標準要求分區表最小要有16,384字節,即128個分區項的大小)

    分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大?。ㄎ恢每偸窃贚BA 1)以及備份分區表頭和分區表的位置和大?。ㄔ谟脖P的最后)。它還儲存著它本身和分區表的CRC32校驗。固件、引導程序和操作系統在啟動時可以根據這個校驗值來判斷分區表是否出錯,如果出錯了,可以使用軟件從硬盤最后的備份GPT中恢復整個分區表,如果備份GPT也校驗錯誤,硬盤將不可使用。所以GPT硬盤的分區表不可以直接使用16進制編輯器修改。

LBA 2–33

    LBA 2–33的位置存放的是分區表項。GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。例如,EFI系統分區的GUID類型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下來的16字節是該分區唯一的GUID(這個GUID指的是該分區本身,而之前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。

 

原創文章,作者:AndyIvanXue,如若轉載,請注明出處:http://www.www58058.com/41836

(2)
AndyIvanXueAndyIvanXue
上一篇 2016-08-30 13:55
下一篇 2016-08-30 13:55

相關推薦

  • javascript快速入門

    標識符多了一個美元符號python中只有字母和下劃線和數字,數字不能開頭數據類型有number(整形和浮點型),boolean,string,null,undefined(聲明未賦值),symbol(新引入),object類型(基本類型和特殊類型外的其他類型) 引入一個變量要先申明,var a,let b常量類型,聲明時定義,python中不存在const …

    Linux干貨 2018-01-15
  • top,htop,ps,dstat命令的使用

    top top是一個動態顯示過程,即可跟據用戶的按鍵不斷刷新當前狀態,top命令提供了實時的對當前系統的狀態監視。 top – 11:53:40 up 11 days, 13:32,  3 users,  load average:&nbs…

    Linux干貨 2017-03-15
  • SElinux

    SElinux:Secure Enhanced Linux   SElinux工作與linux內核中他所實現的功能叫做強制訪問控制機制。DAC:是linux的自主訪問控制。MAC:是SElinux引入的訪問法則,叫作強制訪問控制。   SElinux有兩種工作級別:     strick:嚴格級別,每個進程都收到SEl…

    Linux干貨 2016-09-23
  • rpm包管理

    一、概述 RPM 是RPM Package Manager(RPM軟件包管理器)的縮寫。由redhat公司的Redhat package manager改名而來,成了RedHat的工業標準 二、rpm的命名格式: rpm包的命名格式:name-version-relase.arch.rpm version: major.minor.release,同源代碼 …

    Linux干貨 2015-10-07
  • Linux用戶和組相關知道小結

    用戶和組主要配置文件相關的參數,以及這些文件管理常用的命令。有很多的不足的地方。望大家指導。

    Linux干貨 2017-11-18
  • 馬哥教育網絡班21期-第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     cp -R /etc/skel /home/tuser1     chmod g-rwx,o-r…

    Linux干貨 2016-08-03
欧美性久久久久