GPT and Failover Clustering

Its Robert Mitchell again and I’m back to talk about my favorite subject, storage.

I’ve had a number of people ask me about how GPT disks are used in conjunction with Windows Failover Cluster. So I wanted to take a few minutes to clear up any misconceptions there might be on how this works under the covers.

If you haven’t read my previous blogs about GPT, you may wish to review those first and then come back here.

https://blogs.technet.com/b/askcore/archive/2010/10/08/gpt-in-windows.aspx

https://blogs.technet.com/b/askcore/archive/2010/02/18/understanding-the-2-tb-limit-in-windows-storage.aspx

 

 - The old way -

When Windows Failover Cluster brings a disk online, there are a number of checks it performs to make sure that the disk is ready for use. One of these checks is a read/write check. This is done be reading and writing to sectors 11 and 12. If you look in the cluster.log it will look like this….

INFO Physical Disk <NewDisk>: [DiskArb] Successful read (sector 12)

INFO Physical Disk <NewDisk>: [DiskArb] Successful write (sector 11)

INFO Physical Disk <NewDisk>: [DiskArb] Successful read (sector 12)

INFO Physical Disk <NewDisk>: [DiskArb] Successful write (sector 12)

INFO Physical Disk <NewDisk>: [DiskArb] Successful read (sector 11)

NOTE: Entries simplified

Cluster uses these sectors because they are typically not used by anybody and they exist in the ‘unprotected space’ between the Master Boot Record at sector 0 and the boot sector of the first partition (location varies).

clip_image001

 

- Enter the GPT disk -

Because of the nature of a how a GPT disk works it does not have ‘unprotected space’. And specifically sectors 11 and 12 are part of the GPT disk’s partition array (the green area).

clip_image002

The way cluster deals with is to carve out part of the MS Reserved Partition and create a new partition to be used for the read/write test.

 

clip_image003

This cluster partition is simply a two sector partition and contains no file system. And the location is predictable as it will be the first two sectors after the partition array. The partition array exists in sectors 2 – 33.

So if we look at the cluster.log when bringing a GPT disk online, we will see this..

INFO Physical Disk <NewGPT>: [DiskArb] Successful read (sector 35)

INFO Physical Disk <NewGPT>: [DiskArb] Successful write (sector 34)

INFO Physical Disk <NewGPT>: [DiskArb] Successful read (sector 35)

INFO Physical Disk <NewGPT>: [DiskArb] Successful write (sector 35)

INFO Physical Disk <NewGPT>: [DiskArb] Successful read (sector 34)

NOTE: Entries simplified

This explains the tiny cluster partition that you might run into if you start poking around with DISKPART. Depending on the version of DISKPART you are using, the cluster partition will display as either Unknown or Reserved.

clip_image005

We know that this is the correct partition by its size and location. Assuming a 512 byte sector (which most disks still are), a two sector partition would be 1024 bytes. And sector 34 would start at offset 17,408 or 17 KB.

Another related question that I’m sometimes asked about GPT is, “What are the different GPT partition types that Windows cares about and what are the GUIDs that correspond to each type?”

Microsoft Windows understands and uses the following partition types;                                                 

Microsoft Reserved Partition E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Basic Data Partition EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
LDM Metadata Partition 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
LDM Data Partition AF9B60A0-1431-4F62-BC68-3311714A69AD
Cluster Partition DB97dBA9-0840-4bAE-97F0-FFB9A327C7E1
WinRE DE94BBA4-06D1-4D40-A16A-BFD50179D6AC

This isn’t something that most people will need to know. But since I do get asked about it from time to time, I wanted to include it here.

Thank you for your time,

Robert Mitchell
Senior Support Escalation Engineer
Microsoft Enterprise Platforms Support