<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">PFE Virtualization Blog</title><subtitle type="html">Virtualization Premier Field Engineers</subtitle><id>http://blogs.technet.com/b/virtualpfe/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/b/virtualpfe/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2011-08-02T23:41:00Z</updated><entry><title>Windows Server 2012 Failover Clustering Dynamic Quorum</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2012/10/25/windows-server-2012-failover-clustering-dynamic-quorum.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2012/10/25/windows-server-2012-failover-clustering-dynamic-quorum.aspx</id><published>2012-10-25T13:17:24Z</published><updated>2012-10-25T13:17:24Z</updated><content type="html">&lt;p&gt;Hello community,&lt;/p&gt;  &lt;p&gt;Today I want to point you to a really useful blog of one of our community contributors - Aeval Shah – who has written an interesting blog about the new WS 2012 Failover Clustering Dynamic Quorum. Please go here&amp;#160; ( &lt;a title="http://blogs.technet.com/b/aevalshah/archive/2012/08/21/windows-server-2012-failover-clustering-dynamic-quorum.aspx" href="http://blogs.technet.com/b/aevalshah/archive/2012/08/21/windows-server-2012-failover-clustering-dynamic-quorum.aspx"&gt;http://blogs.technet.com/b/aevalshah/archive/2012/08/21/windows-server-2012-failover-clustering-dynamic-quorum.aspx&lt;/a&gt; ) to read his blog. &lt;/p&gt;  &lt;p&gt;Many thanks Aeval!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3528636" width="1" height="1"&gt;</content><author><name>Cristian Edwards</name><uri>http://blogs.technet.com/cedward/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Hyper-V and BIOS power plans (c-states)</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2012/09/14/hyper-v-and-bios-power-plans-c-states.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2012/09/14/hyper-v-and-bios-power-plans-c-states.aspx</id><published>2012-09-14T08:59:37Z</published><updated>2012-09-14T08:59:37Z</updated><content type="html">&lt;p&gt;“Scotty, I need more power!”&lt;/p&gt;  &lt;p&gt;Growing up watching Science Fiction programs, one of my favorite characters was Scotty from Star Trek. He always came through in a tough situation with an answer that would get more performance or power from the Enterprise when they needed it the most.&lt;/p&gt;  &lt;p&gt;On that note, let’s talk about some power settings on your Hyper-V hosts. Microsoft works with the hardware vendors to try to have the best default settings for servers out of the box – balancing power loads and performance. At customers sites though, we have seen instances where tweaking the power settings is needed to provide the best performance for your Hyper-V Hosts.&lt;/p&gt;  &lt;p&gt;How long does it take for you to do a live migration between hosts? &lt;/p&gt;  &lt;p&gt;I ask that of all the customers I talk to that are using Hyper-V. If your answer is more than 30 seconds, then you should probably look at the settings mentioned below. This timeframe also depends on the load of the host, the load of the VM, the Live Migration network, and the amount of memory the VM is using. But, if you have a VM with 4GB of RAM that is not doing anything (a completely new VM for example) the cluster is not under a heavy load, and it takes longer than 30 seconds to Live Migrate, then this blog post is for you. I have been to some customers where a Live Migration took over 3 minutes – and one of them was even closer to 10 minutes!&lt;/p&gt;  &lt;p&gt;In the BIOS of newer servers, there are Power Plan options. We have seen different setting depending on the make and model of the server. Below are the general settings we recommend changing.&lt;/p&gt;  &lt;p&gt;On HP servers, we have found the following settings are sometimes needed:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;HP Power Plan:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;Maximum Performance&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;HP Power Regulator:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;HP Static High Performance Mode&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;Minimum Processor Idle Power Core State:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;C6 State&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;Minimum Processor Idle Power Package State:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;Package C3 State&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/2235.clip_5F00_image002_5F00_002D2552.jpg"&gt;&lt;img title="clip_image002" style="margin: 0px; display: inline; background-image: none;" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/7026.clip_5F00_image002_5F00_thumb_5F00_3073FA08.jpg" width="170" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On Dell servers, we have found the following settings are sometimes needed:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;Power Setting:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;High Performance&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;C1E:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;Disabled&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="399"&gt;         &lt;p&gt;C State:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="399"&gt;         &lt;p&gt;Disabled&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/7522.clip_5F00_image004_5F00_281024B1.jpg"&gt;&lt;img title="clip_image004" style="display: inline; background-image: none;" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/4885.clip_5F00_image004_5F00_thumb_5F00_6D487BDA.jpg" width="244" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I hope this helps your Live Migrations move at “Warp speed”!&lt;/p&gt;  &lt;p&gt;&lt;a name="_MailAutoSig"&gt;&lt;b&gt;David Hail&amp;#160; |&amp;#160; Premier Field Engineer – Platforms        &lt;br /&gt;Microsoft Services&amp;#160; |&amp;#160; US, Central Region, Heartland        &lt;br /&gt;&lt;/b&gt;&lt;/a&gt;&lt;a href="mailto:dhail@microsoft.com"&gt;dhail@microsoft.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3520087" width="1" height="1"&gt;</content><author><name>Cristian Edwards</name><uri>http://blogs.technet.com/cedward/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Hyper-V Cluster Shared Volume Monitoring</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2012/02/20/hyper-v-cluster-shared-volume-monitoring.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2012/02/20/hyper-v-cluster-shared-volume-monitoring.aspx</id><published>2012-02-20T23:55:00Z</published><updated>2012-02-20T23:55:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;My name&amp;rsquo;s Thomas Roettinger and I am a private cloud and virtualization Premier Field Engineer over Microsoft Germany. Today I am writing about the availability of Cluster Shared Volume monitoring in System Center Operations Manager.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The new monitoring rule set is named &amp;ldquo;Windows Server Cluster Shared Volume Monitoring&amp;rdquo; and the version number is 6.0.6057.0.&lt;/p&gt;
&lt;p&gt;This extension was released on 9/30/2011 so it is fairly new.&amp;nbsp; The previous Cluster Management Pack did not include a rule for CSV monitoring.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A lot of customers implemented a workaround with a PowerShell script that was released by Simon Perriman and NOW you can use a built in management function.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When opening the Operations Manager Console you should search the online catalog within the Import Management Packs dialog.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/1157.Image1.JPG"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/1157.Image1.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Browse the Core OS folder and select Cluster Shared Volume Monitoring. &amp;nbsp;Keep in mind that this new MP has dependencies to all Windows Server Library running latest version 6.0.6957.0&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/2783.Image2.JPG"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/2783.Image2.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;As soon as the import was successfully done you can switch to Monitoring at the Operation Manager Console.&amp;nbsp; While expanding Microsoft Windows Server you should see a new entry in &amp;ldquo;Health Monitoring&amp;rdquo; for Cluster Shared Volume Health.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Also at Performance you should see Cluster Share Volume Disk Capacity (Free Space) .&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/3771.Image3.JPG"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02/3771.Image3.JPG" width="411" height="353" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;As always I hope you find this Blog entry useful.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3482121" width="1" height="1"&gt;</content><author><name>HollisWms</name><uri>http://blogs.technet.com/holliswms_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="Hyper-V" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Hyper_2D00_V/" /><category term="CSV" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/CSV/" /><category term="Monitoring" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Monitoring/" /></entry><entry><title>Hyper-V Dynamic Memory and Host Memory Reserve setting</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2011/08/29/hyper-v-dynamic-memory-and-host-memory-reserve-setting.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2011/08/29/hyper-v-dynamic-memory-and-host-memory-reserve-setting.aspx</id><published>2011-08-29T08:31:00Z</published><updated>2011-08-29T08:31:00Z</updated><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;My name is Nick Eales and I am a Premier Field Engineer based in Sydney, Australia. I specialize in Hyper-V and Failover Clustering.&lt;/p&gt;  &lt;p&gt;Today I am writing about the following registry setting for Hyper-V’s Dynamic memory which was introduced with Windows Server 2008 R2 Service Pack 1&lt;/p&gt;  &lt;p&gt;Registry Key: &lt;b&gt;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Value Name: &lt;b&gt;MemoryReserve&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Value Type: &lt;b&gt;REG_DWORD&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;(Value is set in decimal, and is in megabytes. It needs a reboot to take effect)&lt;/p&gt;  &lt;p&gt;As Hyper-V can now dynamically allocate memory to virtual machines on demand, the host needs to ensure that some memory is kept for itself. This registry setting enables the amount of memory reserved for the host OS to be manually set for scenarios where the default is not appropriate.&lt;/p&gt;  &lt;p&gt;There are many comments, blog posts, and articles around that suggest setting this value. Some state that the default is 32MB (very wrong). Recommended values range from 1024 to 2048.&lt;/p&gt;  &lt;p&gt;I read a lot of these and as they all recommended that this value be set and I didn’t want to run into any problems on our team’s Hyper-V server, I had a go and set this value to 1024 (1GB).&lt;/p&gt;  &lt;p&gt;A month later, I had a look at our Hyper-V server and found out it had 11MB of memory available. While VM’s were running relatively normally, the host OS was running extremely poorly, which was making management of the host very difficult. Hyper-V had allocated so much memory to the VMs, that it had starved the host (no memory for disk cache, many services were crippled, etc.).&lt;/p&gt;  &lt;p&gt;I decided to do some more research on this value to find out why a non-default value is needed, and what the default value is.&lt;/p&gt;  &lt;p&gt;In summary, for Hyper-V in Windows Server 2008 R2 SP1 the default value for this is calculated based on the following formula:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;384MB + 30MB per 1GB of physical memory on the host machine. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;(For a machine without &lt;b&gt;SLAT&lt;/b&gt; (Second Level Address Translation) enabled CPUs, it is slightly higher)&lt;/p&gt;  &lt;p&gt;So for my &lt;b&gt;SLAT&lt;/b&gt; enabled Hyper-V server with 64GB RAM, this would mean the default value is:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; &lt;em&gt;The above calculation only applies to Windows Server 2008 R2 SP1 / Hyper-V Server 2008 R2 SP1. Later operating systems use a very different calculation and we strongly suggest re-evaluating the need to change this setting from the default (to set it to the default, delete the registry value).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;384 + (30 * 64) = 2304 (MB)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This explains why:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Some sites suggest setting this value – on a machine with less than 32GB of RAM the default value would be too low to allow the machine to be used for other applications.&lt;/li&gt;    &lt;li&gt;Setting the value (as I mistakenly did) to a value significantly less than the default (eg 1024MB on a 64GB machine) might have a negative effect on performance&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So my recommendation is as simple as;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If (as per best practice) you use only Hyper-V on your servers and your drivers, backup, antivirus and other applications do not use a lot of memory, then leave this value at the default (i.e. it should not be present).&lt;/li&gt;    &lt;li&gt;If you run virtual machines at the same time as other applications or services (Outlook / Domain Controller), then calculate the default value for your machine, and add to this a number sufficient for your applications. Please note that by running other services and applications on the host, you will be non-compliant with Microsoft Hyper-V best practices.&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3449774" width="1" height="1"&gt;</content><author><name>Mark Ghazai</name><uri>http://blogs.technet.com/mghazai/ProfileUrlRedirect.ashx</uri></author><category term="Hyper-V" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Hyper_2D00_V/" /><category term="Virtualization" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Virtualization/" /><category term="reserve" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/reserve/" /><category term="memory" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/memory/" /><category term="MemoryReserve" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/MemoryReserve/" /><category term="parent" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/parent/" /></entry><entry><title>Hyper-V VM Partition Alignment</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2011/08/08/hyper-v-virtual-machine-vm-partition-alignment.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2011/08/08/hyper-v-virtual-machine-vm-partition-alignment.aspx</id><published>2011-08-08T17:08:09Z</published><updated>2011-08-08T17:08:09Z</updated><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hello everybody. This is Cristian Edwards Sabathe from Microsoft Spain. Today I am really happy to write my first post on our new World Wide Virtualization PFE blog. Our team has lots of talented PFEs and I am a lucky man to be part of it. I am pretty sure this blog is going to be a good reference for the community and I hope I can contribute with useful content.&lt;/p&gt;  &lt;p&gt;Now let’s talk about a subject that some of you might have heard before. &lt;/p&gt;  &lt;p&gt;One of the configurations we analyze during the Hyper-V Health Checks is the disk partition misalignments within the VMs (Virtual Machines) because this can impact the Hyper-V storage performance. &lt;/p&gt;  &lt;p&gt;We also validate this configuration at host level but this will not be an issue in most cases because partitions created with Windows Server 2008 R2 are aligned by default using the 1,048,576 bytes starting at offset (1024KB). So when installing the Host OS you use the wizard to create the partition you can be sure that is already aligned. Of course, if you create a partition on a new disk from Disk Management console on Windows Server 2008 R2 it will be aligned too.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; &lt;i&gt;The intention of this post is not to explain what the partition misalignment (as it’s already been well explained on the following articles) but I am just adding information to cover this topic when Hyper-V is part of the equation.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk Partition Alignment Best Practices for SQL Server&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd758814(v=sql.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd758814(v=sql.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk Partition Alignment (Sector Alignment) for SQL Server: Part 1: Slide Deck&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jimmymay/archive/2008/10/14/disk-partition-alignment-for-sql-server-slide-deck.aspx"&gt;http://blogs.msdn.com/b/jimmymay/archive/2008/10/14/disk-partition-alignment-for-sql-server-slide-deck.aspx&lt;/a&gt; &lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk Partition Alignment (Sector Alignment) for SQL Server: Part 4: Essentials (Cheat Sheet)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jimmymay/archive/2008/12/04/disk-partition-alignment-sector-alignment-for-sql-server-part-4-essentials-cheat-sheet.aspx"&gt;http://blogs.msdn.com/b/jimmymay/archive/2008/12/04/disk-partition-alignment-sector-alignment-for-sql-server-part-4-essentials-cheat-sheet.aspx&lt;/a&gt; &lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk Partition Alignment (Sector Alignment): Make the Case: Save Hundreds of Thousands of Dollars&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jimmymay/archive/2009/05/08/disk-partition-alignment-sector-alignment-make-the-case-with-this-template.aspx"&gt;http://blogs.msdn.com/b/jimmymay/archive/2009/05/08/disk-partition-alignment-sector-alignment-make-the-case-with-this-template.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Assuming that the partition where you place your VHDs is aligned we need to go one step deeper and validate that the NTFS partition inside the VHD that will be used by the Guest operating system is also aligned. &lt;/p&gt;  &lt;p&gt;If the guest operating system is Windows Vista, Windows 7, Windows Server 2008 or Windows Server 2008 R2 and the partitions were created using one of these operating systems you don’t have to worry because they will be aligned.&lt;/p&gt;  &lt;p&gt;Unfortunately, partitions created with Windows Server 2003 and Windows XP will have the default starting offset 32,256 bytes, (31.5 KB) and will be misaligned. &lt;/p&gt;  &lt;p&gt;The picture below has 5 rows and assumes that your starting offset is set at 32,768 bytes. I decided to use the same pattern that is in the above &lt;a href="http://msdn.microsoft.com/en-us/library/dd758814(v=sql.100).aspx"&gt;MSDN articles&lt;/a&gt; to be consistent with the SQL team example.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/4657.clip_5F00_image002_5F00_44AC50F8.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/6305.clip_5F00_image002_5F00_thumb_5F00_4AF32786.jpg" width="568" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first black row represents a stripped volume from the SAN that is using 64k block allocation unit size. This means that data will be read and write on pieces of 64K.&lt;/p&gt;  &lt;p&gt;The second grey row represents the number of physical sectors contained on each SAN block allocation unit size. &lt;/p&gt;  &lt;p&gt;In this case the SAN block size is 64K (65536 bytes). Note that this value has to be provided by your SAN vendor. If you divide 65536 by the physical sector size (512 bytes) you are going to have 128 sectors on each SAN block.&lt;/p&gt;  &lt;p&gt;Starting at the third blue row you can see a NTFS partition with the default cluster size (4K). Now we have 2 different block sizes. The stripped SAN block size and the NTFS block size. We can say that NFTS partition is aligned with the stripped volume because 64K is divisible by 4K and that fits perfect without crossing any block boundary. One SAN block will contain 32 NTFS 4K blocks with the exception of the first block that is shared with the MBR information.&lt;/p&gt;  &lt;p&gt;The fourth orange layer represents a VHD file placed on the NTFS partition and has no block information at all. Fixed VHD file structures are transparent at block size level to improve performance. &lt;/p&gt;  &lt;p&gt;The fifth blue row with 63KB marked in red is a NTFS partition inside the VHD file that has a misaligned starting offset 32,256 bytes, (31.5 KB). This means that data will be written starting at sector 128, which is the last sector of the SAN block. &lt;/p&gt;  &lt;p&gt;So, two SAN blocks will be accessed if the OS inside the VM needs to read or write data on the firsts 8K. This will degrade the performance because it requires two accesses to the SAN disks instead of just using one disk IO within the same SAN block. &lt;/p&gt;  &lt;p&gt;The most common cases for this problem are Windows Server 2003 or Windows XP VMs where the partitions were created using the default method instead of using Diskpart.exe to define an aligned starting offset. &lt;/p&gt;  &lt;p&gt;If you perform a P2V (Physical to Virtual) of a Window Server 2003 machine and it has a misaligned partition you also going to bring the same issue to your VM.&lt;/p&gt;  &lt;p&gt;The last blue row with 64KB marked in green is a NTFS partition inside the VHD file that has an aligned partition. Any IO inside VMs will use only the necessary IOs at SAN level because the block boundaries are aligned.&lt;/p&gt;  &lt;h4&gt;How can you detect it?&lt;/h4&gt;  &lt;p&gt;You can use the following command to list your partitions starting offset inside your VMs and make an easy operation. Divide the StartingOffset value by the block size value. If the returned value is an integer without decimals your partition is aligned at NTFS level. In the example below this operation (1048576 / 512 = 2048) for the first partition on disk 0 results on 2048, which is an aligned partition. &lt;/p&gt;  &lt;p&gt;Once you are sure that your partition is aligned at NTFS level inside the VM, you should check the same but at Host level. To do that you need to run the same command in your Hyper-V host and divide the StartingOffset by the Stripped allocation unit size provided by your SAN vendor. In the picture above we use an example of 64KB SAN block size, which means we need to divide the starting offset by 65536 bytes. If we assume that partition where the VHDs are placed was created using WS2008 R2, the operation will be (1048576 / 65536 = 16). The resulting value is 16 and this means that the partition where the VHD is placed is also aligned.&lt;/p&gt;  &lt;p&gt;You can find more examples and information in the following link.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk performance may be slower than expected when you use multiple disks in Windows Server 2003, in Windows XP, and in Windows 2000 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/929491"&gt;http://support.microsoft.com/kb/929491&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;i&gt;wmic partition get BlockSize, StartingOffset, Name, Index&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/1462.clip_5F00_image003_5F00_3B4CCC23.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-02-metablogapi/3034.clip_5F00_image003_5F00_thumb_5F00_6CD839B8.png" width="477" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;How can you fix the issue?&lt;/h4&gt;  &lt;p&gt;Unfortunately there isn’t any easy solution for this problem. If your VMs have misaligned partitions you will have to reformat the partitions using the procedure documented in the following KB;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disk performance may be slower than expected when you use multiple disks in Windows Server 2003, in Windows XP, and in Windows 2000&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/929491"&gt;http://support.microsoft.com/kb/929491&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Hope that helps and see you in next posts.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3445759" width="1" height="1"&gt;</content><author><name>Mark Ghazai</name><uri>http://blogs.technet.com/mghazai/ProfileUrlRedirect.ashx</uri></author><category term="Hyper-V" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Hyper_2D00_V/" /><category term="Virtualization" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Virtualization/" /><category term="Storage" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Storage/" /><category term="VM" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/VM/" /><category term="misaligned" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/misaligned/" /><category term="Virtual Machine" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Virtual+Machine/" /><category term="VHD" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/VHD/" /><category term="Partition Alignment" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Partition+Alignment/" /></entry><entry><title>ARP Spoofing Prevention in Hyper-V 2008 R2 SP1</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/virtualpfe/archive/2011/08/02/arp-spoofing-prevention-in-hyper-v-2008-r2-sp1.aspx" /><id>http://blogs.technet.com/b/virtualpfe/archive/2011/08/02/arp-spoofing-prevention-in-hyper-v-2008-r2-sp1.aspx</id><published>2011-08-02T21:41:00Z</published><updated>2011-08-02T21:41:00Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;This article only applies to Windows Server 2008 R2 SP1. Please refer to this site if you want to learn how to implement ARP Spoofing in Windows Server 2012 using Port ACLs&amp;#160; &lt;a title="http://blogs.technet.com/b/wincat/archive/2012/11/18/arp-spoofing-prevention-in-windows-server-2012-hyper-v.aspx" href="http://blogs.technet.com/b/wincat/archive/2012/11/18/arp-spoofing-prevention-in-windows-server-2012-hyper-v.aspx"&gt;http://blogs.technet.com/b/wincat/archive/2012/11/18/arp-spoofing-prevention-in-windows-server-2012-hyper-v.aspx&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;My name’s Thomas Roettinger and I am a private cloud and virtualization Premier Field Engineer over Microsoft Germany. I’m proud to be submitting my first blog post in our brand new PFE Virtualization Blog. Today I am blogging about a new network feature that is made available in Hyper-V R2 SP1.&lt;/p&gt;  &lt;p&gt;This feature is called &lt;b&gt;ARP Spoofing Prevention &lt;/b&gt;and is not exposed through Hyper-V or SCVMM 2008 R2 SP1 management consoles.&lt;/p&gt;  &lt;p&gt;Many private cloud hosters are looking for a functionality to make sure that customers can’t compromise a virtual machine by changing the IP Address.&lt;/p&gt;  &lt;p&gt;This also a nice option when you plan to virtualize your workload inside Perimeter Network.&lt;/p&gt;  &lt;p&gt;&lt;span style="text-decoration: underline;"&gt;This is the technical explanation of the ARP Spoofing Prevention functionality:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;ARP spoofing is a man-in-the-middle attack technique that is used to attack an Ethernet local area network (LAN). The attacker associates a MAC (media access control) address with the IP address of another node by sending fake ARP messages to an Ethernet LAN. Therefore, the attacker can capture data frames that are sent to another node (here Virtual Machine attached to the same virtual switch).&lt;/p&gt;  &lt;p&gt;So, what can Hyper-V R2 SP1 do to harden your workload against this attack?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Checks the mapping of a MAC address and respected IP address in a virtual switch &lt;/li&gt;    &lt;li&gt;WMI API to associate a MAC address with an IP address in a virtual switch &lt;/li&gt;    &lt;li&gt;Protect against an ARP for IPv4 response or an NDP for IPv6 response &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Technical Requirements:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server 2008 R2 Service Pack 1 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=20196"&gt;&lt;span style="text-decoration: underline;"&gt;Windows Hyper-V Server 2008 R2 SP1&lt;/span&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s a PowerShell sample script to enable the virtual machine named &amp;quot;TestVM” to only communicate with the IP Address 192.168.0.1&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;     &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$VmName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;TestVM&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_ComputerSystem = (Get-WmiObject -Namespace root\virtualization `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;  -Class Msvm_ComputerSystem -Filter &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;ElementName='$VmName'&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#Retrieve all Msvm_SyntheticEthernetPort's associated with this VM &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#  there will be one per Synthetic NIC&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_SyntheticEthernetPortCollection = `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt; $Msvm_ComputerSystem.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_SyntheticEthernetPort&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#This will get the last object in a collection or if the collection &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#  has one object just that object&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_SyntheticEthernetPort = $Msvm_SyntheticEthernetPortCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#There will only ever be one Msvm_VmLANEndpoint per &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#  Msvm_SyntheticEthernetPort&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_VmLANEndpointCollection = `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt; $Msvm_SyntheticEthernetPort.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_VmLANEndpoint&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_VmLANEndpoint = $Msvm_VmLANEndpointCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#There will only ever be one Msvm_SwitchPort per Msvm_VmLANEndpoint&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_SwitchPortCollection = ` &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt; $Msvm_VmLANEndpoint.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_SwitchPort&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#This will get the last object in a collection or if the collection&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#   has one object just that object&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_SwitchPort = $Msvm_SwitchPortCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;font style="background-color: rgb(255, 255, 0);"&gt;$Msvm_SwitchPort.PreventIPSpoofing=$&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;font style="background-color: rgb(255, 255, 0);"&gt;$Msvm_SwitchPort.AllowedIPv4Addresses= (, &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;192.168.0.1&amp;quot;&lt;/span&gt;)&lt;/font&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_SwitchPort.Put()&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And the following PowerShell sample script allows communication with all IP Address again:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;
    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$VmName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;TestVM&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_ComputerSystem = (Get-WmiObject -Namespace root\virtualization `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;  -Class Msvm_ComputerSystem -Filter &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;ElementName='$VmName'&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#Retrieve all Msvm_SyntheticEthernetPort's associated with this VM &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# there will be one per Synthetic NIC&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_SyntheticEthernetPortCollection = `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt; $Msvm_ComputerSystem.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_SyntheticEthernetPort&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#This will get the last object in a collection or if the collection &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#  has one object just that object&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_SyntheticEthernetPort = $Msvm_SyntheticEthernetPortCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#There will only ever be one Msvm_VmLANEndpoint per Msvm_SyntheticEthernetPort&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_VmLANEndpointCollection = `&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt; $Msvm_SyntheticEthernetPort.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_VmLANEndpoint&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_VmLANEndpoint = $Msvm_VmLANEndpointCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#There will only ever be one Msvm_SwitchPort per Msvm_VmLANEndpoint&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;$Msvm_SwitchPortCollection = $Msvm_VmLANEndpoint.GetRelated(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Msvm_SwitchPort&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#This will get the last object in a collection or if the collection &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#  has one object just that object&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_SwitchPort = $Msvm_SwitchPortCollection | % {$_}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;font style="background-color: rgb(255, 255, 0);"&gt;$Msvm_SwitchPort.PreventIPSpoofing=$&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;font style="background-color: rgb(255, 255, 0);"&gt;$Msvm_SwitchPort.AllowedIPv4Addresses=$&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;$Msvm_SwitchPort.Put()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This sample script is also cluster aware but you must refresh Virtual Machine’s configuration within the Failover Cluster Management Console.&lt;/p&gt;

&lt;p&gt;Please keep in mind that this feature is different from MAC Spoofing that has been available since Windows Server 2008 R2 Hyper-V.&lt;/p&gt;

&lt;p&gt;I hope you find this blog post helpful.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size: xx-small;" size="1"&gt;&lt;span style="color: rgb(255, 0, 0);" color="#ff0000"&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Any software (or sample code) provided in this blog is not supported under any Microsoft standard support program or service. The sample code is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the software and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the software be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the software or documentation, even if Microsoft has been advised of the possibility of such damages. Please test the sample code before implementing in your production environment.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3444822" width="1" height="1"&gt;</content><author><name>Mark Ghazai</name><uri>http://blogs.technet.com/mghazai/ProfileUrlRedirect.ashx</uri></author><category term="ARP" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/ARP/" /><category term="security" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/security/" /><category term="Spoof" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Spoof/" /><category term="Hyper-V" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Hyper_2D00_V/" /><category term="Networking" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Networking/" /><category term="Virtualization" scheme="http://blogs.technet.com/b/virtualpfe/archive/tags/Virtualization/" /></entry></feed>