Windows存储管理(来源自EMC中文支持论坛)
各种操作系统连接到存储系统之后,并且操作系统识别物理磁盘之后,需要对磁盘进行进一步配置。如果用户连接存储是的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的容量限制,支持在线扩展,各种优势。动态磁盘不受分区数目限制。
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代码主要完成下列几项活动。
如果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显示了是否分区为活动分区。
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分区,不能被删除。
Globally Unique Identifier Partition Table(GUID)结构::
如下图所示,组成GPT Disk的GUID记录有以下几种:
GUID Partition Table Header: GPT Header定义了分区记录所用到的Logical Block Address的区域。同时还定义了分区在磁盘上的位置、它自身的GUID、以及一组CRC32的校验值。Primary GPT Header位于磁盘的LBA1位置,紧跟着Protective MBR。Backup GPT Header位于磁盘最后一个磁道之上。下图是GPT Header中包含几个字段:
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中的一个主分区。
在每个部分的中间位置主要记录了一些字段。Partition Type GUID之后的0x10位置开始,是一个长度为16字节的Unique Partition GUID记录用来标识每条记录的唯一性。0x20开始为3个长度为8个字节的字段,Starting LBA和Ending LBA分别记录了分区的起始和结束的位置、Attribute Bit描述了分区是如何使用的,例如是否为隐藏和只读等等、最后0x38开始的72个字节字段用来Unicode的分区的名字,名字最长为36个字符。
Windows磁盘结构:
Windows的主流磁盘结构分为MBR和GPT两种。MBR是早期Windows的唯一选择,但是随着物理磁盘的容量不断增大。GPT结构成为目前的主流,最大支持超过2TB的容量,提供容错,多分区支持,比MBR来的更加强大。
MBR (Master Boot Record )磁盘结构:
在Basic MBR Disk中的MBR中包含了几种信息。
一个简单的Basic (MBR)的磁盘结构如下图所示,我可以看到最外层的是物理磁盘(Disk),在物理磁盘的最前端包含MBR(Master Boot Record),这个例子中,定义了一个分区和NTFS逻辑卷。
MBR Disk支持最大四个主分区(Primary Patition),如果创建多个主分区的,则结构如下。一个物理磁盘中包含四个主分区,每个主分区包含一个文件卷。
如果启用了扩展分区,则在扩展分区中可以包含多个逻辑卷。
GPT (GUID - Globally Unique Identifer)磁盘结构:
截止201年,大多数操作系统都支持GPT GPT Disk在主的MBR中包含几个内容,GPT Disk的分区表包括以下几个内容。在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。