{"id":4252,"date":"2021-12-07T20:00:15","date_gmt":"2021-12-08T02:00:15","guid":{"rendered":"https:\/\/www.jasemccarty.com\/blog\/?p=4252"},"modified":"2021-12-07T22:36:07","modified_gmt":"2021-12-08T04:36:07","slug":"vmw-sdrs-fa-p2","status":"publish","type":"post","link":"https:\/\/www.jasemccarty.com\/blog\/vmw-sdrs-fa-p2\/","title":{"rendered":"VMware StorageDRS on FlashArray Part2- Tiering"},"content":{"rendered":"<ul>\n<li>In the <a href=\"https:\/\/www.jasemccarty.com\/blog\/vmw-sdrs-fa-p1\/\">last post<\/a>, I covered Datastore Clusters, Storage DRS, and Pure Storage FlashArray from a Performance\/Capacity Threshold approach.<\/li>\n<\/ul>\n<p>That post covered some reasons why a vSphere administrator might find it desirable to use Datastore Clusters, possibly Storage DRS, and how those Storage DRS thresholds and automating when using one or more storage array.<\/p>\n<p>There isn&#8217;t a lot of information out there on SPBM and VMware Storage DRS, so I decided to dig a little, tinker around in the lab, and post something here.<\/p>\n<h2>Storage Policy Based Management &amp; Storage DRS<\/h2>\n<p>In my experience, the vast majority of Datastore Clusters I have seen in use have typically been on Datastores presented from the same array, and of the same type\/tier of storage. Administrators typically do not want to Storage vMotion workloads from one array to another unless absolutely necessary. But what if there were a way to have a Datastore Cluster provide Datastores from multiple arrays, with additional control over the placement and migration of workloads?<\/p>\n<p>Enter Storage Policy Based Management (SPBM), Storage DRS, and<\/p>\n<p>For traditional vSphere Datastores (VMFS\/NFS), SPBM tagging can be used to categorize\/tag different Datastores. Storage DRS has the ability to add policy enforcement to allow or prevent virtual machines and their disks from moving to Datastores that do not match the SPBM policy assigned to a virtual machine or disk.<\/p>\n<p>Kyle Grossmiller has a video that covers Datastore tagging and tiering here: <a href=\"https:\/\/www.youtube.com\/watch?v=K3XOw3Io5hs\" target=\"_blank\" rel=\"noopener\">https:\/\/www.youtube.com\/watch?v=K3XOw3Io5hs<\/a><\/p>\n<p>Kyle does a good demonstrating this behavior, but I wanted to dig deeper into the requirements and behavior.<\/p>\n<h2>SPBM &amp; SDRS Requirements<\/h2>\n<p>For Storage DRS to be able to use SPBM Policies one or more categories with tags must be created, datastores must be assigned a tag or tags, and tag-based storage policies must be created so they may be assigned to virtual machines.<\/p>\n<h3>Tiering &#8211; 1st Requirement, Tag\/Category Entries &amp; Datastore Assignment<\/h3>\n<p>Tags and Custom Attributes are the core component that makes this pseudo-tiering work. Tags can designate different storage types according to just about any custom classification (performance, use case, etc). Tags can be used by Storage Policies to help dictate placement of VMs with specific policy assignments. For Storage Policies to use Tags, those Tags must be created.<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4281\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-1024x347.png\" alt=\"\" width=\"1024\" height=\"347\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-1024x347.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-300x102.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-768x261.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-1536x521.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tags-1-2048x695.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Above, 3 Tags have been created (Tier1, Tier2, &amp; Tier3). These Tags are assigned to the same Category, called StorageClass. In our &#8220;tiering&#8221; example, we will assign each of these Tags to Datastores based on the type of Array being used (Tier1- FlashArray \/\/X, Tier2 &#8211; FlashArray \/\/M, and Tier3 &#8211; FlashArray \/\/C).<\/p>\n<figure id=\"attachment_4282\" aria-describedby=\"caption-attachment-4282\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4282 size-large\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-1024x424.png\" alt=\"\" width=\"1024\" height=\"424\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-1024x424.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-300x124.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-768x318.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-1536x635.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier3-2048x847.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-4282\" class=\"wp-caption-text\">FlashArray \/\/C &#8211; Assigned as Tier3<\/figcaption><\/figure>\n<figure id=\"attachment_4283\" aria-describedby=\"caption-attachment-4283\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4283 size-large\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-1024x424.png\" alt=\"\" width=\"1024\" height=\"424\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-1024x424.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-300x124.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-768x318.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-1536x636.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier2-2048x848.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-4283\" class=\"wp-caption-text\">FlashArray \/\/M &#8211; Assigned as Tier2<\/figcaption><\/figure>\n<figure id=\"attachment_4285\" aria-describedby=\"caption-attachment-4285\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4285 size-large\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-1024x431.png\" alt=\"\" width=\"1024\" height=\"431\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-1024x431.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-300x126.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-768x323.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-1536x646.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tier1-2048x861.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-4285\" class=\"wp-caption-text\">FlashArray \/\/X &#8211; Assigned as Tier1<\/figcaption><\/figure>\n<p>The purpose of tagging these datastores, is that when combined with a Storage Policy Based Management Policy Assignment, these Tags can dictate where VMs are placed, either as part of a provisioning or Storage vMotion Process.<\/p>\n<h3>Tiering &#8211; 2nd Requirement, Tag-Based SPBM Policies<\/h3>\n<p>A Tag-based SPBM Policy that aligns with the tags should be created if a virtual machine or its disks are to reside on a specific Datastore or Datastores in a Datastore Cluster.<\/p>\n<figure id=\"attachment_4250\" aria-describedby=\"caption-attachment-4250\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4250 size-large\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-1024x454.png\" alt=\"\" width=\"1024\" height=\"454\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-1024x454.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-300x133.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-768x341.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-1536x681.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/SPBMTAGPOLICY-2048x908.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-4250\" class=\"wp-caption-text\">A tag-based SPBM Policy is created with the StorageClass category and a Tag of Tier1<\/figcaption><\/figure>\n<p>Create a Tag-based Storage Policy for each of the Tags being used. In this example 3 policies are created, one for each Tier of storage presented by FlashArray<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4289\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers-1024x417.png\" alt=\"\" width=\"1024\" height=\"417\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers-1024x417.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers-300x122.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers-768x313.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers-1536x625.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/Tiers.png 1572w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h3>Tiering &#8211; 3rd Requirement, VM Datastore Cluster &amp; Storage DRS (SDRS) Deployment<\/h3>\n<p>VM provisioning is going to do its best to place VMs on datastores that meet their Storage Policy adherence. When deploying a VM to a datastore, and choosing a Tier1 Storage Policy, only datastores that meet the Storage Policy criteria can be used. When deploying a VM, choose a Tag-based Storage Policy (Tier1 here) to place the VM on an appropriately tagged datastore.<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4291\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-1024x600.png\" alt=\"\" width=\"1024\" height=\"600\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-1024x600.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-300x176.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-768x450.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-1536x900.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Incompatible-2048x1200.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>*Note: For Datastore Clusters have have multiple Tag assignments, no storage will be shown as compatible. To work around this, temporarily <strong>Disable Storage DRS for this virtual machine<\/strong>.<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4292\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-1024x595.png\" alt=\"\" width=\"1024\" height=\"595\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-1024x595.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-300x174.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-768x446.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-1536x893.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/T1-Compatible-2048x1190.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>*Note we will have to reenable Storage DRS for this VM later. Without reenabling Storage DRS for a VM, the VM will not move &#8220;automatically&#8221; at a later time when conditions are satisfied that require the VM to move.<\/p>\n<p>To remove the VM override, look at the\u00a0<strong>VM Overrides\u00a0<\/strong>section of the Storage DRS Configuration.<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4295\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-1024x259.png\" alt=\"\" width=\"1024\" height=\"259\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-1024x259.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-300x76.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-768x194.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-1536x389.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Override-2048x518.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Choose the VM, and select <strong>Edit<\/strong> to remove the Override<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4296\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride-1024x320.png\" alt=\"\" width=\"640\" height=\"200\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride-1024x320.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride-300x94.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride-768x240.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride-1536x480.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-RemoveOverride.png 1740w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>By unchecking Override, the VM can move automatically when a Storage DRS operation occurs.<\/p>\n<h3>Tiering &#8211; 4th Requirement, Storage Profile Enforcement<\/h3>\n<p>A quick summary of where we&#8217;re at includes:<\/p>\n<ul>\n<li>Tags have been created for 3 different storage types<\/li>\n<li>Storage Policy Based Management Polices have been created to align with each of those Tags denoting different storage types<\/li>\n<li>An individual VM or multiple VMs have been:\n<ul>\n<li>Assigned a Storage Policy for a given tier of storage<\/li>\n<li>Deployed to an appropriately tagged Datastore in the Datastore Cluster that meets the Policy criteria<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The Storage DRS configuration for the Datastore Cluster must have an advanced setting applied that forces VM movement only to a Datastore in the Datastore Cluster where the Policy and Tag assignment match.<\/p>\n<p>This advanced setting is\u00a0<strong>EnforceStorageProfiles = 2<\/strong><\/p>\n<p><strong><br \/>\n<\/strong><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4293\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles-1024x892.png\" alt=\"\" width=\"1024\" height=\"892\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles-1024x892.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles-300x261.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles-768x669.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles-1536x1338.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/EnforceProfiles.png 1754w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>The Storage DRS FAQ KB at VMware.com provides more detail as it pertains to this setting (<a href=\"https:\/\/kb.vmware.com\/kb\/2149938\" target=\"_blank\" rel=\"noopener\">https:\/\/kb.vmware.com\/kb\/2149938<\/a>)<\/p>\n<p><em>EnforceStorageProfiles<\/em><\/p>\n<p>To configure Storage DRS interop with SPBM, below options need to be set:<\/p>\n<ul>\n<li>0 \u2013 disabled (default)<\/li>\n<li>1 \u2013 soft enforcement<\/li>\n<li>2 \u2013 hard enforcement<\/li>\n<\/ul>\n<p>Option 2 will not allow a VM to move to a Datastore that doesn&#8217;t satisfy the Storage Policy Assignment. Option 1 will provide a best effort.<\/p>\n<h3>Tiering -5th Requirement, Conditions invoking movement\/tiering<\/h3>\n<p>For Storage DRS VM movement to occur, one of a few conditions must be satisfied<\/p>\n<ul>\n<li>A datastore must meet a <strong>performance threshold<\/strong> to invoke VM movement &#8211; FlashArray seldom meets this threshold, and this is typically disabled<\/li>\n<li>A datastore must meet a <strong>capacity threshold<\/strong> to invoke VM movement &#8211; This is entirely possible dependent on datastore sizes, vmdk type (thin\/LZT\/EZT), &amp; sheer number\/size of VMs provisioned<\/li>\n<li>A datastore must be placed in <strong>maintenance mode<\/strong> to invoke VM movement &#8211; This process expects to evacuate a datastore, and VMs will move to other datastores dependent on the EnforceStorageProfile configuration<\/li>\n<\/ul>\n<p>Storage DRS\u00a0<strong>does not<\/strong> automatically move a VM with a policy assignment when it resides on a datastore that does not meet that policy&#8217;s criteria. VMware did mention at one time they might be adding this capability, but it has not been delivered at this time.<\/p>\n<p>Additional work using something like the VMware Event Broker Appliance could be used to check VM&#8217;s periodically, and Storage vMotion them appropriately, but I&#8217;m not aware of any work done to perform that at this time.<\/p>\n<p><strong>To move a VM (Tier to different storage) a few things would need to occur.<\/strong><\/p>\n<p><strong>1 &#8211; Assign a new Storage Policy to a VM and its hard disks<\/strong><br \/>\n<a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4298\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-1024x249.png\" alt=\"\" width=\"1024\" height=\"249\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-1024x249.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-300x73.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-768x187.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-1536x373.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/PolicyAssignment-2048x497.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a>The VM will then show as\u00a0<strong>non-compliant\u00a0<\/strong>as the policy does not match the datastore it resides on.<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4299\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant-1024x803.png\" alt=\"\" width=\"640\" height=\"502\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant-1024x803.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant-300x235.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant-768x602.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-NotCompliant.png 1498w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><strong>2 &#8211; Put the datastore it is on in Maintenance Mode (will attempt to move everything) or wait until the datastore fills up.<\/strong><\/p>\n<p>When putting a datastore in Maintenance Mode, or if that datastore overcomes the capacity threshold, VMs will automatically move to datastores that match the Storage Policy assignments for each VM.<a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4301\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-1024x127.png\" alt=\"\" width=\"1024\" height=\"127\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-1024x127.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-300x37.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-768x96.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-1536x191.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-SvMotionTiering-2048x255.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>When either a Datastore Maintenance Mode, or capacity threshold event occurs the <strong>EnforceStorageProfiles = 2<\/strong> value will move the VM to an appropriately tagged datastore (provided there is capacity)<\/p>\n<p><a href=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4303\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2-1024x407.png\" alt=\"\" width=\"800\" height=\"318\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2-1024x407.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2-300x119.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2-768x305.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2-1536x610.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/05\/VM-Moved-T2.png 1908w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<h2>Summary<\/h2>\n<p>Storage Profiles, Tagged Datastores, Datastore Clusters, and Storage DRS can provide an appropriate mechanism to tier VMs across different types of storage with relative ease. While it would be nice for VMware to complete this feature by checking policies and moving accordingly, typical capacity growth or Datastore Maintenance Mode, can still provide a level of automated tiering across storage types.<\/p>\n<p>*Note: Keep in mind that Storage DRS from one Datastore to another on the same FlashArray is going to be accomplished very quickly using the VMware API for Array Integration (VAAI). Storage DRS operations the invoke movement to a Datastore backed by a different array are not going to take advantage of the VAAI offloads, and will take longer to complete.<\/p>\n<h3>Reference Links:<\/h3>\n<ul>\n<li>VMware Storage DRS FAQ KB: <a href=\"https:\/\/kb.vmware.com\/s\/article\/2149938\" target=\"_blank\" rel=\"noopener\">https:\/\/kb.vmware.com\/s\/article\/2149938<\/a><\/li>\n<li>VMware Storage DRS integration with Storage Profiles KB: <a href=\"https:\/\/kb.vmware.com\/s\/article\/2142765\" target=\"_blank\" rel=\"noopener\">https:\/\/kb.vmware.com\/s\/article\/2142765<\/a><\/li>\n<li>VMware Storage DRS integration with Storage Profiles: <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere\/7.0\/com.vmware.vsphere.resmgmt.doc\/GUID-9080835B-1F3C-46E8-9586-066992083A35.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.vmware.com\/en\/VMware-vSphere\/7.0\/com.vmware.vsphere.resmgmt.doc\/GUID-9080835B-1F3C-46E8-9586-066992083A35.html<\/a> (Selectable for vSphere 7.0\/6.7\/6.5)<\/li>\n<\/ul>\n<p>*Note: Tags may be used on any VMFS\/NFS storage supported by vSphere and is not specific to Pure Storage FlashArray<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post, I covered Datastore Clusters, Storage DRS, and Pure Storage FlashArray from a Performance\/Capacity Threshold approach. That post covered some reasons why &hellip; <\/p>\n","protected":false},"author":1,"featured_media":4257,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[209,135,10,12],"tags":[220,167,223,221,219,222],"class_list":["post-4252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pure-storage","category-software-defined","category-storage-2","category-virtualization","tag-sdrs","tag-spbm","tag-storage-policies","tag-storage-vmotion","tag-storagedrs","tag-tiering"],"_links":{"self":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/comments?post=4252"}],"version-history":[{"count":15,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4252\/revisions"}],"predecessor-version":[{"id":4307,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4252\/revisions\/4307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/media\/4257"}],"wp:attachment":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/media?parent=4252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/categories?post=4252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/tags?post=4252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}