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

猜你喜欢

转载自blog.csdn.net/ayang1986/article/details/83141587