<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hypervisor.fr &#187; powershell</title>
	<atom:link href="http://www.hypervisor.fr/?feed=rss2&#038;tag=powershell" rel="self" type="application/rss+xml" />
	<link>http://www.hypervisor.fr</link>
	<description>French Bare-Metal weblog</description>
	<lastBuildDate>Wed, 26 Jun 2024 22:42:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Host.Local.ManageUserGroups = root</title>
		<link>http://www.hypervisor.fr/?p=6005</link>
		<comments>http://www.hypervisor.fr/?p=6005#comments</comments>
		<pubDate>Fri, 30 Jul 2021 14:16:51 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[esxcli]]></category>
		<category><![CDATA[Get-EsxCli]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[vCenter]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=6005</guid>
		<description><![CDATA[MAJ 11/01/2023 : William Lam vient de nous faire remarquer qu&#8217;il etait possible d&#8217;hardener vSphere 8 pour limiter cette &#8220;feature&#8221; ainsi que de limiter le shell aux user non root (dcui par exemple&#8230;)

By restricting ESXi Shell access for the vpxuser, you prevent attackers,  which can also be insiders who have access to vCenter Server the [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 11/01/2023</span> : <a href="https://williamlam.com/2023/01/applying-additional-security-hardening-enhancements-in-esxi-8-0.html" target="_blank">William Lam vient de nous faire remarquer qu&#8217;il etait possible d&#8217;hardener vSphere 8 pour limiter cette &#8220;feature&#8221; ainsi que de limiter le shell aux user non root (dcui par exemple&#8230;)</a></em></p>
<blockquote>
<p style="text-align: justify;"><em>By restricting ESXi Shell access for the vpxuser, you prevent attackers,  which can also be insiders who have access to vCenter Server <strong>the  ability to just change the ESXi root password without knowing the  original password</strong>.</em></p>
</blockquote>
<p style="text-align: justify;">Après l’énorme succès de notre billet <a href="http://www.hypervisor.fr/?p=5655" target="_blank">Administrators = root</a> qui vous permet de reset le mot de passe root de vos ESX sans le connaître (si vous êtes admin du vCenter) grâce à Get-EsxCli, voici <a href="https://vdc-repo.vmware.com/vmwb-repository/dcr-public/790263bc-bd30-48f1-af12-ed36055d718b/e5f17bfc-ecba-40bf-a04f-376bbb11e811/vim.host.LocalAccountManager.html#updateUser" target="_blank">une nouvelle méthode utilisable depuis vSphere 6.7 U2</a> qui nécessite encore moins de droits :</p>
<blockquote><p>Updates a local user account using the parameters defined in the   <a href="https://vdc-repo.vmware.com/vmwb-repository/dcr-public/790263bc-bd30-48f1-af12-ed36055d718b/e5f17bfc-ecba-40bf-a04f-376bbb11e811/vim.host.LocalAccountManager.AccountSpecification.html" target="_blank">HostLocalAccountManagerAccountSpecification</a> data object type.</p></blockquote>
<blockquote><p>Required Privileges <a href="https://files.hypervisor.fr/img/HostLocalManageUserGroups.png" target="_blank">Host.Local.ManageUserGroups</a></p></blockquote>
<pre class="brush: powershell; title: ; notranslate">(Get-View (Get-VMHost|Get-View).ConfigManager.AccountManager).UpdateUser($(New-Object VMware.Vim.HostAccountSpec -Property @{id=&quot;root&quot;;password=&quot;VMw4re!&quot;}))</pre>
<p style="text-align: justify;">Attention, contrairement à la méthode Get-EsxCli, cette fois un petit event va vous trahir instantanément :</p>
<p style="text-align: justify;"><img class="aligncenter" src="https://files.hypervisor.fr/img/HostAccountSpec.png" alt="" width="517" height="324" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=6005</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VIX &amp; Kerberos Double Hop</title>
		<link>http://www.hypervisor.fr/?p=5815</link>
		<comments>http://www.hypervisor.fr/?p=5815#comments</comments>
		<pubDate>Fri, 07 Jul 2017 11:03:29 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Kb]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[VIX]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5815</guid>
		<description><![CDATA[Lors d&#8217;une petite session de PowerCLI avec les célèbres (mais bientôt deprecated) VIX APIs, nous nous sommes heurté à une limite de sécurité bien connue des admins Microsoft: le Kerberos Double Hop.
Pour résumer, nous avions besoin d’exécuter un script situé sur un share depuis un ensemble de VM et nous avons bien évidement tenté de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lors d&#8217;une petite session de PowerCLI avec les célèbres (<a href="https://www.vmware.com/support/developer/vix-api/VIX-1.15-ReleaseNotes.html" target="_blank">mais bientôt deprecated</a>) VIX APIs, nous nous sommes heurté à une limite de sécurité bien connue des admins Microsoft: le <a href="https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/" target="_blank">Kerberos Double Hop</a>.</p>
<p style="text-align: justify;">Pour résumer, nous avions besoin d’exécuter un script situé sur un share depuis un ensemble de VM et nous avons bien évidement tenté de profiter du fait que <a href="http://www.hypervisor.fr/?p=5070" target="_blank">VIX supporte le SSO</a>, comme des gros fainéants. Et là, <a href="https://weblogs.asp.net/owscott/iis-windows-authentication-and-the-double-hop-issue" target="_blank">c&#8217;est le drame</a>:</p>
<blockquote>
<p style="text-align: justify;">When using Integrated Security, anonymous access is disabled, and impersonation is turned on, <strong>a security measure kicks in and doesn&#8217;t allow your site to access resources on any network servers.  This includes access to a UNC path</strong> directly from IIS or SQL Server using Windows authentication.</p>
</blockquote>
<p>Il nous a suffit de <strong>passer les credentials à l&#8217;Invoke-VMScript pour que l&#8217;UNC devienne accessible</strong>:</p>
<p style="text-align: center;"><a href="http://www.hypervisor.fr/wp-content/uploads/2017/07/VIX_Kerb_2x_Hop.png" title="VIX_Kerb_2x_Hop" rel="lightbox[5815]"><img class="aligncenter size-full wp-image-5816" title="VIX_Kerb_2x_Hop" src="http://www.hypervisor.fr/wp-content/uploads/2017/07/VIX_Kerb_2x_Hop.png" alt="" width="486" height="384" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5815</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The (old) Ladykillers</title>
		<link>http://www.hypervisor.fr/?p=5789</link>
		<comments>http://www.hypervisor.fr/?p=5789#comments</comments>
		<pubDate>Wed, 12 Apr 2017 17:51:49 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[oneliner]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5789</guid>
		<description><![CDATA[Pour bien commencer le printemps et son grand ménage traditionnel, nous vous proposons un petit oneliner qui vous affichera la liste des vm éteintes avec la date du poweroff basée sur la dernière modification du fichier nvram (qui coincide au fameux &#8220;VMX has left the building&#8221; dans le vmware.log) donc pas de dépendance avec la [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour bien commencer le printemps et son grand ménage traditionnel, nous vous proposons un petit oneliner qui vous affichera la liste des vm éteintes avec la date du poweroff <strong>basée sur la dernière modification du fichier nvram</strong> (qui coincide au fameux &#8220;VMX has left the building&#8221; dans le vmware.log) donc pas de dépendance avec la stratégie de rétention des tasks et events de votre VCDB.</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/The_old_Ladykillers/ds_browser_nvram.png" title="ds_browser_nvram" rel="lightbox[5789]"><img class="alignnone size-thumbnail wp-image-5790" title="ds_browser_nvram" src="http://www.hypervisor.fr/wp-content/uploads/2017/04/ds_browser_nvram-150x150.png" alt="" width="150" height="150" /></a> <a href="http://files.hypervisor.fr/img/The_old_Ladykillers/vmx_has_left_the_build_log.png" title="vmx_has_left_the_build_log" rel="lightbox[5789]"><img class="alignnone size-thumbnail wp-image-5791" title="vmx_has_left_the_build_log" src="http://www.hypervisor.fr/wp-content/uploads/2017/04/vmx_has_left_the_build_log-150x150.png" alt="" width="150" height="150" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Nous avons ajouté la taille de la VM pour vous motiver à faire un VeeamZIP et à en finir définitivement avec ces VM qui risque d&#8217;être redémarrées après un crash d&#8217;ESX&#8230;</p>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/The_old_Ladykillers/old_vm_off_ogv.png" alt="" width="495" height="596" /></p>
<pre class="brush: powershell; title: ; notranslate">get-view -viewtype virtualmachine -property name,runtime,layoutex|?{$_.Runtime.PowerState -eq &quot;poweredOff&quot; -and $_.Runtime.ConnectionState -eq &quot;connected&quot; -and !$_.config.template}|?{$_.LayoutEx.File|?{$_.type -match &quot;nvram&quot;}}|%{$_|select Name, @{n=&quot;Modification&quot;;e={((get-view (get-view -viewtype datastore –filter @{&quot;Name&quot;=($_.LayoutEx.File|?{$_.type -eq &quot;nvram&quot;}).name.split(&quot;[]&quot;)[1]}).browser).SearchDatastore(($_.LayoutEx.File|?{$_.type -eq &quot;nvram&quot;}).name.split(&quot;/&quot;)[0],(New-Object VMware.Vim.HostDatastoreBrowserSearchSpec -property @{matchPattern=(&quot;*.nvram&quot;); details=(New-Object VMware.Vim.FileQueryFlags -property @{modification=$true})}))|%{$_.file}).Modification}}, @{n=&quot;SizeGB&quot;;e={[math]::round(($_.LayoutEx.File|measure -Property size -sum).sum/1GB,1)}}}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5789</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VSAN SwapThickProvisionDisabled OneLiner</title>
		<link>http://www.hypervisor.fr/?p=5766</link>
		<comments>http://www.hypervisor.fr/?p=5766#comments</comments>
		<pubDate>Tue, 23 Aug 2016 16:30:30 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VSAN]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5766</guid>
		<description><![CDATA[Alors que nous en rêvions depuis 10 ans pour VMFS, VMware a introduit dans VSAN 6.2 la possibilité de &#8220;thin provisioner&#8221; la swap des VM :
In Virtual SAN 6.2, we introduced an advanced host setting called SwapThickProvisionDisabled, when enabled, removes the space reservation for .vswp files.
Une preuve de plus, s&#8217;il en fallait, que la bataille [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Alors que nous en rêvions depuis 10 ans pour VMFS, <a href="https://blogs.vmware.com/virtualblocks/2016/02/24/vsan62-powercli-sparse-vswp/#respond" target="_blank">VMware a introduit dans VSAN 6.2 la possibilité de &#8220;thin provisioner&#8221; la swap des VM</a> :</p>
<blockquote><p>In Virtual SAN 6.2, we introduced an advanced host setting called SwapThickProvisionDisabled, when enabled, removes the space reservation for .vswp files.</p></blockquote>
<p style="text-align: justify;">Une preuve de plus, s&#8217;il en fallait, que la bataille du SDS/HCI est rude jusqu&#8217;à en rogner ses best practices. En effet, nous rappelons à ceux qui auraient un trou de mémoire que placer le fichier de swap d&#8217;une VM sur un stockage &#8220;thin provisioné&#8221; va à l&#8217;encontre de toutes <a href="http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf" target="_blank">les bonnes règles de gestion</a> et <a href="https://pubs.vmware.com/vsphere-55/topic/com.vmware.vsphere.resmgmt.doc/GUID-AC40823A-695B-438A-A8F2-4B7C51A0D014.html" target="_blank">d&#8217;overcommit</a>.</p>
<blockquote><p><strong> Do not store swap files on thin-provisioned LUNs</strong>. Running a virtual machine with a swap file that is stored on a thin-provisioned LUN can cause swap file growth failure, which can lead to termination of the virtual machine.</p></blockquote>
<blockquote><p>Regardless of the storage type or location used for the regular swap file, for the best performance, and to avoid the possibility of running out of space, <strong>swap files should not be placed on thin-provisioned storage</strong>.</p></blockquote>
<p>Qu&#8217;importe, ca nous arrange bien aussi et pour l&#8217;occasion nous avons fait peter un petit oneliner pour fixer la bonne valeur :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VMHost|%{(Get-EsxCli -VMHost $_).system.settings.advanced.set($null,&quot;1&quot;,&quot;/VSAN/SwapThickProvisionDisabled&quot;,$null)}</pre>
<p>Et un autre pour vérifier que c&#8217;est bien appliqué :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VMHost|%{(Get-EsxCli -VMHost $_).system.settings.advanced.list($null,&quot;/VSAN/SwapThickProvisionDisabled&quot;,$null)}</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SwapThickProvisionDisabled.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SwapThickProvisionDisabled.png" alt="" width="526" height="249" /></a></p>
<p style="text-align: left;">Avec un petit coup de <a href="http://www.sexigraf.fr/vsan-sexipanels/#vsan-space-usage-report" target="_blank">SexiGraf </a>pour monitorer le tout, on est bon :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/VSAN_SwapThickProvisionDisabled.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/VSAN_SwapThickProvisionDisabled.png" alt="" width="515" height="275" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5766</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dump ElasticSearch en Powershell</title>
		<link>http://www.hypervisor.fr/?p=5646</link>
		<comments>http://www.hypervisor.fr/?p=5646#comments</comments>
		<pubDate>Tue, 05 Jan 2016 17:20:49 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[SexiLog]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5646</guid>
		<description><![CDATA[Parce que les logs d&#8217;ESXi sont particulièrement éphémères, il est fortement recommandé de les rediriger vers un syslog. Dans le cadre d&#8217;un SR chez VMware, il nous a fallu extraire le contenu d&#8217;une appliance SexiLog pour plusieurs ESX sur une période donnée. On a fait chauffé le notepad++ pour faire un truc en powershell qui [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Parce que les logs d&#8217;ESXi sont particulièrement éphémères, il est fortement recommandé de les rediriger vers un syslog</strong>. Dans le cadre d&#8217;un SR chez VMware, il nous a fallu extraire le contenu d&#8217;une appliance <a href="http://www.sexilog.fr/" target="_blank">SexiLog</a> pour plusieurs ESX sur une période donnée. On a fait chauffé le notepad++ pour faire un truc en powershell qui fait le taff comme il faut :</p>
<pre class="brush: powershell; title: ; notranslate">
$i=0
$pre = '{&quot;fields&quot; : [&quot;message&quot;],&quot;from&quot;:'
$post = ',&quot;size&quot;: 2000,&quot;query&quot;:{&quot;filtered&quot;:{&quot;query&quot;:{&quot;bool&quot;:{&quot;should&quot;:[{&quot;query_string&quot;:{&quot;query&quot;:&quot;hostname.raw:esx.vmware.com&quot;}}]}},&quot;filter&quot;:{&quot;bool&quot;:{&quot;must&quot;:[{&quot;range&quot;:{&quot;@timestamp&quot;:{&quot;from&quot;:1450738800000,&quot;to&quot;:1450997999999}}}]}}}}}'
$msgs=1

while ($msgs) {
$msgs=$false
$body = $pre + $i + $post
$msgs=(Invoke-RestMethod -URI &quot;http://demo.sexilog.fr:9200/_search?pretty=1&quot; -Method 'POST' -ContentType 'application/json' -Body $body -TimeoutSec 5).hits.hits.fields.message
$msgs|%{$_.Trim()}|Out-File -FilePath c:\temp\esx.vmware.com.log -Append
$i=$i+2000
}
</pre>
<p style="text-align: justify;">Il convient de remplacer les FQDN <strong>esx.vmware.com</strong> et <strong>demo.sexilog.fr</strong> par les vôtres et d&#8217;ajuster les valeurs <strong>from/to</strong> en epoch.</p>
<p style="text-align: justify;">Le script extrait tous les messages pour le serveur donné, sur la période donné vers un fichier de log <strong>par batch de 2000</strong> :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/ElasticDump/ElasticDumpBatch.png" alt="" width="462" height="124" /></p>
<p style="text-align: justify;">Et une fois l&#8217;export terminé, le script se termine par une erreur &#8220;attendue&#8221; :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/ElasticDump/ElasticDumpStop.png" alt="" width="470" height="156" /></p>
<p style="text-align: left;">A titre indicatif, il a fallut 1h pour extraire 1Go de log. <a href="https://github.com/v-team/powercli-toolbox/blob/master/ElasticDump.ps1" target="_blank">Egalement dispo sur GitHub si besoin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5646</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Hyper-VIX</title>
		<link>http://www.hypervisor.fr/?p=5610</link>
		<comments>http://www.hypervisor.fr/?p=5610#comments</comments>
		<pubDate>Fri, 06 Nov 2015 08:48:45 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Bullshit]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[VIX]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5610</guid>
		<description><![CDATA[Ya pas à dire, quand il s&#8217;agit de marketer une fonctionnalité vielle de 7 ans comme si c&#8217;était une nouveauté, on peut vraiment compter sur Microsoft.
En effet, à la lecture du titre de cette news &#8220;Using PowerShell Direct and other new features in Hyper-V on Windows 10&#8221; on s&#8217;attend clairement à un truc révolutionnaire. Vous [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ya pas à dire, quand il s&#8217;agit de <strong>marketer une fonctionnalité vielle de 7 ans</strong> comme si c&#8217;était une nouveauté, on peut vraiment compter sur Microsoft.</p>
<p style="text-align: justify;">En effet, à la lecture du titre de cette news &#8220;<a href="https://4sysops.com/archives/using-powershell-direct-and-other-new-features-in-hyper-v-on-windows-10/#powershell-direct" target="_blank">Using PowerShell Direct and other new features in Hyper-V on Windows 10</a>&#8221; on s&#8217;attend clairement à un truc révolutionnaire. Vous ne pouvez pas dire le contraire, <strong>&#8220;Powershell Direct&#8221; ça claque !</strong></p>
<p style="text-align: justify;">Alors, naïfs, on se précipite sur <a href="http://blogs.technet.com/b/virtualization/archive/2015/05/14/powershell-direct-running-powershell-inside-a-virtual-machine-from-the-hyper-v-host.aspx" target="_blank">TechNet</a> pour en savoir plus ! Mais là, comme pour le coup du <a href="http://www.hypervisor.fr/?p=3869" target="_blank">Smart Paging</a>, c&#8217;est le drame :</p>
<blockquote><p>It is a <strong>new way</strong> of running PowerShell commands inside a virtual machine from the host operating system easily and reliably<br />
[...]<br />
Note: This only works from Windows 10/Windows Server Technical Preview Hosts to Windows 10/Windows Server Technical Preview guests.</p></blockquote>
<p style="text-align: justify;">Bon là on ne va pas y aller par 4 chemins, on est sur du réchauffé++ car je rappel pour ceux qui n&#8217;étaient pas encore nés que <strong><a href="https://www.vmware.com/support/developer/windowstoolkit/wintk40/windowstoolkit40-200905-releasenotes.html" target="_blank">cette feature existe chez VMware depuis 2009</a></strong> :</p>
<blockquote><p>Invoke-VMScript: Runs the specified PowerShell script in the guest OS of each of the specified virtual machines.</p></blockquote>
<p>Et depuis 2011, elle supporte le SSO :</p>
<blockquote>
<p style="text-align: justify;"><strong>All VIX cmdlets support using SSPI for Windows guest machines if the underlying vCenter Server is 5.0 version</strong>. This might not be valid for users who are local, and not domain users. VIX cmdlets are <strong>Invoke-VMScript</strong>, Copy-VMGuestFile, *-VMGuestNetworkInterface, *-VMGUestRoute, and Set-HardDisk when used for guest disk resizing.</p>
</blockquote>
<p style="text-align: justify;">Et pour ceux qui l&#8217;ignorait, <a href="https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Invoke-VMScript.html" target="_blank">ce n&#8217;est évidement pas limité à Windows</a> comme c&#8217;est le cas d&#8217;Hyper-V :</p>
<blockquote>
<p style="text-align: justify;">ScriptType: Specify the type of the script. The valid values are PowerShell, Bat, and Bash. If the virtual machine OS is Windows, the default value is PowerShell. If the virtual machine OS is Linux, the default value is Bash.</p>
<p style="text-align: justify;">
</blockquote>
<p><a href="https://blogs.vmware.com/vix/2008/07/what-is-vix-and.html"><img class="aligncenter" title="What is VIX and why does it matter?" src="http://files.hypervisor.fr/img/vicks.jpg" alt="" width="500" height="332" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5610</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VsanHostDecommissionMode en PowerCLI</title>
		<link>http://www.hypervisor.fr/?p=5581</link>
		<comments>http://www.hypervisor.fr/?p=5581#comments</comments>
		<pubDate>Sat, 08 Aug 2015 00:03:51 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VSAN]]></category>
		<category><![CDATA[esxcli]]></category>
		<category><![CDATA[Get-EsxCli]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5581</guid>
		<description><![CDATA[Pour les 7 ans d&#8217;Hypervisor.fr (si,si, c&#8217;est aujourd&#8217;hui) nous vous offrons un petit onliner pour mettre en maintenance un des nœuds de votre cluster VSAN en PowerCLI, dans la lignée de nos précédents posts &#8220;vSphere sans le webclient&#8221;.
Nous étions parti pour utiliser le script disponible sur VSANTeam.info mais il est malheureusement faux car il n&#8217;inclus pas l&#8217;objet [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour les 7 ans d&#8217;<strong>Hypervisor.fr</strong> (<a href="http://www.hypervisor.fr/?p=1" target="_blank">si,si, c&#8217;est aujourd&#8217;hui</a>) nous vous offrons un petit onliner pour <strong>mettre en maintenance un des nœuds de votre cluster VSAN en PowerCLI</strong>, dans la lignée de nos précédents posts &#8220;vSphere sans le webclient&#8221;.</p>
<p style="text-align: justify;">Nous étions parti pour utiliser le script disponible sur <a href="http://vsanteam.info/maintenance-mode-using-powercli/" target="_blank">VSANTeam.info</a> mais il est malheureusement faux car il n&#8217;inclus pas l&#8217;objet <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.vsan.host.DecommissionMode.ObjectAction.html" target="_blank">VsanHostDecommissionModeObjectAction</a> et donc <strong>le mode &#8220;ensureObjectAccessibility&#8221; est utilisé par défaut</strong>. Donc pour pouvoir utiliser le mode &#8220;evacuateAllData&#8221; ou &#8220;noAction&#8221; c&#8217;est comme ça qu&#8217;on fait :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType HostSystem -Filter @{&quot;Name&quot; = &quot;esx.vmware.com&quot; }|?{!$_.Runtime.InMaintenanceMode}|%{$_.EnterMaintenanceMode(0, $false, (new-object VMware.Vim.HostMaintenanceSpec -Property @{vsanMode=(new-object VMware.Vim.VsanHostDecommissionMode -Property @{objectAction=[VMware.Vim.VsanHostDecommissionModeObjectAction]::NoAction})}))}</pre>
<p>Sinon vous pouvez aussi le faire avec Get-EsxCli en vous inspirant <a href="http://www.virtuallyghetto.com/2014/07/quick-tip-steps-to-shutdownstartup-vsan-cluster-wvcenter-running-on-vsan-datastore.html" target="_blank">du post de William</a>.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/vSAN.png" alt="" width="349" height="260" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5581</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SendNMI in your face</title>
		<link>http://www.hypervisor.fr/?p=5556</link>
		<comments>http://www.hypervisor.fr/?p=5556#comments</comments>
		<pubDate>Tue, 16 Jun 2015 21:54:46 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[NMI]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5556</guid>
		<description><![CDATA[A chaque nouvelle version de vSphere, c&#8217;est toujours un plaisir de fouiller dans le SDK. La cuvée 2015 offre son lot de surprises comme le GuestWindowsRegistryManager qui permet de gérer la registry de Windows directement via les API VIX, des traces du projet VMFork (aka Linked Clones ++) qu&#8217;on attend avec impatience ou encore la possibilité [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A chaque nouvelle version de vSphere, c&#8217;est toujours un plaisir de fouiller dans le SDK. <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/new-mo-types-landing.html">La cuvée 2015</a> offre son lot de surprises comme le <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.vm.guest.WindowsRegistryManager.html" target="_blank">GuestWindowsRegistryManager</a> qui permet de <strong>gérer la registry de Windows directement via les API VIX</strong>, <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.vm.ForkConfigInfo.html" target="_blank">des traces</a> du <a href="http://www.yellow-bricks.com/2014/10/07/project-fargo-aka-vmfork-what-is-it/" target="_blank">projet <strong>VMFork</strong></a> (aka Linked Clones ++) qu&#8217;on attend avec impatience ou encore <strong><a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.VirtualMachine.html#sendNMI">la possibilité d&#8217;envoyer une non-maskable interrupt</a></strong> (<a href="https://en.wikipedia.org/wiki/Non-maskable_interrupt">aka NMI</a>) à une VM pour un troubleshooting velu.</p>
<p>Historiquement, il était un peu complexe de générer ce genre d’interruption <a href="http://www.virtuallyghetto.com/2014/07/quick-tip-how-to-bsodpanic-a-virtual-machine-in-esxi.html">comme le détail William</a> mais avec cette nouvelle API cela devient un jeu d&#8217;enfant en PowerCLI :</p>
<pre class="brush: powershell; title: ; notranslate">(Get-VM toto|Get-View).SendNMI()</pre>
<p>Malheureusement, connecté au vCenter, on se mange une jolie erreur :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_vCenter_error.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_vCenter_error.png" alt="" width="521" height="90" /></a></p>
<blockquote>
<p style="text-align: left;">Exception calling &#8220;SendNMI&#8221; with &#8220;0&#8243; argument(s): &#8220;The requested operation is not implemented by the server.&#8221;</p>
</blockquote>
<p><strong>Connecté en direct sur un ESX</strong> ça se passe nettement mieux :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_task.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_task.png" alt="" width="431" height="117" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_BSOD.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_BSOD.png" alt="" width="454" height="379" /></a></p>
<p style="text-align: left;">En prime, on droit au nouvel événement <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.wssdk.apiref.doc/vim.event.VmGuestOSCrashedEvent.html" target="_blank">VmGuestOSCrashedEvent</a> :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_event.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SendNMI/SendNMI_ESXi_event.png" alt="" width="547" height="180" /></a></p>
<blockquote>
<p style="text-align: left;">&lt;166&gt;NoneZ visor04.lab.schitz.org Hostd: 2015-06-04T22:21:45.933Z info hostd[6DE83B70] [Originator@6876 sub=Vimsvc.ha-eventmgr] Event 894 : Win10 on visor04.lab.schitz.org: <strong>Guest operating system has crashed</strong>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5556</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Events</title>
		<link>http://www.hypervisor.fr/?p=5229</link>
		<comments>http://www.hypervisor.fr/?p=5229#comments</comments>
		<pubDate>Tue, 08 Jul 2014 07:16:00 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[alarm]]></category>
		<category><![CDATA[esx.problem]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[VMkernel Observations]]></category>
		<category><![CDATA[vob]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5229</guid>
		<description><![CDATA[MAJ 08/01/2019 :  Pour les events vCenter, il faut prefixer avec &#8220;Vim.Event.&#8221; quand on joue avec l&#8217;EventManager.
Que ce soit pour créer de nouvelles alarmes dans le vCenter ou parce que certains messages d&#8217;alerte ne sont visible que dans les logs d&#8217;ESXi, nous avions autrefois recours à la page vCenter Events de Veeam pour trouver l&#8217;inspiration. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 08/01/2019</span> :  Pour les events vCenter, il faut prefixer avec &#8220;<strong>Vim.Event.</strong>&#8221; quand on joue avec l&#8217;EventManager.</em></p>
<p style="text-align: justify;">Que ce soit pour <a href="http://www.hypervisor.fr/?p=4048" target="_blank">créer de nouvelles alarmes dans le vCenter</a> ou parce que certains messages d&#8217;alerte ne sont visible que dans les logs d&#8217;ESXi, nous avions autrefois recours à <a href="http://www.veeam.com/support/vcEvents.html">la page vCenter Events de Veeam</a> pour trouver l&#8217;inspiration. Cette page n&#8217;étant plus mise à jour depuis fin 2011, nous avons chercher à produire un page similaire pour nos propres besoins et l&#8217;avons, depuis quelques temps, mise à dispo <a href="http://www.hypervisor.fr/?page_id=382" target="_blank">dans la rubrique &#8220;Links&#8221;</a>. Voici la commande PowerCLI qui vous permettra de générer la votre depuis votre vCenter (et plugins) :</p>
<pre class="brush: powershell; title: ; notranslate">(Get-View EventManager).Description.EventInfo|select @{n=&quot;event&quot;;e={if ($_.key -match &quot;^EventEx$|^ExtendedEvent$&quot;) {$_.FullFormat.split(&quot;|&quot;)[0]} else {$_.key}}},category,description,FullFormat|Out-GridView</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vcEvents_GridView.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vcEvents_GridView.png" alt="" width="523" height="401" /></a></p>
<p style="text-align: justify;">Nous nous sommes très largement inspiré <a href="http://www.lucd.info/2009/11/18/events-dear-boy-events-part-2/" target="_blank">d&#8217;un post de Luc pour ce oneliner</a> <img src='http://www.hypervisor.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Récemment, <a href="http://www.virtuallyghetto.com/2014/04/other-handy-vsphere-vobs-for-creating-vcenter-alarms.html" target="_blank">William à posté une liste similaire issue d&#8217;un fichier disponible en clair dans les librairies d&#8217;ESXi</a> mais nous avons remarqué qu&#8217;il ne contenait pas les événements vob.* que nous pouvions trouver dans les logs. Après quelques recherches, nous avons fini par faire un coup de <a href="http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx" target="_blank">strings</a> sur le binaire <strong>/usr/lib/vmware/vob/bin/vobd</strong> (issue d&#8217;un ESXi 5.5 1331820) pour en extraire les précieux messages. Nous avons ensuite &#8220;dédoublonné&#8221; la liste obtenue (vob.vmfs.heartbeat.timedout == esx.problem.vmfs.heartbeat.timedout par exemple) pour ne garder que le différentiel :</p>
<blockquote><p>vob.net.fence.port.fail<br />
vob.net.pg.uplink.transition.down<br />
vob.net.pg.uplink.transition.up<br />
vob.net.dvport.uplink.transition.down<br />
vob.net.dvport.uplink.transition.up<br />
vob.net.uplink.watchdog.timeout<br />
vob.net.migrate.bindtovmk.failed<br />
vob.net.portset.port.connect.fail<br />
vob.net.lacp.uplink.peer.noresponse<br />
vob.scsi.scsipath.add<br />
vob.scsi.scsipath.remove<br />
vob.scsi.scsipath.por<br />
vob.scsi.scsipath.badpath.unsafepe<br />
vob.scsi.scsipath.badpath.unreachpe<br />
vob.scsi.scsipath.pathstate.dead<br />
vob.scsi.scsipath.pathstate.off<br />
vob.scsi.scsipath.pathstate.on<br />
vob.scsi.scsipath.pathstate.standby<br />
vob.iscsi.connection.started<br />
vob.iscsi.connection.stopped<br />
vob.iscsi.connection.error<br />
vob.iscsi.target.async.event<br />
vob.iscsi.session.recovery.timeout<br />
vob.iscsi.target.permanently.removed<br />
vob.iscsi.isns.discovery.error<br />
vob.vmfs.lock.corruptondisk.v2<br />
vob.user.dcui.factory.network.restored<br />
vob.user.dcui.restarting.hostagents<br />
vob.user.dcui.restore.factory.defaults<br />
vob.user.dhclient.lease.offered.noexpiry<br />
vob.user.coredump.unconfigured2<br />
vob.user.coredump.capacity.insufficient<br />
vob.user.scratch.partition.size.small<br />
vob.user.scratch.partition.unconfigured<br />
vob.user.dcui.reboot.host<br />
vob.user.dcui.shutdown.host<br />
vob.user.esxcli.host.reboot<br />
vob.user.coredump.configured2<br />
vob.cpu.mce.log<br />
vob.cpu.nmi.ipi.vmkcs<br />
vob.cpu.nmi.ipi.unknowncs<br />
vob.cpu.nmi.ipi.halt<br />
vob.cpu.nmi.ipi.savebt<br />
vob.uw.core.dumped<br />
vob.external.warning<br />
vob.external.error<br />
vob.external.info<br />
vob.user.external.warning<br />
vob.user.external.error<br />
vob.user.external.info<br />
vob.visorfs.tardisk.readonlyfile<br />
vob.vsan.pdl.offline<br />
vob.vsan.pdl.online<br />
vob.vsan.net.gotip<br />
vob.vsan.net.noip<br />
vob.vsan.rdt.noip<br />
vob.vsan.net.no.connectivity<br />
vob.vsan.net.created<br />
vob.vsan.net.reconfigured<br />
vob.vsan.cmmds.disabled<br />
vob.vsan.cmmds.unloaded<br />
vob.vsan.cmmds.enabled<br />
vob.vsan.lsom.diskerror</p></blockquote>
<p>Pour les curieux, <a href="http://files.hypervisor.fr/doc/vobd.txt" target="_blank">voici la liste originale</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5229</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinBSOD in vmware.log</title>
		<link>http://www.hypervisor.fr/?p=5221</link>
		<comments>http://www.hypervisor.fr/?p=5221#comments</comments>
		<pubDate>Fri, 04 Jul 2014 07:27:39 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kb]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[BSOD]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5221</guid>
		<description><![CDATA[Lors d&#8217;une petite séance de troubleshooting décontractée, nous avons été agréablement surpris de constater que lors d&#8217;un BSOD sous Windows, le texte affiché était redirigé dans le vmware.log de la VM. Ça évite l&#8217;OCR&#8230;

La seule référence que nous ayons pu trouver à ce sujet est une kb d&#8217;un path pour ESXi 5.0, dommage.
En passant, nous vous [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lors d&#8217;une petite séance de troubleshooting décontractée, nous avons été agréablement surpris de constater que <strong>lors d&#8217;un BSOD sous Windows, le texte affiché était redirigé dans le vmware.log</strong> de la VM. <a href="http://www.ntpro.nl/blog/archives/1100-Virtual-Machine-Blue-Screen-detector.html" target="_blank">Ça évite l&#8217;OCR</a>&#8230;</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/WinBSOD.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/WinBSOD_small.png" alt="" width="536" height="273" /></a></p>
<p style="text-align: justify;">La seule référence que nous ayons pu trouver à ce sujet est <a href="http://kb.vmware.com/kb/2065700" target="_blank">une kb d&#8217;un path pour ESXi 5.0</a>, dommage.</p>
<p style="text-align: justify;">En passant, nous vous rappelons qu&#8217;<a href="http://www.virtuallyghetto.com/2013/07/a-hidden-vsphere-51-gem-forwarding.html" target="_blank">il est possible de rediriger le log d&#8217;une VM vers le syslog d&#8217;ESXi</a> pour vous éviter de fouiller dans le fichier vmware.log et c&#8217;est bien sûr faisable à chaud en PowerCLI (comme d&#8217;hab, vmotion pour appliquer le setting) :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VM toto|Get-View|?{-not $_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=@((New-Object VMware.Vim.optionvalue -Property @{Key=&quot;vmx.log.destination&quot;; Value=&quot;syslog-and-disk&quot;}))}))}</pre>
<p style="text-align: justify;">Après on peut faire des belles requêtes dans son Graylog2 :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vm2syslog.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vm2syslog_small.png" alt="" width="487" height="564" /></a></p>
<p style="text-align: left;">Un grand merci à <a href="https://twitter.com/lamw" target="_blank">William</a> pour cette pépite.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5221</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#QuickDasAutoSlotSize Failover Capacity (Planning)</title>
		<link>http://www.hypervisor.fr/?p=5004</link>
		<comments>http://www.hypervisor.fr/?p=5004#comments</comments>
		<pubDate>Tue, 24 Dec 2013 17:16:10 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[capacity planning]]></category>
		<category><![CDATA[DRS]]></category>
		<category><![CDATA[FDM]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[Noël]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5004</guid>
		<description><![CDATA[Depuis plusieurs mois maintenant, nous utilisons notre script HA AutoSlotSize sur un environnement composé de plusieurs gros cluster comme celui-ci :

Premier constat, le temps de compute des valeurs moyennes de cpu et ram est très important et c&#8217;est évidement proportionnel au nombre de nœuds. Pour optimiser ce script, nous nous somme rabattu sur les quickstats [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Depuis plusieurs mois maintenant, nous utilisons notre <a href="http://www.hypervisor.fr/?p=4283" target="_blank">script HA AutoSlotSize</a> sur un environnement composé de plusieurs gros cluster comme celui-ci :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_quick_general.png" alt="" width="381" height="325" /></p>
<p style="text-align: justify;">Premier constat, le temps de compute des valeurs moyennes de cpu et ram est très important et c&#8217;est évidement proportionnel au nombre de nœuds. <strong>Pour optimiser ce script, nous nous somme rabattu sur <a href="http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.ResourcePool.Summary.QuickStats.html" target="_blank">les quickstats du resource pool</a> &#8220;racine&#8221; du cluster</strong> (<a href="http://www.hypervisor.fr/?p=4841" target="_blank">aka &#8220;resources&#8221;</a>). Ces valeurs étant basé sur les 5 dernières minutes d&#8217;activité (et non sur les 24 dernières heures comme le script original),<strong> il faut l&#8217;exécuter au moment de la journée où l&#8217;activité du cluster est la plus importante </strong>pour avoir des valeurs vraiment représentatives du workload. Le gros avantage de ces valeurs est qu&#8217;il n&#8217;est pas nécessaire de faire une requête dans les statistiques, elles sont <em>pré-computées</em> et disponibles sous forme de propriétés, on passe donc d&#8217;une exécution pouvant aller jusqu&#8217;à plusieurs minutes à 2 secondes par cluster. Comme dirait <a href="http://www.dailymotion.com/video/xxkxw_007-tu-peux-pas-test_fun" target="_blank">Mozinor</a>, &#8220;tu peux pas test&#8221;.</p>
<p style="text-align: justify;">Deuxième constat, le <a href="http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.cluster.DasConfigInfo.html#admissionControlPolicy" target="_blank">mode &#8220;slot size&#8221; d&#8217;admition control</a> ne tiens pas compte de l&#8217;overcommit. <a href="http://www.amazon.fr/VMware-vSphere-5-1-Clustering-Deepdive/dp/1478183411/ref=sr_1_1" target="_blank">Duncan et Frank l&#8217;explique en détail dans leur bouquin</a> mais voici un exemple encore plus parlant :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_quick_slot_policy.png" alt="" width="412" height="202" /></p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_quick_percent_policy.png" alt="" width="410" height="218" /></p>
<p style="text-align: justify;">3 hosts sur 12 (25%) en mode &#8220;slot size&#8221; contre 67% en mode &#8220;resources&#8221;. Dans ce dernier mode, HA tiens compte de la <strong>consommation réelle</strong> du cluster pour déterminer ce qu&#8217;il reste.</p>
<blockquote>
<p style="text-align: justify;">With the resources failover policy in place, vSphere HA uses the following calculations to control virtual machine migration in the cluster<br />
1. Calculate the total resource requirements for all powered-on virtual machines in the cluster.<br />
[...]</p>
</blockquote>
<p>Il est donc clair que sur des gros cluster avec de l&#8217;overcommit, le mode &#8220;slot size&#8221; est totalement inutilisable.</p>
<p>En attendant de déguster la dinde farcie aux marrons de tante Yolande, voici le oneliner powershell à deguster en amuse-bouche :</p>
<pre class="brush: powershell; title: ; notranslate">foreach ($cluster in (Get-View -ViewType ClusterComputeResource|?{$_.ConfigurationEx.DasConfig.Enabled})) {,($cluster|?{$_.host}|select @{n=&quot;mem&quot;;e={(($_|%{(Get-View $cluster.ResourcePool|?{$_.Parent -eq $cluster.Moref}).Summary.QuickStats.HostMemoryUsage/(Get-View -ViewType virtualmachine -SearchRoot $cluster.moref -Property Runtime.PowerState|?{$_.Runtime.PowerState -eq &quot;poweredOn&quot;}).count}))}}, @{n=&quot;cpu&quot;;e={(($_|%{((Get-View $cluster.ResourcePool|?{$_.Parent -eq $cluster.Moref}).Summary.QuickStats.OverallCpuUsage)/(Get-View -ViewType virtualmachine -SearchRoot $cluster.moref -Property Runtime.PowerState|?{$_.Runtime.PowerState -eq &quot;poweredOn&quot;}).count}))}}, @{n=&quot;vcpu&quot;;e={(Get-View -ViewType virtualmachine -SearchRoot $cluster.moref -Property Runtime.PowerState,Config.Hardware.NumCpu|?{$_.Runtime.PowerState -eq &quot;poweredOn&quot;}|Select @{n=&quot;vcpu&quot;;e={$_.Config.Hardware.NumCPU}}|Measure-Object -Average -Property vcpu).average}}|measure -average -property mem,cpu,vcpu|%{[math]::round($_.average,0)})|%{if (($_|measure -Sum).sum -ne ($cluster.ConfigurationEx.DasConfig.Option|?{$_.key -match &quot;das.slotCpuInMhz|das.slotMemInMB&quot;}|measure -Sum -Property value).sum -and ($_|measure -Sum).sum -gt &quot;64&quot;) {$cluster.ReconfigureComputeResource((New-Object VMware.Vim.ClusterConfigSpecEx -property @{dasConfig=(New-Object VMware.Vim.ClusterDasConfigInfo -property @{option=@((New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmMemoryMinMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmCpuMinMHz&quot;;value=$_[1].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotMemInMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotCpuInMhz&quot;;value=$_[1].tostring()}))})}),$true)}}}</pre>
<p>Joyeux Noël à tous !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5004</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testez VMware HA avec la cmdlet Stop-VM</title>
		<link>http://www.hypervisor.fr/?p=4930</link>
		<comments>http://www.hypervisor.fr/?p=4930#comments</comments>
		<pubDate>Wed, 20 Nov 2013 16:47:39 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[FDM]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[sso]]></category>
		<category><![CDATA[Wireshark]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4930</guid>
		<description><![CDATA[Nous découvrons par hasard l&#8217;existence  du paramètre &#8220;-kill&#8221; de la cmdlet Stop-VM :

Indicates that you want to stop the specified virtual machines by terminating their processes running on the ESX. You can use this parameter to stop a virtual machine that is not responding and cannot be stopped or restarted in other ways.

Cela ressemble fortement [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Nous découvrons par hasard l&#8217;existence  du paramètre &#8220;-kill&#8221; de la cmdlet <a href="http://pubs.vmware.com/vsphere-51/topic/com.vmware.powercli.cmdletref.doc/Stop-VM.html" target="_blank">Stop-VM</a> :</p>
<blockquote>
<p style="text-align: justify;">Indicates that you want to stop the specified virtual machines by terminating their processes running on the ESX. You can use this parameter to stop a virtual machine that is not responding and cannot be stopped or restarted in other ways.</p>
</blockquote>
<p style="text-align: justify;">Cela ressemble fortement à un kill des process vmx dans un <a href="http://kb.vmware.com/kb/1014165" target="_blank">shell, via esxtop ou esxcli</a> mais nécessiterai d’être connecté à l&#8217;ESXi plutôt qu&#8217;au vcenter :</p>
<blockquote>
<p style="text-align: justify;">To use the Kill parameter, you need to have a direct connection to ESX 4.1 or later.</p>
</blockquote>
<p style="text-align: justify;">Mais une fois de plus le <a href="http://en.wikipedia.org/wiki/Monkey_test" target="_blank">monkey test</a> à payé, nous testons la commande en étant connecté au vcenter et ça marche. la vm est littéralement killée sans aucune tache apparente dans le vcenter ni sur l&#8217;ESX et HA la restart :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/stop-vm/stop-vm-kill-cli.png" alt="" width="497" height="131" /></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/stop-vm/stop-vm-kill-ha.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/stop-vm/stop-vm-kill-ha.png" alt="" width="529" height="340" /></a></p>
<p style="text-align: justify;">Nous avons également vérifié avec Wireshark qu&#8217;aucune communication n&#8217;avait lieu entre le client PowerCLI et l&#8217;ESXi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4930</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Différentiel de vib par cluster &#8211; MAJ</title>
		<link>http://www.hypervisor.fr/?p=4880</link>
		<comments>http://www.hypervisor.fr/?p=4880#comments</comments>
		<pubDate>Thu, 19 Sep 2013 17:39:48 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[esxcli]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[vib]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4880</guid>
		<description><![CDATA[MAJ 03/10/2015 : mise à jour du script (version 1.2) correction de bug et ajout sur GitHub.
MAJ 10/10/2013 : mise à jour du script (version 1.1) correction de bug.
Après avoir fait des tests de drivers Emulex sur un cluster, nous avons voulu savoir quelle version de la vib lpfc820 était installée sur chaque host. Pas [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><em><span style="color: #ff0000;">MAJ 03/10/2015</span> : mise à jour du script (version 1.2) correction de bug et ajout sur GitHub.</em></em></p>
<p style="text-align: justify;"><em><em><span style="color: #ff0000;">MAJ 10/10/2013</span> : mise à jour du script (version 1.1) correction de bug.</em></em></p>
<p style="text-align: justify;">Après avoir fait des tests de drivers Emulex sur un cluster, nous avons voulu savoir quelle version de la vib lpfc820 était installée sur chaque host. Pas évident même avec VUM, nous avons donc fait un petit coup de get-esxcli sur tous les ESX pour comparer la list mais bon voila, c&#8217;était pas pratique non plus. Au passage, nous nous sommes aperçu que certaines vib du constructeur n&#8217;étaient pas à la même version sur tous les serveurs. On a dû faire chauffer le notepad++ !</p>
<p style="text-align: justify;">Voici donc un script de <strong>reporting de vib</strong> qui renvoi la liste des serveurs dont certaines vib sont différentes de la majorité du cluster :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vibdiffview.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vibdiffview.png" alt="" width="501" height="494" /></a></p>
<p style="text-align: left;">Vous avez la possibilité d&#8217;utiliser les paramètres suivants :</p>
<ul>
<li>cluname : nom du cluster dont sera tirée la liste des ESX connectés au vcenter</li>
<li>fullviblist : 1 renvoi une liste non filtrée dans un out-gridview</li>
<li>compactviblist : 1 renvoi une liste filtrée (ESX et vib)</li>
<li>compactviblistout : &#8220;csv&#8221; ou &#8220;view&#8221; pour avoir la liste en csv ou dans un out-gridview plutot quand dans la console</li>
</ul>
<p>Vous pouvez l’exécuter sur plusieurs cluster grâce à une simple boucle :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vibdiffclusters.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vibdiffclusters.png" alt="" width="466" height="114" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vibdiffconsole.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vibdiffconsole.png" alt="" width="468" height="115" /></a></p>
<p style="text-align: justify;">En mode compacte, seules les vib qui comportent une différence sont remontées et la colonne &#8220;<strong>majority</strong>&#8221; représente le serveur de référence (un de ceux qui ont exactement les mêmes vib et à la même version). Le symbole <strong>==</strong> indique que la version de la vib est identique à la vib de la majorité.</p>
<div class="wp-caption aligncenter" style="width: 110px"><a href="https://github.com/v-team/powercli-toolbox/blob/master/get-clustervibdiff.ps1" target="_blank"><img class="  " title="get-vibdiff" src="http://files.hypervisor.fr/img/super_mario_piranha_plant.png" alt="" width="100" height="100" /></a><p class="wp-caption-text">get-vibdiff</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4880</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VM Latency Sensitivity : same feature, shoot again!</title>
		<link>http://www.hypervisor.fr/?p=4278</link>
		<comments>http://www.hypervisor.fr/?p=4278#comments</comments>
		<pubDate>Mon, 16 Sep 2013 06:07:46 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Bullshit]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4278</guid>
		<description><![CDATA[On attend toujours la dispo officielle de vSphere 5.5 annoncée au VMworld US 2013 mais comme d&#8217;habitude on a droit à une avalanche de posts de la part de tous les beta testeurs en manque de créativité avec des morceaux de screenshot dedans. Comme c&#8217;est pas le genre de la maison, on va se contenter [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">On attend toujours la dispo officielle de vSphere 5.5 annoncée au VMworld US 2013 mais comme d&#8217;habitude on a droit à une avalanche de posts de la part de tous les beta testeurs en manque de créativité avec des morceaux de screenshot dedans. Comme c&#8217;est pas le genre de la maison, on va se contenter de spéculer sur une &#8220;nouvelle&#8221; feature <a href="http://www.vmware.com/files/pdf/techpaper/latency-sensitive-perf-vsphere55.pdf" target="_blank">qui a déjà eu droit à son whitepaper</a> : <strong>VM Latency Sensitivity</strong>.</p>
<blockquote>
<p style="text-align: justify;">In order to support virtual machines with strict latency requirements, vSphere 5.5 introduces a new per-VM feature called Latency Sensitivity.</p>
</blockquote>
<p style="text-align: justify;">Cela nous a fait curieusement penser à une autre feature <a href="http://www.vmware.com/files/pdf/techpaper/latency-sensitive-perf-vsphere55.pdf#page=6" target="_blank">disponible dans la version 5.1</a> : <strong><a href="http://pubs.vmware.com/vsphere-51/topic/com.vmware.wssdk.apiref.doc/vim.LatencySensitivity.html" target="_blank">VM Latency Sensitivity</a></strong>.</p>
<blockquote>
<p style="text-align: justify;">vSphere 5.1 simplifies the process of configuring a virtual machine to support low-latency applications. It now offers a latency sensitivity advanced setting that automatically makes low-level changes in the vSphere kernel to reduce latency for the virtual machine.</p>
</blockquote>
<p style="text-align: justify;">Ah tiens c&#8217;est bizarre, elles ont le même nom&#8230;</p>
<p style="text-align: justify;">Vous constaterez qu&#8217;il n&#8217;en est nullement fait référence dans le whitepaper de la 5.5 donc impossible de savoir si c&#8217;est &#8220;vraiment&#8221; une nouvelle fonctionnalité, la même fonctionnalité améliorée ou un gros pipeau.</p>
<p style="text-align: justify;">En attendant d&#8217;en savoir plus, on vous a préparé un petit oneliner pour activer la fonctionnalité et même fixer le nombre de µs secondes que vous souhaiter (2000 dans notre exemple) :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VM &quot;Flash_Gordon&quot;|Get-View|?{-not $_.Config.Template}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{latencySensitivity=(New-Object VMware.Vim.LatencySensitivity -Property @{level=&quot;custom&quot;;sensitivity=&quot;2000&quot;})}))}</pre>
<p>Et pour savoir ce qui a été configurer :</p>
<pre class="brush: powershell; title: ; notranslate">(Get-VM &quot;Flash_Gordon&quot;|Get-View).Config.LatencySensitivity</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4278</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>No snapshot = No backup</title>
		<link>http://www.hypervisor.fr/?p=4830</link>
		<comments>http://www.hypervisor.fr/?p=4830#comments</comments>
		<pubDate>Tue, 18 Jun 2013 20:53:23 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[veeam]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4830</guid>
		<description><![CDATA[Aussi invraisemblable que cela puisse paraître, il peut arriver que vous ayez besoin d’empêcher le backup sur une VM sans être en mesure de l&#8217;exclure, ou le faire exclure, de l&#8217;outil de backup. Aux grands maux, les grands remèdes : on empêche les snapshots en PowerCLI (et à chaud).
Get-VM nobackup&#124;Get-View&#124;?{-not $_.Config.Template -and $_.Runtime.ConnectionState -eq &#34;connected&#34;}&#124;%{$_.ReconfigVM((New-Object [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Aussi invraisemblable que cela puisse paraître, il peut arriver que vous ayez besoin d’empêcher le backup sur une VM sans être en mesure de l&#8217;exclure, ou le faire exclure, de l&#8217;outil de backup. Aux grands maux, les grands remèdes : <a href="http://www.virtuallyghetto.com/2010/10/how-to-control-maximum-number-of-vmware.html" target="_blank">on empêche les snapshots</a> en PowerCLI (et à chaud).</p>
<pre class="brush: powershell; title: ; notranslate">Get-VM nobackup|Get-View|?{-not $_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=@((New-Object VMware.Vim.optionvalue -Property @{Key=&quot;snapshot.maxSnapshots&quot;; Value=&quot;0&quot;}))}))}</pre>
<p>Ça pique mais ça marche :</p>
<blockquote><p>A general system error occurred: Exceeded the maximum number of permitted snapshots</p></blockquote>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/nobackup.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/nobackup.png" alt="" width="416" height="274" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4830</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The vExpendables</title>
		<link>http://www.hypervisor.fr/?p=4633</link>
		<comments>http://www.hypervisor.fr/?p=4633#comments</comments>
		<pubDate>Fri, 29 Mar 2013 08:23:29 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Kb]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[DVS]]></category>
		<category><![CDATA[DVSwitch]]></category>
		<category><![CDATA[oneliner]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4633</guid>
		<description><![CDATA[C&#8217;est le tweet de Arne Fokkema qui nous a fais découvrir une feature de DVS 5.0+ qui ne semble pas très connue, l&#8217;autoExpand. Comme son nom le laisse deviner, cette fonctionnalité relègue au placard tous les scripts de check de ports encore disponibles que vous passiez jadis sur votre infra pour ne pas vous retrouver en rade [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">C&#8217;est <a href="https://twitter.com/afokkema/status/315107918443864064" target="_blank">le tweet de Arne Fokkema</a> qui nous a fais découvrir une feature de DVS 5.0+ qui ne semble pas très connue, l&#8217;<a href="http://blogs.vmware.com/vsphere/2012/02/automating-auto-expand-configuration-for-a-dvportgroup-in-vsphere-5.html" target="_blank"><strong>autoExpand</strong></a>. Comme son nom le laisse deviner, cette fonctionnalité relègue au placard tous les scripts de check de ports encore disponibles que vous passiez jadis sur votre infra pour ne pas vous retrouver en rade au prochain déploiement de VM.</p>
<p style="text-align: justify;">En effet, après avoir activé l&#8217;autoExpand, le nombre de ports utilisables d&#8217;un DVPortgroup (en Static binding aka <a href="http://vijava.sourceforge.net/vSphereAPIDoc/ver51/ReferenceGuide/vim.dvs.DistributedVirtualPortgroup.PortgroupType.html" target="_blank">earlyBinding</a>) se verra incrémenté automatiquement de 10 lorsqu&#8217;aucun port n&#8217;est disponible pour une nouvelle VM. Il y a également une fonction d&#8217;autoShrink décrite dans l&#8217;API Reference mais c&#8217;est une peu vague :</p>
<blockquote>
<p style="text-align: justify;">When this property is set to true, the portgroup becomes a potential candidate for auto-shrink. Once the portgroup has auto-expanded then its disconnected ports are likely to be deleted automatically, as a part of auto-shrink step, <strong>if there are more than certain number of free ports</strong>. If the portgroup never auto-expanded, then it will never lose any free ports.</p>
</blockquote>
<p style="text-align: justify;">Sachant que cette fonction est activé par défaut sur les DVSwitch 5.1, nous avons voulu vérifier si c&#8217;était également le cas lors d&#8217;une migration :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/dvpg50_autoexpand.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/dvpg50_autoexpand.png" alt="" width="516" height="348" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/dvpg50_autoexpand_up.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/dvpg50_autoexpand_up.png" alt="" width="516" height="329" /></a></p>
<p style="text-align: left;">On constate donc que même <strong>après avoir upgradé le DVSwitch 5.0.0 en 5.1.0, l&#8217;autoExpand est toujours désactivé</strong>. Mais pas pour longtemps <img src='http://www.hypervisor.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Après analyse du script PowerCLI d&#8217;Arne et de l&#8217;API Reference, nous avons constaté que les DVUplinks &#8220;disposaient&#8221; de cette fonctionnalité (<strong>désactivée dans tous les cas et à ne probablement pas activer</strong>) car comme nous le confirme <a href="http://www.doublecloud.org/2011/06/tagging-an-invisible-feature-in-vsphere/" target="_blank">Steve Jin, ce ne sont que des DVPortgroup avec un tag spécifique</a> (SYSTEM/DVS.UPLINKPG). De plus, lors de la reconfiguration du DVPortgroup, la propriété <a href="http://vijava.sourceforge.net/vSphereAPIDoc/ver51/ReferenceGuide/vim.dvs.DistributedVirtualPortgroup.ConfigInfo.html#configVersion" target="_blank">configVersion</a> devrait être incrémentée. Et pour finir, en onliner c&#8217;est plus sexy :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType DistributedVirtualPortgroup|?{!($_.Tag|?{$_.Key -eq &quot;SYSTEM/DVS.UPLINKPG&quot;}) -and !$_.Config.autoExpand}|%{$_.ReconfigureDVPortgroup_Task((New-Object VMware.Vim.DVPortgroupConfigSpec -Property @{autoExpand=&quot;True&quot;;ConfigVersion=[int32]$_.Config.ConfigVersion+1}))}</pre>
<p><strong>Le script n&#8217;active la fonctionnalité que sur les DVPortgroup ne l&#8217;ayant pas déjà (hors DVUplinks) et incrémente la propriété ConfigVersion de 1</strong> :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/dvpg50_autoexpand_ex.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/dvpg50_autoexpand_ex.png" alt="" width="516" height="475" /></a></p>
<p style="text-align: left;">Et pour ceux qui voudraient savoir quand de nouveaux ports ont été ajoutés ou supprimés, il y a une alarme pour ça (<em>Monitor : vSphere Distributed Swiches</em>) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/dvpg50_autoexpand_alarm.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/dvpg50_autoexpand_alarm.png" alt="" width="523" height="340" /></a></p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4633</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>vNUMA : WYSIWYG</title>
		<link>http://www.hypervisor.fr/?p=4540</link>
		<comments>http://www.hypervisor.fr/?p=4540#comments</comments>
		<pubDate>Thu, 10 Jan 2013 18:12:40 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[esxtop]]></category>
		<category><![CDATA[NUMA]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[UMA]]></category>
		<category><![CDATA[vNUMA]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4540</guid>
		<description><![CDATA[Dans l&#8217;optique de rattraper un peu le coût CPU de nos petits excès d&#8217;overcommit, nous nous sommes penché sur les gains potentiel du vNUMA &#8220;forcé&#8221; sur des petites VM (2 ou 4 vCPU).

Rappelons que (dans ce contexte) le vNUMA est la capacité de présenter à la VM une topologie NUMA identique à celle de sa VMM. Cette technique [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Dans l&#8217;optique de rattraper un peu le coût CPU de <a href="http://www.hypervisor.fr/?p=4401" target="_blank">nos petits excès d&#8217;overcommit</a>, nous nous sommes penché sur les gains potentiel du vNUMA &#8220;forcé&#8221; sur des petites VM (2 ou 4 vCPU).</p>
<p style="text-align: center;"><a href="https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash4/284810_437328219652885_974183721_n.jpg" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/heinz_wysiwyg.jpg" alt="" width="288" height="366" /></a></p>
<p style="text-align: justify;">Rappelons que (dans ce contexte) le <strong>vNUMA est la capacité de présenter à la VM une topologie <a href="http://www.hypervisor.fr/?p=1801" target="_blank">NUMA</a> identique à celle de sa VMM</strong>. Cette technique permet au guestOS d&#8217;optimiser lui même la répartition process/node pour éviter au maximum les accès à des pages qui ne seraient pas dans le noeud où se trouve le vCPU qui y accède (aka remote access).</p>
<p style="text-align: justify;">L&#8217;idéal serait un <a href="http://frankdenneman.nl/cpu/esx-4-1-numa-scheduling/" target="_blank">des schémas percutant dont Frank Denneman à le secret</a> mais il va falloir vous contenter de cela : <strong>le vNUMA est le <a href="http://en.wikipedia.org/wiki/WYSIWYG" target="_blank">WYSIWYG</a> transposé au NUMA</strong> donc la topologie NUMA que la VM &#8220;voit&#8221; est véritablement celle de sa VMM.</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vNUMA/16vcpu_vnuma_s.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vNUMA/16vcpu_vnuma_s.png" alt="" width="499" height="120" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vNUMA/16vcpu_coreinfo.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vNUMA/16vcpu_coreinfo.png" alt="" width="467" height="137" /></a></p>
<p style="text-align: justify;">Présente depuis ESX 5.0, cette fonctionnalité n&#8217;est active par défaut que pour les VM avec *<strong>strictement</strong>* plus de 8 vCPU (=&gt;9 et non 8+) mais <a href="http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.1.pdf" target="_blank">VMware indique comment l&#8217;activer pour les VM plus petites</a> :</p>
<blockquote>
<p style="text-align: justify;">By default, vNUMA is enabled only for virtual machines with more than eight vCPUs. This feature can be enabled for smaller virtual machines, however, by adding to the .vmx file the line: <strong>numa.vcpu.maxPerVirtualNode</strong> = X (where X is the number of vCPUs per vNUMA node).</p>
</blockquote>
<p style="text-align: justify;">Ce qui est à moitié vrai car avec ce paramètre vous ne forcez que la répartition des vCPU par vNode (topologie présentée à la VM) et non celle des vCPU par pNode (topologie réelle). Heureusement VMware documente plutôt généreusement (en général) et nous avons trouvé <a href="http://pubs.vmware.com/vsphere-51/topic/com.vmware.vsphere.resmgmt.doc/GUID-89C52376-60C3-452A-A269-9F4F7FE489C6.html" target="_blank">l&#8217;autre moitié de la réponse dans le Documentation Center</a> :</p>
<blockquote>
<p style="text-align: justify;"><strong>numa.vcpu.maxPerMachineNode</strong> Maximum number of virtual CPUs that belong to the same virtual machine that can be scheduled on a NUMA node at the same time. <strong><span style="color: #ff0000;">Use this attribute to ensure maximum bandwidth, by forcing different NUMA clients on different NUMA nodes</span></strong>.</p>
</blockquote>
<p style="text-align: justify;">Résultat, même avec 2 vCPU on peut faire du beau vNUMA (avec un beau oneliner) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vNUMA/2vcpu_2nodes.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vNUMA/2vcpu_2nodes.png" alt="" width="549" height="381" /></a></p>
<pre class="brush: powershell; title: ; notranslate">Get-VM|?{$_.NumCpu -eq 2}|Get-View|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=@((New-Object VMware.Vim.optionvalue -Property @{Key=&quot;numa.vcpu.maxPerVirtualNode&quot;;Value=&quot;1&quot;});(New-Object VMware.Vim.optionvalue -Property @{Key=&quot;numa.vcpu.maxPerMachineNode&quot;;Value=&quot;1&quot;});(New-Object VMware.Vim.optionvalue -Property @{Key=&quot;cpuid.coresPerSocket&quot;;Value=&quot;1&quot;}))}))}</pre>
<p style="text-align: justify;">Et on a même fait des bench (sur un Intel E7520) avec <a href="http://www.sisoftware.co.uk/?d=qa&amp;f=ben_mem" target="_blank">Sandra 2013</a> pour voir s&#8217;il pouvait y avoir un gain (vNUMA en bleu, vUMA en rouge) !</p>
<p style="text-align: justify;"><img class="aligncenter" title="Cache_Bandwidth" src="http://files.hypervisor.fr/img/vNUMA/vNUMA_Cache_Bandwidth.jpg" alt="" width="419" height="389" /></p>
<p style="text-align: justify;"><img class="aligncenter" title="Memory_Bandwidth" src="http://files.hypervisor.fr/img/vNUMA/vNUMA_Memory_Bandwidth.jpg" alt="" width="419" height="389" /></p>
<p style="text-align: justify;"><img class="aligncenter" title="Memory_Latency" src="http://files.hypervisor.fr/img/vNUMA/vNUMA_Memory_Latency.jpg" alt="" width="419" height="378" /></p>
<p style="text-align: justify;">Le gain est mince (<a href="http://labs.vmware.com/download/142/" target="_blank">contrairement aux grosses VM pour faire du HPC</a>) mais sur un host bien overcommité cela peut avoir un véritable intérêt (avant/après) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vNUMA/small_vm_vnuma_off.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vNUMA/small_vm_vnuma_off.png" alt="" width="420" height="305" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/vNUMA/small_vm_vnuma_on.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/vNUMA/small_vm_vnuma_on.png" alt="" width="420" height="305" /></a></p>
<p style="text-align: justify;">Nous avons eu la chance d&#8217;avoir l&#8217;avis de <a href="http://www.linkedin.com/pub/seongbeom-kim/4/330/926" target="_blank">Seongbeom Kim (Senior Member of Technical Staff chez VMware)</a> sur l’intérêt d&#8217;une telle manipulation et sur la raison pour laquelle, <a href="http://files.hypervisor.fr/img/vNUMA/hyper-v3_vnuma.png" target="_blank">contrairement à Hyper-V</a>, vNUMA n&#8217;est pas actif par défaut sur les petites VM :</p>
<blockquote>
<p style="text-align: justify;">Based on your two charts, enabling vNUMA looks good by not migrating memory across NUMA nodes, resulting in 100% local memory.</p>
<p style="text-align: justify;">One consideration should be whether your workload benefits from cache sharing or not. By forcing vcpus scheduled on two or more NUMA nodes, workload with heavy cache sharing may suffer performance loss even with better memory latency.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">For a <strong>new VM*</strong>, it may pay off to try vNUMA for your VM if #vcpus is greater than the number of cores per NUMA node. <strong>The benefit heavily depends on the workload behavior</strong>.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">[...] modern processors have enough number of cores to place 2 &#8211; 4 vcpu VM on a NUMA node where vNUMA has no benefit. Even 8 cores per NUMA node is not rare.</p>
</blockquote>
<p style="text-align: justify;">Par &#8220;nouvelle VM&#8221;, Seongbeom sous entend qu&#8217;il y a un risque que le changement de topologie NUMA ait un impact sur le GuestOS et/ou l&#8217;application hébergée dans la VM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4540</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>I like to move it</title>
		<link>http://www.hypervisor.fr/?p=4533</link>
		<comments>http://www.hypervisor.fr/?p=4533#comments</comments>
		<pubDate>Fri, 28 Dec 2012 13:11:17 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[UUID]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4533</guid>
		<description><![CDATA[Suite à une migration ESXi 4.1 &#62; 5.1 d&#8217;un host standalone, nous nous sommes retrouvé devant une centaine de messages de changement d&#8217;UUID :

Une seule réponse possible : Go PowerCLI !
get-vm&#124;get-vmquestion&#124;set-vmquestion -option &#34;i moved it&#34; -confirm:$false

]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Suite à une migration ESXi 4.1 &gt; 5.1 d&#8217;un host standalone, nous nous sommes retrouvé devant une centaine de messages de <a href="http://kb.vmware.com/kb/1541" target="_blank">changement d&#8217;UUID</a> :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/vm_move_msg.png" alt="" width="357" height="192" /></p>
<p>Une seule réponse possible : Go PowerCLI !</p>
<pre class="brush: powershell; title: ; notranslate">get-vm|get-vmquestion|set-vmquestion -option &quot;i moved it&quot; -confirm:$false</pre>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/king-julien-whoareyou.jpg" alt="" width="318" height="287" /></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4533</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FC to iSCSI failover : MRU ranking</title>
		<link>http://www.hypervisor.fr/?p=4389</link>
		<comments>http://www.hypervisor.fr/?p=4389#comments</comments>
		<pubDate>Mon, 12 Nov 2012 22:27:37 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[ALUA]]></category>
		<category><![CDATA[NMP]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[PSA]]></category>
		<category><![CDATA[PSP]]></category>
		<category><![CDATA[SATP]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[VMW_PSP_MRU]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4389</guid>
		<description><![CDATA[Au détour de l’excellent Storage Implementation in vSphere 5.0 de Mostafa &#8220;VCDX #2&#8243; Khalil,  nous avons découvert le Path Ranking. Détaillé dans une kb vmware (et dans un post de Cormac Hogan), le path raking permet de pondérer un ou plusieurs chemins lorsque le plugin VMW_PSP_MRU est utilisé.

In ESXi 5.0, VMW_PSP_MRU has path ranking capabilities that allows you [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Au détour de l’excellent <a href="http://www.amazon.com/dp/0321799933" target="_blank">Storage Implementation in vSphere 5.0</a> de <a href="https://twitter.com/MostafaVMW" target="_blank">Mostafa &#8220;VCDX #2&#8243; Khalil</a>,  nous avons découvert le <strong>Path Ranking</strong>. <a href="http://kb.vmware.com/kb/2003468" target="_blank">Détaillé dans une kb vmware</a> (et dans <a href="http://blogs.vmware.com/vsphere/2012/04/prioritizing-io-paths-in-the-event-of-a-failover.html" target="_blank">un post de Cormac Hogan</a>), le path raking permet de pondérer un ou plusieurs chemins lorsque le plugin VMW_PSP_MRU est utilisé.</p>
<blockquote>
<p style="text-align: justify;">In ESXi 5.0, VMW_PSP_MRU has path ranking capabilities that allows you to assign ranks to individual paths. VMW_PSP_MRU goes through the path group states in the following order: Active, Active_UO and Standby, and <strong>picks a path that has the highest rank for I/O</strong>.</p>
</blockquote>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/05fig08_alt.jpg" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/05fig08_alt.jpg" alt="" width="418" height="250" /></a></p>
<p style="text-align: justify;">Evidemment, le scénario dans le quel le path ranking nous intéresse le plus est le fameux <a href="http://www.hypervisor.fr/?p=3164" target="_blank">FC to iSCSI failover</a> dans le quel nous étions particulièrement gêné par le fait que les chemins en FC n&#8217;étaient pas prioritaires sur les chemins iSCSI et pouvant mener à des situations où un chemin iSCSI serait utilisé alors qu&#8217;un chemin FC serait disponible :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/pathranking/fc-iscsi-fixed.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/pathranking/fc-iscsi-fixed.png" alt="" width="441" height="322" /></a></p>
<p style="text-align: justify;">On passe le PSP du datastore en MRU et un coup de PowerCLI pour monter le ranking des chemins FC :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/pathranking/fc-iscsi-get-esxcli.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/pathranking/fc-iscsi-get-esxcli.png" alt="" width="442" height="234" /></a></p>
<pre class="brush: powershell; title: ; notranslate">(Get-VMHost esx.vmware.com|Get-EsxCli).storage.nmp.path.list(&quot;naa.0123456789&quot;)|sort RuntimeName|select RuntimeName, @{n=&quot;rank&quot;;e={(Get-VMHost esx.vmware.com|Get-EsxCli).storage.nmp.psp.generic.pathconfig.get($_.RuntimeName)}}|ft -AutoSize</pre>
<pre class="brush: powershell; title: ; notranslate">(Get-VMHost vmvisor01.vmwa.re|Get-EsxCli).storage.nmp.psp.generic.pathconfig.set(&quot;rank=1&quot;,&quot;vmhba0:C0:T0:L0&quot;)</pre>
<p style="text-align: left;">Le (bon) résultat est immédiat :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/pathranking/fc-iscsi-mru-ranked.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/pathranking/fc-iscsi-mru-ranked.png" alt="" width="441" height="322" /></a></p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4389</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[PSH] HA AutoSlotSize &#8211; MAJ</title>
		<link>http://www.hypervisor.fr/?p=4283</link>
		<comments>http://www.hypervisor.fr/?p=4283#comments</comments>
		<pubDate>Sun, 21 Oct 2012 22:37:14 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[slot size]]></category>
		<category><![CDATA[webclient]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4283</guid>
		<description><![CDATA[MAJ 21.02.2013 : Ajout de filtres pour les hosts vide afin d’éviter les divisions par 0.
MAJ 06.02.2013 : Debug des scripts.
MAJ 22.11.2012 : Nous avons oublié de préciser que pour que le script fonctionne correctement, le &#8220;statistic level&#8221; pour l&#8217;intervale de 5 minutes doit être à 2 minimum :

MAJ 23.10.2012 : Ajout d&#8217;un filtre dans les scripts [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 21.02.2013</span> : Ajout de filtres pour les hosts vide afin d’éviter les divisions par 0.</em></p>
<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 06.02.2013</span> : Debug des scripts.</em></p>
<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 22.11.2012</span> : Nous avons oublié de préciser que pour que le script fonctionne correctement, le &#8220;statistic level&#8221; pour l&#8217;intervale de 5 minutes doit être à <strong>2 minimum</strong> :</em></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/AutoSlotSize/ha_stats.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_stats.png" alt="" width="238" height="231" /></a></p>
<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 23.10.2012</span> : Ajout d&#8217;un filtre dans les scripts pour ne modifier le(s) cluster que si nécéssaire.</em></p>
<p style="text-align: justify;">Suite au post de Frank &#8220;distributed&#8221; Denneman traitant du sujet délicat des HA slot size &#8220;<a href="http://frankdenneman.nl/vmware/ha-admission-control-is-not-a-capacity-management-tool/" target="_blank">HA admission control is not a capacity management tool</a>&#8220;, nous avons dépoussiéré une vieille idée de script de <strong>configuration automatique des &#8220;slot size&#8221;</strong> (mémoire et cpu) d&#8217;un cluster HA pour en faire un bon petit oneliner. L&#8217;idée est <strong>forcer le &#8220;slot size&#8221; à une valeur reflétant une vm moyenne du cluster</strong> afin de savoir approximativement la &#8220;<em>place</em>&#8221; restante dans le cluster et surtout pouvoir vraiment tirer parti de l&#8217;alarme &#8220;<a href="http://kb.vmware.com/kb/1001596">insufficient resources to satisfy HA failover level</a>&#8220;</p>
<p style="text-align: justify;">Nous avons fais nos tests sur un cluster de 6 ESXi 4.1 (4&#215;4 cores 2.3Ghz &amp; 64Go de RAM) contenant <strong>environ 150 VM sans réservations</strong>. Par défaut, voici ce qu&#8217;HA remonte comme information dans le vCenter :</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_panel_default.png" alt="" width="404" height="180" /></p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_runtime_default.png" alt="" width="299" height="319" /></p>
<p style="text-align: justify;">Ces informations sont totalement erronés étant donné que le cluster est presque plein (en tenant compte du N-1 pour HA) mais c&#8217;est le comportement attendu d&#8217;HA lorsque les VM n&#8217;ont pas de réservations (l&#8217;overhead est pris en compte). On notera que le nombre de vcpu correspond à la plus grosse vm.</p>
<p style="text-align: justify;">Voici ce qu&#8217;HA remonte après avoir passé notre script :</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_panel_auto.png" alt="" width="404" height="180" /></p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_runtime_auto.png" alt="" width="299" height="319" /></p>
<p style="text-align: justify;">On est nettement plus proche de la vérité. Le calcul pour <strong>le cpu est la moyenne d&#8217;utilisation journalière par vm démarrée, idem pour les vcpu</strong> mais pour la ram nous avons du faire un choix pas trop optimiste (active memory) ni trop optimiste (consumed memory). Nous avons donc choisi de prendre <strong>la valeur médiane entre active et consumed</strong><strong> (moyene journalière)</strong>. Voici le résultat sur une journée de stat sur notre cluster de test :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/AutoSlotSize/memory_usage_summary.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/memory_usage_summary.png" alt="" width="516" height="356" /></a></p>
<p style="text-align: justify;">Idéalement, ce script est donc à lancée une fois par jour. Voici la version pour vSphere 4.x (filtré par cluster où HA est activé) :</p>
<pre class="brush: powershell; title: ; notranslate">foreach ($cluster in (get-view -viewtype ClusterComputeResource -property Host,ConfigurationEx|?{$_.ConfigurationEx.DasConfig.Enabled})) {,($cluster.host|%{get-view $_ -property runtime,vm}|?{$_.Runtime.ConnectionState -match &quot;^connected$&quot;}|?{($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})}|select @{n=&quot;mem&quot;;e={(($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;active$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}) + ($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;consumed$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}))/2}}, @{n=&quot;cpu&quot;;e={($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;cpu&quot;}|?{$_.nameinfo.key -match &quot;usagemhz&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count})}}, @{n=&quot;vcpu&quot;;e={(($_.vm|%{get-view $_ -property Runtime,Config}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|%{$_.Config.Hardware.NumCpu}|measure -average).average}}|measure -average -property mem,cpu,vcpu|%{[math]::round($_.average,0)})|%{if (($_|measure -Sum).sum -ne ($cluster.ConfigurationEx.DasConfig.Option|?{$_.key -match &quot;das.slotCpuInMhz|das.slotMemInMB&quot;}|measure -Sum -Property value).sum) {$cluster.ReconfigureComputeResource((New-Object VMware.Vim.ClusterConfigSpecEx -property @{dasConfig=(New-Object VMware.Vim.ClusterDasConfigInfo -property @{option=@((New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmMemoryMinMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmCpuMinMHz&quot;;value=$_[1].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotMemInMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotCpuInMhz&quot;;value=$_[1].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.SlotNumVCpus&quot;;value=$_[2].tostring()}))})}),$true)}}}</pre>
<p style="text-align: justify;">Pour vSphere 5.0, <a href="http://pubs.vmware.com/vsphere-51/topic/com.vmware.wssdk.apiref.doc/vim.cluster.DasFailoverLevelAdvancedRuntimeInfo.SlotInfo.html" target="_blank">le nombre de vcpu ne rentre plus en comptre pour le calcul du slot size</a>, nous avons donc adapté le script en conséquence :</p>
<pre class="brush: powershell; title: ; notranslate">foreach ($cluster in (get-view -viewtype ClusterComputeResource -property Host,ConfigurationEx|?{$_.ConfigurationEx.DasConfig.Enabled})) {,($cluster.host|%{get-view $_ -property runtime,vm}|?{$_.Runtime.ConnectionState -match &quot;^connected$&quot;}|?{($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})}|select @{n=&quot;mem&quot;;e={(($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;active$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}) + ($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;consumed$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}))/2}}, @{n=&quot;cpu&quot;;e={($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;cpu&quot;}|?{$_.nameinfo.key -match &quot;usagemhz&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count})}}|measure -average -property mem,cpu|%{[math]::round($_.average,0)})|%{if (($_|measure -Sum).sum -ne ($cluster.ConfigurationEx.DasConfig.Option|?{$_.key -match &quot;das.slotCpuInMhz|das.slotMemInMB&quot;}|measure -Sum -Property value).sum) {$cluster.ReconfigureComputeResource((New-Object VMware.Vim.ClusterConfigSpecEx -property @{dasConfig=(New-Object VMware.Vim.ClusterDasConfigInfo -property @{option=@((New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmMemoryMinMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.vmCpuMinMHz&quot;;value=$_[1].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotMemInMB&quot;;value=$_[0].tostring()});(New-Object VMware.Vim.OptionValue -property @{key=&quot;das.slotCpuInMhz&quot;;value=$_[1].tostring()}))})}),$true)}}}</pre>
<blockquote><p>As of vSphere API 5.0, the number of vcpus is no longer used for slot calculations</p></blockquote>
<p>Pour vSphere 5.1, le slot size est maintenant configurable dans via la GUI du web client (et donc de nouvelles propriétés sont disponibles) mais on va le faire en PowerCLI quand même <img src='http://www.hypervisor.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: powershell; title: ; notranslate">foreach ($cluster in (get-view -viewtype ClusterComputeResource -property Host,ConfigurationEx|?{$_.ConfigurationEx.DasConfig.Enabled})) {,($cluster.host|%{get-view $_ -property runtime,vm}|?{$_.Runtime.ConnectionState -match &quot;^connected$&quot;}|?{($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})}|select @{n=&quot;mem&quot;;e={(($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;active$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}) + ($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;mem&quot;}|?{$_.nameinfo.key -match &quot;consumed$&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count/1kb}))/2}}, @{n=&quot;cpu&quot;;e={($_|%{((get-view (Get-View ServiceInstance).content.PerfManager).QueryPerf((New-Object VMware.Vim.PerfQuerySpec -property @{entity = $_.moref;format = &quot;normal&quot;;IntervalId = &quot;300&quot;;MetricId = (New-Object VMware.Vim.PerfMetricId -property @{instance = &quot;&quot;;counterId = (((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match &quot;cpu&quot;}|?{$_.nameinfo.key -match &quot;usagemhz&quot;}|?{$_.RollupType -match &quot;average&quot;}).key)})}))|%{$_.value}|%{$_.value}|measure -Average).average/(($_.vm|%{get-view $_ -property Runtime}|?{$_.Runtime.PowerState -eq &quot;poweredon&quot;})|measure).count})}}|measure -average -property mem,cpu|%{[math]::round($_.average,0)})|%{if (($_|measure -Sum).sum -ne (@($cluster.ConfigurationEx.DasConfig.AdmissionControlPolicy.SlotPolicy.Memory, $cluster.ConfigurationEx.DasConfig.AdmissionControlPolicy.SlotPolicy.Cpu)|measure -Sum).sum) {$cluster.ReconfigureComputeResource((New-Object VMware.Vim.ClusterConfigSpecEx -property @{dasConfig=((New-Object VMware.Vim.ClusterDasConfigInfo -property @{admissionControlPolicy=((New-Object VMware.Vim.ClusterFailoverLevelAdmissionControlPolicy -property @{slotPolicy=(New-Object VMware.Vim.ClusterFixedSizeSlotPolicy -property @{cpu = $_[1];memory = $_[0]});FailoverLevel = $cluster.ConfigurationEx.DasConfig.AdmissionControlPolicy.FailoverLevel}))}))}),$true)}}}</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/AutoSlotSize/ha_slotsize_vsp51.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/AutoSlotSize/ha_slotsize_vsp51.png" alt="" width="485" height="328" /></a></p>
<p style="text-align: justify;">Ceux qui ont l&#8217;oeil auront certainement remarqué l&#8217;usage d&#8217;une &#8220;multidimensional array&#8221; (<a href="http://stackoverflow.com/questions/9669683/powershell-implementation-to-pipe-array-into-command" target="_blank">aka nested array</a>) dans nos oneliner pour faire passer des tableaux au travers d&#8217;un pipe sans en changer le type.</p>
<p style="text-align: justify;">Pour plus d&#8217;information sur HA, nous vous conseillons vivement la lecture de la série <a href="http://www.hypervisor.fr/?page_id=2748" target="_blank">&#8220;Clustering Deepdive&#8221; de Duncan et Frank</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4283</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
