Windows存儲管理之磁盤結構詳解

在之前一篇《Windows存儲管理之磁盤類型簡介》中介紹了Windows的基本磁盤類型。本篇中將對GPT和MBR這兩類磁盤類型的結構進行深入介紹。


Windows磁盤結構:


Windows的主流磁盤結構分爲MBR和GPT兩種。MBR是早期Windows的唯一選擇,但是隨着物理磁盤的容量不斷增大。GPT結構成爲目前的主流,最大支持超過2TB的容量,提供容錯,多分區支持,比MBR來的更加強大。


MBR(Master Boot Record )磁盤結構:


在Basic MBR Disk中的MBR中包含了幾種信息。


  • Bootstrap Code – 也叫Master boot code,它是一段可執行的代碼,主要作用是,掃描活動分區的分區表,尋找活動分區的開始扇區,加載啓動扇區到內存等功能。

  • Disk Signature - Windows的所有物理磁盤都有一個磁盤簽名的機制,如果沒有簽名windows則不能訪問該磁盤的數據。當Windows新掃描到一個物理磁盤,嘗試寫入一些磁盤簽名,用來標識這個磁盤。簽名的長度爲8個字節。然後會寫入到第一個扇區,位置爲0x01B8 -  0x01BB。簽名存儲在註冊表的HKLM\SYSTEM\MountedDevices位置。

  • Partition Table – 分區表,一個64字節的數據結構用來定義每個分區的起始位置。每個分區定義去大小爲16個字節。因爲這個設計,所以MBR的的擴展主分區最多隻能支持4個。

wKiom1jwawLASqz_AAFfulHEd2U966.jpg-wh_50


一個簡單的Basic (MBR)的磁盤結構如下圖所示,我可以看到最外層的是物理磁盤(Disk),在物理磁盤的最前端包含MBR(Master Boot Record),這個例子中,定義了一個分區和NTFS邏輯卷。

wKioL1jwcoey6OsXAAA0Lwj8sC4709.jpg-wh_50

MBR Disk支持最大四個主分區(Primary Patition),如果創建多個主分區的,則結構如下。一個物理磁盤中包含四個主分區,每個主分區包含一個文件卷。

wKiom1jwcpbTciq3AAA7MNoq4T4631.jpg-wh_50

如果啓用了擴展分區,則在擴展分區中可以包含多個邏輯卷。

wKioL1jwcqPSoHa0AABGJLigKs4485.jpg-wh_50


GPT(GUID - Globally Unique Identifer)磁盤結構:


截止201年,大多數操作系統都支持GPT GPT Disk在主的MBR中包含幾個內容,GPT Disk的分區表包括以下幾個內容。在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲着系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出於兼容性考慮,硬盤的第一個扇區仍然用作MBR,之後纔是GPT頭。


  • Protective MBR - 和MBR在Partition Table中包含主分區信息不同的是,GPT Disk在磁盤的第一個扇區(Sector)爲“Protective MBR”,它位於LBA0(通用的存儲尋址方式大小爲512每單位)這個位置上。它包含的內容爲磁盤的分區信息和初始的BIO啓動器。這是爲了兼容性的考慮,保證一些遺留的MBR磁盤工具可以識別到GPT Disk。

  • Partition Table Header – 分區表頭定義了一些磁盤上可使用的塊,同時還定義了組成分區表的Partition Entries數目和大小(大小通常爲128個字節)。GPT支持的64位版本的Windows Server 2003以上版本,支持創建最大128個分區,每個分區記錄大小爲128個字節。在分區表頭中還記錄了磁盤的GUID,用來記錄自身的大小與位置以及備用GPT表頭的位置(位於磁盤的最後一個扇區)。同時還包括CRC32的校驗值。

  • Partition entries – GPT Disk用簡單直接的條目來描述分區。最初的16個字節用來標識分區類型。第二個16直接用來記錄改分區唯一的GUID。接下來三個8字節的記錄分別描述的初始LBA地址,結束LBA地址和分區屬性。最後72個字節爲分區名。單個分區記錄大小爲128個字節。通常Partition entries會從LBA2地址開始。

  • 最後,爲了爲了減少分區表損壞的風險,GPT在硬盤最後保存了一份分區表的副本。


wKioL1jwbZrCEa9pAACokmIK0Po191.jpg-wh_50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章