1. 程式人生 > >Windows儲存管理

Windows儲存管理

轉載自:https://blog.csdn.net/figo829/article/details/8762528

1.Windows儲存管理之磁碟型別簡介

 

各種作業系統連線到儲存系統之後,並且作業系統識別物理磁碟之後,需要對磁碟進行進一步配置。如果使用者連線儲存是的Windows Server,儲存管理員勢必需要了解Windows中的磁碟型別與檔案系統。筆者從儲存的角度總結了Windows磁碟與分割槽型別的特點,並對其內容進行介紹與分析,幫助管理員更好的瞭解Windows主機連線的儲存和檔案系統。 

Windows的磁碟型別: 

Windows的物理磁碟型別分為兩種: 

     Basic Disk(基本磁碟)–這個型別的物理磁碟可以被MS-DOS和所有的Windows作業系統所訪問。Basic Disk可以包括最多四個主分割槽(Primary Partition),或者是三個主分割槽和一個擴充套件分割槽(Extended Partition)的邏輯磁碟(Logical Disk)。Basic不支援容錯功能,可以在MBR和GPT建立磁碟。 

     Dynamic Disk (動態磁碟)–Dynamic Disk提供一些Basic Disk沒有的功能,比如過將一個邏輯卷擴充套件到多個物理磁碟之上。Dynamic Disk使用隱藏的資料庫來維護位物理磁碟上的動態卷。如果使用者需要擴充套件一個邏輯磁碟到多個物理磁碟,需要使用Windows Disk Management和Diskpart.ext工具先將Basic disk轉換為Dynamic Disk。Dynamic Disk支援線上建立(需要重啟)和線上擴充套件邏輯卷。多份的元資料儲存在磁碟中。簡化管理,可以使用軟Raid功能,Mirror、Spanned等等。  

Windows磁碟的分割槽型別: 

     談到磁碟結構,很有必要了解一下下面兩個概念MBR和GPT。 

     MBR (Master Boot Record)物理磁碟上第一個扇區(Sector),也叫作主引導扇區,是計算機卡機後訪問磁碟時說必須要讀取的首個扇區,它位於柱面0,磁頭0,扇區1。Windows的MBR磁碟被分割成多個連續的區域叫做分割槽(Partition),每個分割槽的的資訊都儲存在MBR,即磁碟的首個扇區中,在MBR中定義了分割槽的起始位置和長度。只有一個主分割槽可以處於啟用狀態,且支援作業系統啟動。 

     GPT(GUID Partition Table)一種由基於 Itanium 計算機中的可擴充套件韌體介面 (EFI) 使用的磁碟分割槽架構。與主啟動記錄(MBR) 分割槽方法相比,GPT 具有更多的優點,因為它允許每個磁碟有多達128 個分割槽,理論上支援最大 18 EB卷大小,允許將主磁碟分割槽表和備份磁碟分割槽表用於冗餘,還支援唯一的磁碟和分割槽ID (GUID)。   GPT是在windows使用大容量磁碟的選擇。 

下表是MBR和GPT對應的Windows作業系統資訊:

 

MBR

GPT

Windows作業系統版本

MS-DOS

所有Windows版本

Windows 2003以上版本

硬體支援

32位CPU

64位CPU

最大支援單個邏輯卷

2TB

256TB

分割槽表拷貝數

一份

Primary和Backup兩份分割槽表,支援checksum

最大支援分割槽數目

4個主分割槽或者3個主分割槽和一個擴充套件分割槽

128個分割槽

資料儲存位置

儲存在分割槽中

儲存在分割槽,關鍵的Platform資料儲存在對使用者隱藏的分割槽中

下表為Basic和Dynamic Disk支援的Volume型別(MBR磁碟型別):

Basic

Dynamic

Volume型別

支援

支援

Simple Volume

支援

支援

Spanned Volume

支援

支援

Striped Volume(Raid-0)

支援

支援

RAID-5 Volume

支援

支援

Mirrored Volume(Raid-1) 

下表為Basic和Dynamic Disk支援的Volume型別(GPT磁碟型別),可以看到需要在Windows中實現軟體Raid,需要將磁碟型別轉換為Dynamic才可以。

Basic

 

Dynamic

 

Volume型別

 

支援

 

支援

 

Simple Volume

 

 

 

支援

 

Spanned Volume

 

 

 

支援

 

Striped Volume(Raid-0)

 

 

 

支援

 

RAID-5 Volume

 

 

 

支援

 

Mirrored Volume(Raid-1) 

總結: 

     在Windows連線到儲存之後,選擇選擇GPT分割槽型別與Dynamic Disk可試Windows儲存管理靈活性性所有提高,GPT分割槽格式拋開了MBR最大2TB的容量限制,支援線上擴充套件,各種優勢。動態磁碟不受分割槽數目限制。

2.Windows磁碟MBR結構詳解 – Basic Disk篇

Windows Basic Disk中的MBR:

     Master Boot Record作為磁碟中最重要的資料結構,在磁碟分割槽的時候會被建立。MBR中包括幾個部分,一段可執行的程式碼叫做Master Boot Code,Disk Signature以及磁碟的分割槽表。在MBR的末端還有一直為0x55AA值大小為兩個位元組的Sector Marker的簽名欄位。這個字通常還標註了extend boot record(EBR)和啟動扇區(boot sector)的結束。

Master Boot Code程式碼主要完成下列幾項活動。

  1. 掃描活動分割槽的分割槽表
  2. 找到活動分割槽的起始扇區位置
  3. 將一個啟動扇區的拷貝從活動分割槽載入到記憶體
  4. 將控制權轉移到啟動扇區上的執行程式碼

 

     如果Master Boot Code不能完成這些功能,Windows系統就會丟擲一些錯誤,比如“Invalid partition table”、“Error loading operating system”、“Missing operating system”從而提示相應的步驟中發生了錯誤。

 

Basic Disk中的分割槽表:

 

在Basic Disk中的Partition Table是一個64個位元組的資料結構用來定義物理磁碟上的分割槽型別與位置的,獨立於作業系統。每個分割槽表的記錄是16個直接長度,最大包括四條記錄,每條記錄從預先定義的起始位置。下面的例子顯示一段MBR的記錄,其中包括顯示了一個三個分割槽記錄,起始位置分別是0x01BE、0x01CE、0x01DE。圖中還顯示了,分割槽記錄中幾個關鍵的欄位。0x01C2是System ID,用來定義邏輯卷的型別,圖中07就是表示Installable File System(NTFS)。0x01C6開始的四個位元組是Relative Sectore,表示了邏輯卷的起始位置。0x01CA開始的四個位元組顯示了整個邏輯卷的扇區總數。Boot Indictor顯示了是否分割槽為活動分割槽。

Windows磁碟MBR結構詳解Basic Disk篇.jpg

3.Windows GPT磁碟GUID結構詳解

GPT Disk 的Protective MBR:

     GPT Disk的結構中,第一個LBA位置(LBA 0)存放的是Protective MBR,隨後LBA1的位置才是GPT的GUID分割槽表頭。Protective MBR的作用是為了相容性考慮,阻止一些遺留的MBR磁碟工具破壞GUID分割槽表。這種在LBA 0的位置存放Protective MBR的結構是基於Extensible Firmware Interface(EFI)規格。Protective MBR和MBR擁有同樣的結構,同時還包括一條包含值為0xEE的System ID的分割槽記錄(如下圖所示),這個值標註了該分割槽為GPT分割槽,如果包含該分割槽的磁碟被移動到Windows 2000中或者被一些遺留的磁碟工具訪問,則該分割槽會被標註晨GPT Protective分割槽,不能被刪除。

Windows GPT磁碟GUID結構詳解1.jpg

Globally Unique Identifier Partition Table(GUID)結構::

如下圖所示,組成GPT Disk的GUID記錄有以下幾種:

Windows GPT磁碟GUID結構詳解2.jpg

GUID Partition Table Header: GPT Header定義了分割槽記錄所用到的Logical Block Address的區域。同時還定義了分割槽在磁碟上的位置、它自身的GUID、以及一組CRC32的校驗值。Primary GPT Header位於磁碟的LBA1位置,緊跟著Protective MBR。Backup GPT Header位於磁碟最後一個磁軌之上。下圖是GPT Header中包含幾個欄位:

 

Windows GPT磁碟GUID結構詳解3.jpg

  • 首位0x00是為長度8個位元組的簽名檔,這個值必須為固定值,用來定義EFI的相容性。
  • 0x08開始有四組長度為4個位元組的欄位,Revision標註EFI規格的版本資訊、Header Size記錄了整個GPT Head的大小,也為固定值、CRC32的校驗資訊、Reserved預留位。
  • 隨後0x18開始是5個長度為8個位元組的欄位和一個長度為16位元組欄位,Primary LBA記錄了Primary GPT Head的位置、Backup LBA記錄Backup GPT Header的位置、First Usable LBA記錄了第一個分割槽的起始位置,例如64位的Windows Server 2003,它的起始位置是34、Last Usable LBA記錄的分割槽結束的位置。Disk GUID長度為16個位元組,用來標識分割槽表頭和磁碟、 Partition Entry LBA記錄GUID分割槽記錄的位置,固定為LBA2。
  • 從0x50開始為3個長度為4位元組的記錄,Number of Partition Entries記錄最大的磁碟分割槽數,例如64位的Windows Server是128個、Size of Partition Entry記錄了每個GUID分割槽記錄大小,它的值為128位元組、Partition Entry Array CRC32記錄一組分割槽記錄的校驗值。
  • 最後從0x5C位置開始長度為420位元組的預留空間,值都為0。

GUID Partition Entry Array:類似MBR中的分割槽表,GUID partition entry array中包含了磁碟上每個分割槽的記錄。比如64位的Windows Server 2003建立了一個Array值為16384位元組,則第一個可用的資料大於等於LBA34. GUID Partition Entry Array也在分割槽最後存在一個副本,位置是在最後一個可用的LBA之後,GUID Partition table header之前。

GUID Partition Entry: GUID Partition Entry長度為128個位元組,用來定義單個分割槽結構。每個GUID Partition entry從Partition Type記錄開始。長度為16個位元組的Partition Type GUID,類似MBR磁碟分割槽表中的System ID,它定義了分割槽中包含的資料和分割槽的作用。下圖中是一個典型的GPT Disk的GUID Partition entry array記錄,這個圖中顯示了三種分割槽記錄

     第一部分{28732AC1–1FF8–D211–BA4B–00A0C93EC93B}為EFI System分割槽、中間部分{16E3C9E3–5C0B–B84D–817D–F92DF00215AE}為Microsoft Reserved分割槽,最下面的一個{A2A0D0EB–E5B9–3344–87C0–68B6B72699C7}是Windows Basic Disk中的一個主分割槽。

Windows GPT磁碟GUID結構詳解4.jpg

     在每個部分的中間位置主要記錄了一些欄位。Partition Type GUID之後的0x10位置開始,是一個長度為16位元組的Unique Partition GUID記錄用來標識每條記錄的唯一性。0x20開始為3個長度為8個位元組的欄位,Starting LBA和Ending LBA分別記錄了分割槽的起始和結束的位置、Attribute Bit描述了分割槽是如何使用的,例如是否為隱藏和只讀等等、最後0x38開始的72個位元組欄位用來Unicode的分割槽的名字,名字最長為36個字元。

4.Windows儲存管理之磁碟結構詳解

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個。

DS-1.jpg

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

DS-2.jpg

     MBR Disk支援最大四個主分割槽(Primary Patition),如果建立多個主分割槽的,則結構如下。一個物理磁碟中包含四個主分割槽,每個主分割槽包含一個檔案卷。

DS-3.jpg

     如果啟用了擴充套件分割槽,則在擴充套件分割槽中可以包含多個邏輯卷。

DS-4.jpg

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在硬碟最後儲存了一份分割槽表的副本。 

DS-5.jpg