{"id":4212,"date":"2021-02-16T14:22:08","date_gmt":"2021-02-16T20:22:08","guid":{"rendered":"https:\/\/www.jasemccarty.com\/blog\/?p=4212"},"modified":"2021-02-16T14:28:44","modified_gmt":"2021-02-16T20:28:44","slug":"updated-purestorage-fa-bp-checker-for-vsphere","status":"publish","type":"post","link":"https:\/\/www.jasemccarty.com\/blog\/updated-purestorage-fa-bp-checker-for-vsphere\/","title":{"rendered":"Updated Pure Storage FlashArray Best Practices Checker for vSphere (v5)"},"content":{"rendered":"<p>I&#8217;m happy to announce that I&#8217;ve updated the Pure Storage Best Practices Checker for VMware vSphere.<\/p>\n<p>If you aren&#8217;t familiar with the Best Practices Checker, it is a PowerShell script that will look at a vSphere environment and check each vSphere Host to ensure it is properly configured when connected to FlashArray.<\/p>\n<p>I was introduced to the previous version when I started at Pure Storage in 2020. Cody Hosterman had been managing this script (v4.5), and it can be found in his personal GitHub repository here: <a href=\"https:\/\/github.com\/codyhosterman\/powercli\/blob\/master\/bestpracticechecker.ps1\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/codyhosterman\/powercli\/blob\/master\/bestpracticechecker.ps1<\/a><\/p>\n<p>Cody put a LOT of work into this script, and I champion him for his efforts. He&#8217;s truly a machine. I knew this as an outsider to Pure, and am even more aware of this as I&#8217;ve come to work here. But Cody has only so many cycles, so I asked to take on the task of updating the script.<\/p>\n<h3>Why did it need to be updated?<\/h3>\n<p>Well, some things have changed since the last update (April 15, 2018):<\/p>\n<ul>\n<li><strong>vSphere 6.7 Update 1<\/strong>, <em>which added the Latency SATP option<\/em> (October 16, 2018)<br \/>\nThis is a new SATP rule for storage, and while it is available, vSphere 6.x versions of vSphere still have a recommendation of\u00a0<strong>iops=1<\/strong>. This is the <em>default<\/em> for vSphere 6.0 Patch 5 or later, vSphere 6.5 Update 1 or later, and vSphere 6.7.<br \/>\n.<\/li>\n<li><strong>vSphere 6.0 P08<\/strong> (September 12, 2019),<strong>vSphere 6.5 P03<\/strong> (November 29, 2018) &#8211; PR 2078782\/2156841<br \/>\nThese releases, <em>along with vSphere 6.7 Update 1<\/em>, address the <strong>DiskMaxIOSize<\/strong> recommendation for earlier releases to be 4MB, rather than the 32MB default. Cody covers this in a blog post here: <a href=\"https:\/\/www.codyhosterman.com\/2020\/08\/disk-diskmaxiosize-and-the-blue-screen-of-death\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.codyhosterman.com\/2020\/08\/disk-diskmaxiosize-and-the-blue-screen-of-death\/<\/a> The TL\/DR is that this no longer needs to be changed with more recent releases of vSphere.<br \/>\n.<\/li>\n<li><strong>vSphere 7.0 GA released<\/strong>, <em>which added support for NVMe-oF datastores<\/em> (April 2, 2020)<br \/>\nThe Latency SATP added in vSphere 6.7U1 is now the default for Pure Storage FlashArray devices.<\/li>\n<\/ul>\n<p>The previous release (v4.5) unfortunately required some updates to address the SATP rule change, as well as the DiskMaxIOSize setting, both dependent on the versions of vSphere being used.<\/p>\n<p>It isn&#8217;t uncommon to see several different releases of vSphere installed, and it didn&#8217;t make sense to have different scripts for each.<\/p>\n<p>This script will determine vSphere versions, and check the settings appropriately for different releases.<\/p>\n<p>Also, now that PowerShell added support (with PowerShell Core) for Windows\/Linux\/Mac OS environments, it only made sense to update it to <em><strong>run on PowerShell Core<\/strong><\/em> as well as PowerShell Desktop.<\/p>\n<p>I&#8217;ve dispensed with the use of forms, as it really isn&#8217;t worth the effort on PowerShell Core.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4217\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-1024x540.png\" alt=\"\" width=\"665\" height=\"351\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-1024x540.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-300x158.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-768x405.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-1536x810.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-660x348.png 660w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1-380x200.png 380w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/OLDCHECK1.png 1896w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/p>\n<p>The log generated after each run will be created in the same directory as the execution of the script, and a text menu will allow you to choose either all hosts connected to vCenter or only hosts in a selected cluster.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4218\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-1024x476.png\" alt=\"\" width=\"665\" height=\"309\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-1024x476.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-300x140.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-768x357.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-1536x714.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1-660x307.png 660w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHECK1.png 2000w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/p>\n<p>The output is also a little cleaner as well.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4219\" src=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-1024x712.png\" alt=\"\" width=\"665\" height=\"462\" srcset=\"https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-1024x712.png 1024w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-300x209.png 300w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-768x534.png 768w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-1536x1068.png 1536w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-2048x1424.png 2048w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-660x459.png 660w, https:\/\/www.jasemccarty.com\/blog\/wp-content\/uploads\/2021\/02\/NEWCHCK2-200x140.png 200w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/p>\n<h3>What it doesn&#8217;t do<\/h3>\n<p>There are a couple of other things that I need to call attention to, that neither the old, nor updated script address. These are:<\/p>\n<ul>\n<li>NVMe-oF configuration &#8211; This is not checked yet &#8211; I&#8217;m hoping to steal some time in Cody&#8217;s lab to add this support<\/li>\n<li>It doesn&#8217;t check Pure volume to Host\/Host Group relationships &#8211; Suggest using the Pure Storage Plugin for vSphere version 4.5 or higher to view these<\/li>\n<\/ul>\n<h3>Where can I find it?<\/h3>\n<p>The updated script can be found in the VMware Scripts repository on Pure Storage Open Connect site on GitHub.<\/p>\n<p><a href=\"https:\/\/github.com\/PureStorage-OpenConnect\/VMware-Scripts\/blob\/master\/bestpracticecheckerv5.ps1\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/PureStorage-OpenConnect\/VMware-Scripts\/blob\/master\/bestpracticecheckerv5.ps1<\/a><\/p>\n<p>It only made sense to post it there, with all the other contributions of code that can be used to manage and take advantage of Pure Storage&#8217;s code integrations.<\/p>\n<h3>What&#8217;s next?<\/h3>\n<p>Honestly, I had been working on this script for a while, with the ability to see some inline reporting, as well as the ability to feed this best practice checker into other scripts for even greater extensibility.<\/p>\n<p>I refocused on getting the script updated a few weeks ago, and left most of that largely by the wayside. But rest assured, I plan on trying to add those capabilities, as well as at some point include some native cmdlets in the Pure Storage FlashArray VMware module.<\/p>\n<p>And now that VMware has released Parallel Foreach support with PowerCLI 12.2, I might have to look at parallelizing it&#8230;<\/p>\n<p>Until then, let us know what you think, and feel free to report any issues on GitHub.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m happy to announce that I&#8217;ve updated the Pure Storage Best Practices Checker for VMware vSphere. If you aren&#8217;t familiar with the Best Practices Checker, &hellip; <\/p>\n","protected":false},"author":1,"featured_media":4219,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[211,212,209,135,10],"tags":[217,210,65,66,216,215,218,111],"class_list":["post-4212","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft","category-powershell","category-pure-storage","category-software-defined","category-storage-2","tag-best-practices","tag-flasharray","tag-powercli","tag-powershell","tag-pure","tag-purestorage","tag-script","tag-vsphere"],"_links":{"self":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4212","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=4212"}],"version-history":[{"count":7,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4212\/revisions"}],"predecessor-version":[{"id":4214,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/posts\/4212\/revisions\/4214"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/media\/4219"}],"wp:attachment":[{"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/media?parent=4212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/categories?post=4212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jasemccarty.com\/blog\/wp-json\/wp\/v2\/tags?post=4212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}