Learning 3PAR – Part 1 – Chunklets, Logical Disk, CPGs, and Virtual Volumes
As I’m currently in the beginning phases of a HP 3PAR deployment I thought it might be a good idea to write a few posts centering around some of the concepts built around the 3PAR architecture. For the most part I can relate the different terminology names to other storage arrays I’ve used in the past but some of them are somewhat new to me as well. Either way I’m no expert and am still learning myself so ease up on me if I make a mistake eh! Anyways, for the first part of this series I’ll concentrate simply on some of the terminology and layers that exist within the 3PAR StorServ and try to explain them the best I can – remember, I’m explaining them to me as well!
5 Layers to the hosts
As with any array the path that data takes to get from our hosts to its’ final destination on disk is a complex one – but thankfully we don’t have to worry about all of the bumps in the road along the way. That said it’s always nice to understand the road as best we can in order to determine how best practices and configuration changes will apply to our environment. With the 3PAR that path contains 5 essential layers; Virtual Volumes, Common Provisioning Groups, Logical Disks, Chunklets, and Physical Disks.
We can somewhat see by the diagram the relationship between each layer but before taking a holistic view let’s first discuss each layer…
This is an easy one right? A physical disk is just that, a physical disk located inside of your 3PAR array, encompassing all types of disk within the array.
The first thing a 3PAR does when it is discovering its’ storage is break down all of the capacity on your physical disks into chunklets. Each chunklet is 1GB in size and occupies contiguous space on a physical disk. Chunklets are local to that physical disk only and cannot span to others.
Logical disks are essentially a grouping of chunklets which are arranged as rows of like RAID sets. LD’s will ensure that each chunklet which resides in a RAID set is physically located on different physical disks. We don’t directly create LD’s on the 3PAR – they are generated during the creation of a CPG (explained next), more-so, when a Virtual Volume is created on a CPG. All of the metadata however, RAID type, allocation, growth of an LD is defined when creating the CPG itself.
Common Provisioning Groups (CPG)
A CPG is simply a pool of Logical Disks that provide the means for a Virtual Volume (explained next) to consume space. When we deploy a CPG we do not actually use any of the space in our pooled logical disks until a virtual volume is created – meaning a 2TB CPG with no virtual volumes consumes no space at all. We can think of a CPG similar to that of an EVA’s disk group, but feeding on logical disks instead of physical disks.
No, these aren’t the VVOLs your looking for – this is simply a terminology that 3PAR uses to define the LUNs that are presented to the hosts – they are not the VVOLs which we have all seen come supported in vSphere 6. Either way a Virtual Volume is a LUN that draws it’s capacity from a CPG – one CPG can provide space to many virtual volumes. A virtual volume is the LUN that is exported out to your ESXi hosts, and eventually hosts datastores. Just like most arrays Virtual Volumes can be provisioned either thick or thin – with a thin provisioned Virtual Volume only instructing its associated CPG to draw space from the logical disks as space is needed. CPGs have the ability to create logical disks as needed to handle the increased demand for capacity up until the user-defined size limit of the CPG is reached.
So working backwards we can come to somewhat of the following
- A datastore is located on a Virtual Volume
- A Virtual Volume draws its’ space from a Common Provisioning Group (CPG).
- A Common Provisioning Group is any given number of Logical Disks joined together to form some sort of contiguous space.
- A Logical Disk is simply a collection of chunklets which are joined together in rows in order to produce a certain RAID set (1,5,6,etc).
- A Chunklet is a 1GB piece (chunk) of any given physical disk within the array. It’s also a very funny word.
- A physical disk is…well, a physical disk.
So there we have it – it being the very very very basic understanding of some of the terminology within the HP 3PAR. Certainly we can dive deeper into some of these terms here and we will in later posts – I mean, there are many different types of Chunklets, some reserved, some spare, but we will save those and some other terms such as Adaptive Optimization for another post (mainly because I have no idea quite yet ).