<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Gareth’s Useful Stuff</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/gareja/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/gareja/feed.xml</link>
    <description>A dumping ground for things I&amp;#039;ve found useful</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:45:50 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>The Home Hyper-V Test Lab – On a Budget (Part 3)</title>
      <link>https://docs.microsoft.com/archive/blogs/gareja/the-home-hyper-v-test-lab-on-a-budget-part-3</link>
      <pubDate>Thu, 05 Sep 2013 21:51:00 GMT</pubDate>
      <dc:creator><![CDATA[Gareth James]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gareja/2013/09/05/the-home-hyper-v-test-lab-on-a-budget-part-3/</guid>
      <description><![CDATA[Let's start with a very quick re-cap:
Part 1 &ndash; Covered the hardware, network configuration...]]></description>
      <content:encoded><![CDATA[<p>Let's start with a very quick re-cap:</p>
<p><a href="http://blogs.technet.com/b/gareja/archive/2013/05/04/the-home-hyper-v-test-lab-on-a-budget-part-1.aspx">Part 1</a> &ndash; Covered the hardware, network configuration and some performance testing.</p>
<p><a href="http://blogs.technet.com/b/gareja/archive/2013/08/24/the-home-hyper-v-test-lab-on-a-budget-part-2.aspx">Part 2</a> &ndash; Covered the storage configuration, cluster configuration and started to talk about the use of differential disks and the CSV block cache.</p>
<p>In Part 3, I'm going to cover the differential disks in much more detail, how they work, why you want to use them in a test lab. I'll also start talking about the automation parts, in this post, focusing on basic VM provisioning.</p>
<p><span style="color: black; font-size: 16pt;"><strong>Differential</strong></span> <span style="color: black; font-size: 16pt;"><strong>Disks </strong></span></p>
<p>&nbsp;</p>
<p>The huge performance gains from the CSV block cache described in Part 2 are seen because of a combination of the CSV cache and the use of Differential Disks. Differential Disks work by having a read only copy of a master disk that multiple VMs are attached to. All differences between those VMs are stored in the 'differential' disk attached to the VMs. It's best explained by the high level process used to set it up.</p>
<ol>
<li>Create a VM (The VHDX can be fixed or dynamic, does not matter, but for a lab dynamic is a good idea)</li>
<li>Install the Operating System (MDT comes in handy here, I've got some cool zero touch role deployment stuff using MDT that integrates with VM templates, but that's for another post)</li>
<li>Patch the Operating System</li>
<li>Sysprep the Operating System</li>
<li>Delete the VM (The VHDX file with the patched, syspreped OS will be retained)</li>
<li>Mark the VHDX file as read only</li>
</ol>
<p>That's the preparation work. Now you can create a VM using the differential disk. Here are the high level steps</p>
<ol>
<li>Create a new differential VHDX linked to the parent disk (created in the previous steps)</li>
<li>Create the VM and attach the disk created in step 1.</li>
</ol>
<p>Done! Boot the VM and it will run through its mini-setup. Then you have a new VM with a patched OS. There are two main advantages to doing this. Firstly, rapid provisioning. When using PowerShell to perform VM creation, you can have a new patched VM in minutes (and most of that time is the machine running mini-setup). Secondly, because most OS disk reads for multiple VMs are coming from the same disk, you see huge performance gains from the CSV block cache.</p>
<p><span style="color: black; font-size: 16pt;"><strong>Differential Disk Limitations </strong></span></p>
<p>&nbsp;</p>
<p>You would normally not use differential disks in Production environments (there are exceptions, such as Citrix PVS), and there are several reasons for this.</p>
<p>Resiliency &ndash; When you have multiple VMs running of the same master VHDX, the risk profile goes up. If the master disk gets corrupted or accidently deleted, then you don't lose one VM, you lose all the VMs linked to that master. Because of this, it is very important to back up the parent VHDX file to some other storage.</p>
<p>Performance &ndash; As all reads are coming from the same disk, that disk will get smashed with read I/O. So you either need to throw very fast disk at it and/or use caching (we're using caching).</p>
<p>Patching Lifecycle &ndash; Once the master has been marked read only, you can't patch it. And no, you can't remove the read only tag, patch it and mark it as read only again. Why? Well, the child disk looks at the parent and knows something changed in the parent since it was originally linked, but it can't know what. From that point it simply assumes the parent disk has become corrupted and the VM based off that disk won't start. While it is possible to correct this by reconnecting to the parent drive (and ignoring the ID mismatch). It's not recommended for stability reasons and it's certainly not recommended as a regular patching strategy. While it's tempting to take these kinds of shortcuts in a lab, just remember this. Stability and reliability are critical in a lab. When you're in your lab, you're learning and testing. If something is not working, you want it to be because of something you've done wrong in the configuration, not because you've done something doggy with patching and caused instability in the system. It can also take many, many hours to track down those kind of faults.</p>
<p>The say a picture is worth a thousand words. So I've included an illustration of the makeup of differential disks.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0005.090613_0451_TheHomeHype1.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0005.090613_5F00_0451_5F00_TheHomeHype1.jpg" alt="" /></p>
<p>When you deploy the first VMs off the parent, the VMs deploy quickly, because at that point in time they are fully patched. But as time rolls on they become more and more out of date. One of the main reasons to do this is rapid provisioning. So after a while you'll want to create a new set of parent disks that are more up to date.</p>
<p>I've got automation to do this, but that will be the content of another post. In this post I'll cover off the automation for VM provisioning. This first set of automation will be basic and will cover off provisioning with Hyper-V only. In the next post I'll cover off more advanced provisioning using System Centre 2012 SP1 &ndash; Virtual Machine Manager.</p>
<p>The key to automation in Windows and System Centre is PowerShell. If you work in IT System Administration you owe it to yourself to know PowerShell and know it well. If you're not sure where to get started with PowerShell, some good places are <a href="http://technet.microsoft.com/en-us/library/ee177003.aspx">here</a>, <a href="http://windowsitpro.com/powershell/getting-started-powershell">here</a> and <a href="http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=3286&amp;m=3276&amp;ct=17845">here</a>. The last link is to a Virtual Academy course on PowerShell, and it's an excellent way to get started.</p>
<p>Here is the script, and then I'll discuss a few interesting points.</p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;">#Ask for Server Name</span> </span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$MachineName</span> <span style="color: darkgray;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: darkred;">"Please enter the Machine name"</span> </span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$ParentVHD</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"C:\ClusterStorage\Volume1\ParentVHDs\Diff2012_2_disk_1.vhdx"</span> </span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$DefaultVHDPath</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"C:\ClusterStorage\Volume2\"</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$VHDXName</span> <span style="color: darkgray;">=</span> <span style="color: orangered;">$DefaultVHDPath</span> <span style="color: darkgray;">+</span> <span style="color: orangered;">$MachineName</span> <span style="color: darkgray;">+</span> <span style="color: darkred;">"_C.vhdx"</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;">#Create new disk from parent</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">New-VHD</span> <span style="color: navy;">-ParentPath</span> <span style="color: orangered;">$ParentVHD</span> <span style="color: navy;">-Path</span> <span style="color: orangered;">$VHDXName</span> <span style="color: navy;">-Differencing</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;">#Create new VM with diff disk</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">New-VM</span> <span style="color: navy;">-VHDPath</span> <span style="color: orangered;">$VHDXName</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$MachineName</span> <span style="color: navy;">-MemoryStartupBytes</span> <span style="color: purple;">2147483648</span> <span style="color: navy;">-SwitchName</span> <span style="color: darkred;">"External"</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Set additional VM Config</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Set-VMMemory</span> <span style="color: navy;">-VMName</span> <span style="color: orangered;">$MachineName</span> <span style="color: navy;">-DynamicMemoryEnabled</span> <span style="color: orangered;">$true</span> <span style="color: navy;">-MaximumBytes</span> <span style="color: purple;">4294967296</span> <span style="color: navy;">-MinimumBytes</span> <span style="color: purple;">536870912</span> </span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Set-VMProcessor</span> <span style="color: navy;">-VMName</span> <span style="color: orangered;">$MachineName</span> <span style="color: navy;">-Count</span> <span style="color: purple;">2</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;">#Add Machine to Failover Cluster</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Add-ClusterVirtualMachineRole</span> <span style="color: navy;">-VirtualMachine</span> <span style="color: orangered;">$MachineName</span> </span></p>
<p style="background: white;">&nbsp;<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Start-VM</span> <span style="color: navy;">-name</span> <span style="color: orangered;">$MachineName </span></span></p>
<p>&nbsp;</p>
<p>The first line asks for the server name to be build and stores it in the $MachineName variable. The next three lines set up the paths for the virtual hard drives. Please note the C:\ClusterStorage\Volume1 and C:\ClusterStorage\Volume2 paths. This is the CSV namespace for the clustered volumes, the parent disk stored on volume 1, which is the slower spindle storage and Volume 2 is hosted on the SSD (refer back to <a href="http://blogs.technet.com/b/gareja/archive/2013/08/24/the-home-hyper-v-test-lab-on-a-budget-part-2.aspx">Part 2</a> for details of this setup). The first step of creating the differencing VHDX is done using the New-VHD cmdlet. As you can see from the PowerShell, this is very, very easy to do. The next line creates the VM and attaches the newly created VHDX file. In addition, it sets the startup memory for the VM and attaches it to the 'External' virtual switch. The next two lines set Dynamic Memory on the VM, minimum of 512Mb, maximum of 4GB and gives it two vCPUs. If you leave it there, the VM will be created with the VHDX on the clustered storage, but it will not be highly available because the cluster service is not aware of it. The Add-ClusterVirtualMachineRole command will add the VM to the cluster service. The last line in the script starts the VM.</p>
<p>From here you'll have to do manual steps such as set the machine name in the Operating System (The script set the external VM name, this can be different to the machine name in the OS), the IP address and joining to the lab Domain. In the next post I'll cover off the automation for provisioning using Virtual Machine Manager, which will take care of these manual steps.</p>
<p>Let's see how rapid the provision of a VM is using this method. I want to fire up a new server to do some awesome testing, from entering the server name at the script prompt and pressing enter, my VM is booted and ready for work in 2 minutes and 21 seconds. This includes running mini-setup. In fact the mini-setup takes most of the time as the VM is provisioned, added to the cluster and booting after about 20 seconds.</p>
<p>Oh, I almost forgot to mention, make sure you have the CSV namespace set as the default path for the Virtual Machines in Hyper-V Settings. If you don't the script will place the VM configuration on the host's local hard drive and not the clustered storage (that's the config files, not the VHDX files). Everything will seem OK from the Hyper-V and Cluster Manager UI, but you'll notice the problem soon enough the first time you try and Live Migrate a VM.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/8865.090613_0451_TheHomeHype2.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/8865.090613_5F00_0451_5F00_TheHomeHype2.png" alt="" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>The Home Hyper-V Test Lab – On a Budget (Part 2)</title>
      <link>https://docs.microsoft.com/archive/blogs/gareja/the-home-hyper-v-test-lab-on-a-budget-part-2</link>
      <pubDate>Fri, 23 Aug 2013 23:19:54 GMT</pubDate>
      <dc:creator><![CDATA[Gareth James]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gareja/2013/08/23/the-home-hyper-v-test-lab-on-a-budget-part-2/</guid>
      <description><![CDATA[In Part 1 I covered the physical hardware setup around the network, storage and compute of the Home...]]></description>
      <content:encoded><![CDATA[<p>In <a href="http://blogs.technet.com/b/gareja/archive/2013/05/04/the-home-hyper-v-test-lab-on-a-budget-part-1.aspx">Part 1</a> I covered the physical hardware setup around the network, storage and compute of the Home Hyper-V test lab. 
</p><p>In Part 2, I'll cover the Hyper-V and cluster configuration, where I run the VMs from and why. And the optimisation of Read performance using Differential disks and the CSV block cache.
</p><p>To expand on Part 1, I have four physical machines in the test lab.
</p><ul><li>2 x Hyper-V Cluster hosts running Windows Server 2012 Hyper-V (Server Core)
</li><li>1 x Windows Server 2012 box running as an iSCSI target to provide shared storage to the Cluster
</li><li>1 x Gaming rig running Windows 8 Pro
</li></ul><p>As briefly mentioned in part 1. The Gaming rig is a home system. So it's not joined to the test lab domain. This makes it easy to work that system into a home group network, so stuff can be shared with the Home Theatre PC and the 10 thousand tablets I have in the house. 
</p><p>The great thing about Windows 8 Pro is Hyper-V client. This allows me to run some VMs that are independent from the cluster. There is no sacrifice VM performance because client Hyper-V is a Type 1 bare-metal hypervisor just like Windows Server Hyper-V.
</p><p>I have three VMs running on the Gaming Rig. The test lab Domain Controller, an MDT box and an RDS Server. With the hardware I used (Itemised in Part 1), I was able to bare-metal build the two Hyper-V Cluster hosts over the network using MDT, using a standard server deployment task sequence. I did not have to worry about and additional driver injection, everything just worked out-of-box. For those not familiar with MDT (Microsoft Deployment Toolkit), it is simply the best way of accelerating Windows Image deployment. If you need to get image deployment happening quickly, MDT is the way to do it.
</p><p><a href="http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx"><span style="font-size:12pt">http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx</span></a><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">The new hardware will hit the MDT box via Pre-Execute Environment (PXE). This will be require the WDS and DHCP server roles to be installed on the MDT box.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/3782.082413_0618_TheHomeHype1.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/3782.082413_5F00_0618_5F00_TheHomeHype1.png" alt=""/><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">I won't go into the step by step detail of how to set up the deployment share and importing Operating Systems. This is very well covered in the MDT documentation, the 'Quick Start Guide for Lite Touch Installation' is a good place to start.
</span></p><p><span style="font-size:12pt">The task sequence I show here is as about out of box as it gets. Windows has all the drivers out of box, so I did not have to worry about any additional drivers. I have set the Task Sequence to detect the model type and if being deployed to my physical hardware, it will run the additional of tasks to set-up Hyper-V.
</span></p><p><span style="font-size:12pt">Below you can see the server build Task Sequence. Before you say 'that looks like a lot of work', all of the steps except for the activities under the 'Hyper-V Cluster Node' group, are generated automatically by MDT.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/2816.082413_0618_TheHomeHype2.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/2816.082413_5F00_0618_5F00_TheHomeHype2.png" alt=""/><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">The Options tab is where you set the logic for the group of tasks to only run if certain hardware is detected.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/6036.082413_0618_TheHomeHype3.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/6036.082413_5F00_0618_5F00_TheHomeHype3.png" alt=""/><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">I didn't have to do any scripting here, the 'Product' variable is populated by the ZTIGather script, which runs as part of an MDT task sequence by default.
</span></p><p><span style="font-size:12pt">The custom actions were also quite easy, the first two actions enable the Hyper-V role and install the Failover Cluster feature (you could do this as a single step, but I like to keep things modular).
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/6648.082413_0618_TheHomeHype4.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/6648.082413_5F00_0618_5F00_TheHomeHype4.png" alt=""/><span style="font-size:12pt">
		</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0361.082413_0618_TheHomeHype5.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0361.082413_5F00_0618_5F00_TheHomeHype5.png" alt=""/><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">The next two steps set my MDSN MAK product key and activate Windows. This works because the lab has access to the internet. 
</span></p><p><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">You can set the product key when setting up the Task Sequence, but the other way to do it is using the slmgr.vbs script in windows. The /ipk switch sets the product key and the /ato switch activates Windows. 
</span></p><p><span style="font-size:12pt">The last step it to import the MDT boot media into WDS so it can answer the PXE request from your bare metal servers.
</span></p><p><span style="font-size:12pt">Launch the Windows Deployment Services manager. Navigate to 'Boot Images' item and right click. Select 'Add Boot Image' and navigate to <em>deployment share directory\</em>Boot and select the LiteTouchPE_x64.wim file. Once imported, WDS will serve the MDT boot image to any client it answers a PXE request from. 
</span></p><p><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">I was able to kick both builds off a same time and in 15 minutes I had two fully build Hyper-V Hosts ready for the cluster configuration.
</span></p><p><span style="color:black; font-size:16pt"><strong>iSCSI SAN
</strong></span></p><p><span style="font-size:12pt">A Hyper-V cluster requires common storage, and that's where the server running as an iSCSI target comes in. This is just stupid easy to set up. I have Windows Server 2012 (Full UI) installed and simply allocated each drive (SSD and Spindle) to each LUN.
</span></p><p><span style="font-size:12pt">The following is a great <a href="http://blogs.technet.com/b/filecab/archive/2012/05/21/introduction-of-iscsi-target-in-windows-server-2012.aspx">blog</a> on the setup and use of the iSCSI Target in Windows Server 2012.
</span></p><p><span style="font-size:12pt">As the blog covers things in great detail, I won't go into the setup to much here. As you can see, I have two LUNs presented (one fast SSD and the other slower Spindle). Plus another LUN provided for the cluster Witness disk. 
</span></p><p><span style="color:black">
		</span></p><p>
 </p><p><span style="color:black">From there I'm using the built in iSCSI initiator software on the Hyper-V host to make the connection from the Hyper-V hosts.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0245.082413_0618_TheHomeHype10.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0245.082413_5F00_0618_5F00_TheHomeHype10.png" alt=""/><span style="color:black">
		</span></p><p>
 </p><p><span style="color:black">When the connection is made, the LUNs created on the 2012 iSCSI server come in as normal disks. 
</span></p><p>
 </p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1261.082413_0618_TheHomeHype11.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1261.082413_5F00_0618_5F00_TheHomeHype11.png" alt=""/><span style="color:black">
		</span></p><p>
 </p><p><span style="color:black; font-size:16pt"><strong>Cluster Configuration
</strong></span></p><p>
 </p><p><span style="font-size:12pt">While it's true I could probably get better capacity by putting the same amount of money into a single machine, I gain a good degree of flexibility by having a cluster. Zero down-time fabric patching is just one advantage (I'll cover this in a latter blog post).
</span></p><p><span style="font-size:12pt">Clusters in Windows Server 2012 are not that hard to understand. The most complex things in a production design are the networking and the storage. 
</span></p><p><span style="font-size:12pt">I've covered the storage above. The Network setup is by no means to best practise. I am dedicating a single 1Gb NIC to iSCSI and some cluster functions, so the second NIC will be used for just about everything else.
</span></p><p><span style="font-size:12pt">The following table illustrates the networks needed by a Hyper-V cluster and how I've applied them.
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:208px"/><col style="width:229px"/><col style="width:208px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white; font-size:12pt"><strong>Network</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white; font-size:12pt"><strong>Description</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white; font-size:12pt"><strong>Allocation</strong></span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>Host Management</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">Network used by the Hyper-V host to talk to external services (AD, VMM, Management etc.)</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC1</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>VM Network</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">Attached to a virtual switch, the network that all VMs will talk on.</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC1</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>Live Migration
</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">Network used for Live Migration traffic.
</span></p><p><a href="http://technet.microsoft.com/en-us/library/hh831435.aspx"><span style="font-size:12pt">http://technet.microsoft.com/en-us/library/hh831435.aspx</span></a></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC1</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>CSV redirect network
</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><a href="http://technet.microsoft.com/en-us/library/ff182358(v=WS.10).aspx%23BKMK_redirected"><span style="font-size:12pt">http://technet.microsoft.com/en-us/library/ff182358(v=WS.10).aspx#BKMK_redirected</span></a></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC2</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>Secondary Cluster network</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">Second network path for cluster communications</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC2</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt"><strong>iSCSI Storage</strong></span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">Path for iSCSI storage</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="font-size:12pt">NIC2</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="color:black; font-size:16pt"><strong>IP Addressing
</strong></span></p><p>Just for an example and so you get the idea, I've included the IP addressing scheme I've used.
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:101px"/><col style="width:170px"/><col style="width:100px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>Server Name</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>NIC</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>IP Address</strong></span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"><p><strong>HyperV01</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>Host/Live Migration</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>10.100.0.14</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>CSV Redirect/Secondary Cluster/iSCSI</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>192.168.0.2</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"><p><strong>HyperV02</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>Host/Live Migration</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>10.100.0.15</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>CSV Redirect/Secondary Cluster/iSCSI</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>192.168.0.3</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"><p><strong>iSCSISAN</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>Host</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>10.100.0.3</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>iSCSI1</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>192.168.0.1</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt"><p>ISCS2</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>192.168.0.4</p></td></tr></tbody></table></div><p>
 </p><p><span style="font-size:12pt">Here is the NICs look in Windows in the Hyper-V Server.
</span></p><p><span style="font-size:12pt">
			<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0636.082413_0618_TheHomeHype12.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0636.082413_5F00_0618_5F00_TheHomeHype12.png" alt=""/>
		</span></p><p><span style="font-size:12pt">Hang on, I've got two NICs and three are displaying here – what gives? Well, when you create a virtual swtich in Hyper-V and bind it to a physical adaptor (that will be the adaptor that transmits and recieves the VM traffic), it makes that adaptor unusable to the host directly. As you can see from the screenshot, it unbinds just about everything execpt the virtual switch.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1663.082413_0618_TheHomeHype13.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1663.082413_5F00_0618_5F00_TheHomeHype13.png" alt=""/><span style="font-size:12pt">
		</span></p><p><span style="font-size:12pt">On a server, this would be fine as I would have this NIC (or teamed NIC) dedicated to VM traffic. But in my home lab, I need to use that NIC for other stuff. 
</span></p><p><span style="color:black; font-size:16pt"><strong>Setting the VM Network
</strong></span></p><p>Open the Hyper-V MMC, then select the Virtual Switch Manager. Create a new virtual switch (I've just called mine 'External') and pick the adaptor you wish to bind it to. 
</p><p>Notice there is a check box that says 'Allow management operating system to share this network adaptor'. By checking that, the Hyper-V host will create a new logical adaptor the host can use for other stuff, and that's the third NIC displayed in the screenshot above.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7801.082413_0618_TheHomeHype14.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7801.082413_5F00_0618_5F00_TheHomeHype14.png" alt=""/>
	</p><p>I'm going to side track for a second because I want to spell this out. Because I can't tell you how many times I've seen people get this wrong or misunderstand how this works. 
</p><p><strong>Hyper-V Host before the vSwitch is created
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7840.082413_0618_TheHomeHype15.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7840.082413_5F00_0618_5F00_TheHomeHype15.jpg" alt=""/>
	</p><p><strong>After an external vSwitch is created
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/2845.082413_0618_TheHomeHype16.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/2845.082413_5F00_0618_5F00_TheHomeHype16.jpg" alt=""/><strong>
		</strong></p><p><strong>If the enable host management on the switch is enabled
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7510.082413_0618_TheHomeHype17.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7510.082413_5F00_0618_5F00_TheHomeHype17.jpg" alt=""/><strong>
		</strong></p><p>There is an option just below this to set a VLAN tag. If you do this, you are <strong>NOT</strong>, I repeat <strong>NOT,</strong> VLAN tagging the virtual switch. You are tagging the new logical NIC that was just created in the host. 
</p><p><strong>If a VLAN Tag is set when you create the vSwitch
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7571.082413_0618_TheHomeHype18.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7571.082413_5F00_0618_5F00_TheHomeHype18.jpg" alt=""/><strong>
		</strong></p><p>If you're after the visio stencils I used, they can be found <a href="http://gallery.technet.microsoft.com/Hyper-VSCVMM-Vision-Stencil-3dc18770">here</a>.
</p><p>You may have noticed at the start of the blog I stated I was using Server Core on the Hyper-V Servers, but all the screen shots have been from the full UI version. In Windows Server 2012 you can switch between the full UI and Server Core very easily. Here is a good <a href="http://blogs.technet.com/b/server_core/archive/2012/05/09/configuring-the-minimal-server-interface.aspx">blog</a> on the difference between the three options on Windows Server 2012: Server Core, Minimal Server Interface and the Full UI.
</p><p>You can switch between Server Core and Full UI using the following PowerShell Commands:
</p><p><strong>To go from Server Core to full UI.
</strong></p><p>If you installed the Server Core SKU, you will not have the binaries to run the full UI and you will need to run the following:
</p><p><span style="font-family:Courier New; font-size:10pt">Dism /online /enable-feature /featurename: ServerCore-FullServer /source:"<em>path to source"</em>\sources\sxs
</span></p><p>Then to enable the full UI:
</p><p><span style="font-family:Courier New; font-size:10pt">Add-WindowsFeature Server-GUI-Shell
</span></p><p><strong>To go from full UI to Server Core:
</strong></p><p><span style="font-family:Courier New; font-size:10pt">Remove-WindowsFeature Server-gui-mgmt-infra
</span></p><p><span style="color:black; font-size:16pt"><strong>Create the Cluster
</strong></span></p><p>This process is fairly easy, you need to make sure the failover cluster feature is installed on all nodes. Then launch the failover cluster manager and select '<strong>Create Cluster</strong>'.
</p><p>Step through the create cluster wizard. The first task is to select the nodes you wish to be in the cluster (you can browse by AD computer object). You'll then be asked to validate the cluster. While this is not a production environment, you don't technically need to run it, but I would still recommend it. The Cluster validation process is the best way of finding issues that will prevent the cluster from working. After the validation, enter a name and IP address for the cluster. The Setup Cluster wizard takes care of the rest.
</p><p><span style="color:black; font-size:16pt"><strong>Setting the Quorum configuration
</strong></span></p><p>From the Top level of cluster failover manager, select 'More Actions' in the Actions section.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/8883.082413_0618_TheHomeHype19.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/8883.082413_5F00_0618_5F00_TheHomeHype19.png" alt=""/>
	</p><p>From there select 'Configure Cluster Quorum Settings'. One of the great new features of Windows Server 2012 is that it can dynamically set the quorum mode. In a Hyper-V cluster, you can have several quorum modes, the most common and <strong>node majority</strong> (just uses the hosts and does not use a witness disk) or <strong>node and disk majority</strong> (which uses the hosts and a witness disk). As long as you have a disk available to be the witness (as was configured earlier) the cluster will dynamically set the best quorum mode, based on the number of active nodes in the cluster. 
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1106.082413_0618_TheHomeHype20.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1106.082413_5F00_0618_5F00_TheHomeHype20.png" alt=""/>
	</p><p><span style="color:black; font-size:16pt"><strong>How to set the LM network
</strong></span></p><p>Now we need to tell the cluster which network we want to use for which function. Starting with the Live Migration network. This is easy to set, a bit tricky to find in the UI. Again, in the Failover cluster manager, right click on the Networks item.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7206.082413_0618_TheHomeHype21.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7206.082413_5F00_0618_5F00_TheHomeHype21.png" alt=""/>
	</p><p>Then select 'Live Migration Settings'. From here you can select the network(s) and set priorities. 
</p><p>
		<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/5672.082413_0618_TheHomeHype22.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/5672.082413_5F00_0618_5F00_TheHomeHype22.png" alt=""/>
	</p><p><span style="color:black; font-size:16pt"><strong>How to set the CSV network
</strong></span></p><p>To set a preferred network here, you use metric setting in PowerShell. To set the priority network for CSV redirection it needs to be set to 900
</p><p><span style="font-family:Courier New; font-size:10pt">(Get-ClusterNetwork "Cluster Network 2").Metric = 900
</span></p><p>To verify the setting use the following command
</p><p><span style="font-family:Courier New; font-size:10pt">Get-ClusterNetwork | ft Name, Metric, AutoMetric, Role
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0815.082413_0618_TheHomeHype23.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0815.082413_5F00_0618_5F00_TheHomeHype23.png" alt=""/>
	</p><p><span style="color:black; font-size:16pt"><strong>Configure the CSV volumes
</strong></span></p><p>This was interesting to find in the UI in 2008 R2. In 2012 it's so easy it should be illegal.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/8737.082413_0618_TheHomeHype24.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/8737.082413_5F00_0618_5F00_TheHomeHype24.png" alt=""/>
	</p><p>Simply right click on the disk and select 'Add to Cluster Shared Volumes'
</p><p><span style="color:black; font-size:16pt"><strong>VMs and boot order
</strong></span></p><p>With all the different machines and dependencies, the order in which these things are fired up matters. I've included a table of which VM is hosted where and the boot order.
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:156px"/><col style="width:156px"/><col style="width:66px"/><col style="width:366px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white"><strong>Computer</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white"><strong>Host</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white"><strong>Boot Number</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>Notes</strong></span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Gaming Rig</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>N/A</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Win 8 Pro with Hyper-V</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>DC01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Gaming Rig</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Resume from saved state, takes about 3-4 seconds to come up.</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>SAN01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>N/A</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>3</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Needs the DC to authenticate. </p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>MDT01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Gaming Rig</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>4</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Hosted on gaming rig so it could be used to PXE build the Hyper-V hosts and SAN</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>RDS01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Gaming Rig</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>4</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Remote Desktop server where I use published apps to host all the consoles I need. Using RDP to remote into every server you need to do something on is so old school</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>HyperV01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>N/A</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>5</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>SAN01 must be up for the cluster to have disk</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>HyperV02</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>N/A</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>5</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>SAN01 must be up for the cluster to have disk</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>All other VMs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Cluster01</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>6</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>I then resume all the VMs I need to continue whatever I was working on.</p></td></tr></tbody></table></div><p>
 </p><p><span style="color:black; font-size:16pt"><strong>CSV Block cache and boot times
</strong></span></p><p><span style="font-size:12pt">As you could see from the hardware specs in part 1, I don't have a lot of disk to throw at this config. So the idea is to use every little trick to extract the maximum performance. By far the biggest gain in the lab is to use differential disks and the CSV block cache. I'll go into more detail of what differential disks are, how they work and how to set them up in Part 3. For now I'll explain a little on the CSV block cache and how to enable it.
</span></p><p><span style="font-size:12pt">For an overview of the CSV block cache and a bit more detail, refer to this <a href="http://blogs.msdn.com/b/clustering/archive/2012/03/22/10286676.aspx">blog</a>. However, in summary, blocks read from the storage are stored in RAM on the Hyper-V host. When the block is accessed again, it's read directly from memory on the host and not the storage, giving a huge boost in performance. The cache is split 50/50 between common reads and uncommon reads. This ensures the cache is maximising performance for both data read all the time and data read more infrequently. The difference it can make can be quite large.
</span></p><p><span style="font-size:12pt">To illustrate the difference, I performed a demo at TechED Australia in 2012 where I did a comparative test between booting 5 Windows 2012 Server VMs (using differential disks) with the cache off and then with the cache on. To boot the 5 VMs with the cache off took 2 minutes and 38 seconds. With the cache on, the 5 VMs booted in 47 seconds. If you want to see the demo, it's on-line <a href="https://channel9.msdn.com/Events/TechEd/Australia/2012/WSV423">here</a>. Apologies for my voice if you watch the video, I was losing it. To save you some pain, the first part of the demo is at 43:55 and the second part of the demo is at 56:45. If you're in the mood, that session also has a very cool demo showing how a VM can remain running even if it loses its storage using the CSV redirect, and that's at 35:55.
</span></p><p><span style="font-size:12pt">Enabling the cache is done from PowerShell. It's also not on by default (2012. It's enabled by default on 2012 R2), so if you want to utilise it, you'll have to turn it on. The default size of the cache is 512MB, in the lab I've found that allocated a 1GB works well, to do that use the following command:
</span></p><p><span style="font-family:Courier New; font-size:10pt">(Get-Cluster).SharedVolumeBlockCacheSizeInMB = 1024
</span></p><p><span style="font-size:12pt">Please note, that's the command for Windows Server 2012, it's different in 2012 R2 
</span></p><p><span style="font-family:Courier New; font-size:10pt">(Get-Cluster). BlockCacheSize = 1024
</span></p><p><span style="font-size:12pt">The Cache is enabled on a CSV by CSV basis. This enables you to be selective on which CSV LUNs you cache. In my lab, I have the parent VHDX on the slow spindle disk with the cache enabled and all the differencing disks on the fast SSD with the cache disabled. This ensures the cache is maximised for the reads from the slow disk and I can save storage on the fast disk.
</span></p><p><span style="font-size:12pt">If you're running 2012, use the following command to enable the cache:
</span></p><p><span style="font-family:Courier New; font-size:10pt">Get-ClusterSharedVolume "Cluster Disk 2" | Set-ClusterParameter  CsvEnableBlockCache 1
</span></p><p><span style="font-size:12pt">To verify the setting, use:
</span></p><p><span style="font-family:Courier New; font-size:10pt">Get-ClusterSharedVolume "Cluster Disk 2" | Get-ClusterParameter  CsvEnableBlockCache
</span></p><p><span style="font-family:Courier New; font-size:10pt">
		</span></p><p><span style="font-size:12pt">As you can see from the warning, the disk needs to be taken offline and then online again for the change to take effect.
</span></p><p><span style="font-size:12pt">One final point - this is why I use iSCSI to the 2012 SAN rather than SMB 3.0. You can't enable CSV on SMB shares, only on LUNs connected to the hosts. No CSV means no Block Cache, and that's the only reason I don't use SMB. If SMB had a similar caching function, I would certainly use it, as it's much easier to set up.
</span></p><p><span style="font-size:12pt">That wraps up part 2. In Part 3, I'll cover the use of differential disks in the lab and start to cover off the automation I use so I don't spend all my lab time doing grunge work.
</span></p><p>
 </p><p><span style="font-size:12pt">
		</span> </p>]]></content:encoded>
    </item>
    <item>
      <title>The Home Hyper-V Test Lab – On a Budget (Part 1)</title>
      <link>https://docs.microsoft.com/archive/blogs/gareja/the-home-hyper-v-test-lab-on-a-budget-part-1</link>
      <pubDate>Fri, 03 May 2013 12:45:51 GMT</pubDate>
      <dc:creator><![CDATA[Gareth James]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gareja/2013/05/03/the-home-hyper-v-test-lab-on-a-budget-part-1/</guid>
      <description><![CDATA[A few people have commented that I should post about how my home Hyper-V lab is set up, so here it...]]></description>
      <content:encoded><![CDATA[<p>A few people have commented that I should post about how my home Hyper-V lab is set up, so here it is.
</p><p>In this blog series I'm going to show how I have my lab setup, which was designed to accomplish a few things
</p><ul><li>Give me the maximum performance 'bang for buck'
</li><li>Utilise some existing hardware
</li><li>Provide a HA Hyper-V Cluster 
</li><li>Automate tedious tasks like server provisioning and patching
</li><li>Take up as little desk space as possible 
</li><li>Utilise 'out of box' Microsoft capabilities
</li></ul><p><span style="color:red; font-size:12pt"><strong>DISCLAIMERS
</strong></span></p><ul><li>Many things in this blog will <strong>NOT</strong> be Microsoft recommended practise. It's a home lab, so I can take some shortcuts, things you would never do in production. I'll do my best to call out when I've done this. 
</li><li>All equipment quoted are done so as examples only. This is how I've done it. I'm not saying it's the only way or the best way to do it, nor am I recommending one product over another.  
</li><li><div>Any prices quoted are in Australian Dollars, and are what I paid at the time. It might be less or more for you, depending on what and when you buy and your location
</div><p>
 </p></li></ul><p>As this is a home lab, I care about two things, my money and my time. I don't want to spend more money than I have to. I don't know about you, but I would just as soon spend my free time playing games than studying and working in my lab. So I don't want to spend hours watching blue (or green) bars go across the screen if I can make that task quick, or automate it.
</p><p><strong>Part 1</strong> will be about the hardware, storage and network setups. In future parts I'll cover off the provisioning and automation parts. 
</p><p>When I set this up, I set a budget of <strong>$3000</strong> for compute, storage and network. For the purposes of this blog, I'll assume as an IT Pro, you have a TechNet or MSDN subscription, so I won't be including any software pricing. 
</p><p>I also have an existing Gaming rig that I wanted to utilise. That machine has to remain as a home system that can utilise HomeGroup and can function easily disconnected from the home network (when I take it to LANs). So that machine needed to stay out of the test lab domain and run a consumer Operating System. 
</p><p>One of the great things about Windows 8 Pro is client Hyper-V. This allows me to run some of the VMs outside of the primary cluster (I'll explain why that's handy latter). I won't go into huge details on the specs of this box, as it's pre-existing and not part of the $3000 budget, in brief it's a dual core i7 Intel and has 16Gb RAM, with a reasonable amount of storage. Just as you'd expect to find in any IT Pro's house as a gaming rig. 
</p><p><strong>Storage
</strong></p><p>I didn't want to spend the money on any kind of NAS device, plus I wanted the flexibility to play around with SMB 3.0 clusters (a design I abandoned, I'll explain why in part 2). So I built a PC with storage, installed Windows Server 2012 and used storage spaces to carve up the disk and presented LUNs using the Windows iSCSI target software.
</p><p><strong>Hardware Specs and Cost
</strong></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:208px"/><col style="width:208px"/><col style="width:208px"/><col style="width:416px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">Hyper-V Nodes</span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>Notes</strong></span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>Case</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x Huntkey Slimline Micro ATX H920</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$109.44 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Desk space the main reason. Nice half height case with PS included. </p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>MainBoard</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x ASUS P8h67-M</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$104.02 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Main reason, inexpensive board with 32Gb capacity and 1Gb on-board NIC</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>CPU</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x Intel i7-3770</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$335.89 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Dual core. No preference over AMD and Intel, the ASUS board pushed me down the Intel path.</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>RAM</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>8 x 8Gb Corsair 1600Mhz DDR3</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$203.70 per 32Gb</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>32Gb per node</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>HDD</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x Toshiba 500Gb 7200RPM</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$83.44 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Cheap and the smallest I could find. All the VM storage will be on the storage server</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>NIC</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x Intel Pro 1Gb Adapter </p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$50.93 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Inexpensive, great performance from a consumer adapter and half height bracket. </p></td></tr></tbody></table></div><p>
 </p><p>Total for the hosts - $1774.84 – looking good to stay under the $3000 limit!
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:208px"/><col style="width:208px"/><col style="width:208px"/><col style="width:416px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">iSCSI Server</span></p></td><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"> </td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white"><strong>Notes</strong></span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>Case</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>AYWUN A1-BJ</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$53.10</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Inexpensive, with good amount of drive bays (had to loosen the desk space requirement on that one) </p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>MainBoard</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><span style="color:black">ASUS P8H61-MX
</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$86.68</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Inexpensive, with on-board 1Gb Connection</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>CPU</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Intel i5-3330</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$219</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Storage box does not need a lot of CPU</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>RAM</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x 4GB Corsair 1600Mhz DDR3</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$71.51</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"> </td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>HDD1</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x Toshiba 500Gb 7200RPM</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$83.44</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>OS install drive</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>HDD2</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x 1TB Western Digital 64M 7200RPM SATA2</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$159.28</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Second performance tier storage</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>HDD3</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x 256GB Samsung SSD 840 Pro</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$283.88</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Primary performance tier storage</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>NIC</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>2 x Intel Pro 1Gb Adapter </p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>$50.93 each</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Inexpensive, great performance from a consumer adapter. </p></td></tr></tbody></table></div><p>
 </p><p>Total for the storage $1218.03 <strong>Total overall was $2991.87. </strong>I was able to keep it under the $3000 limit!
</p><p>Here are a couple of photos of the build of the Hyper-V hosts. It will give you an idea of the case size.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7382.050413_0535_TheHomeHype1.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7382.050413_5F00_0535_5F00_TheHomeHype1.jpg" alt=""/><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/7317.050413_0535_TheHomeHype2.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/7317.050413_5F00_0535_5F00_TheHomeHype2.jpg" alt=""/><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0871.050413_0535_TheHomeHype3.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0871.050413_5F00_0535_5F00_TheHomeHype3.jpg" alt=""/><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/2072.050413_0535_TheHomeHype4.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/2072.050413_5F00_0535_5F00_TheHomeHype4.jpg" alt=""/>
	</p><p><strong>Networking
</strong></p><p>Each host has two 1Gb NICs, one for VM and host Traffic and one for iSCSI. The iSCSI Server has three 1Gb NICs, one for host traffic and two for iSCSI. This made a performance difference as illustrated in the performance testing section. 
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1532px"/></colgroup><tbody valign="top"><tr style="height: 166px"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="color:red">PRODUCITON WARNING
</span></p><p>Having all networks (Host, Guest, Cluster, CSV and Live Migration) all on the same 1Gb network is most certainly not recommended practise. I would hope, when implementing Hyper-V in Production, you would be doing so on server equipment that has better NICs than two 1Gb adaptors!
</p><p>For recommendations on Hyper-V Networking setups, please refer to the following TechNet article.
</p><p><a href="http://technet.microsoft.com/en-us/library/ff428137(v=WS.10).aspx">http://technet.microsoft.com/en-us/library/ff428137(v=WS.10).aspx</a></p></td></tr></tbody></table></div><p>
 </p><p>The following diagram illustrates the physical network setup for the lab. The Host Network is in a 10.100.0.x range and the iSCSI network is in the 192.168.0.x range. Putting the iSCSI in a different range is the easiest way to ensure those adaptors are used for iSCSI exclusively. 
</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/3404.050413_0535_TheHomeHype5.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/3404.050413_5F00_0535_5F00_TheHomeHype5.jpg" alt=""/>
	</p><p><strong>Network and Disk Performance Testing
</strong></p><p>Is it really worth having two NICs in the iSCSI server? How much difference will a SSD Drive make? I could have put 3 x 1TB spindle drives in for slightly more than the single SSD and single Spindle drive. How does the performance compare. Well, I've done both and tested it. Here are the results.
</p><p>In the test I really wanted to determine the sweet spot for disk write. I was not so concerned about read (I'll explain why in part 2). The test involved taking approx. 8.5GB of data (all the ISOs for System Centre 2012) and copying to the iSCSI Server. This was done from a single Hyper-V host to the iSCSI Server to set a benchmark, then from both Hyper-V Hosts at the same time.
</p><p><span style="font-size:16pt"><strong>Test 1 
</strong></span></p><p>Copy of test data from a single Hyper-V host to the iSCSI server over dedicated 1Gb link. 
</p><p><strong>Configuration
</strong></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:312px"/><col style="width:312px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">Component</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white">Config</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Hyper-V Host NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI (one per host)</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server disks</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>3 x 1TB 7200 RPM in a storage space (no mirroring and no parity)</p></td></tr></tbody></table></div><p> 
 </p><p><strong>Copy Time
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1200.050413_0535_TheHomeHype6.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1200.050413_5F00_0535_5F00_TheHomeHype6.png" alt=""/>
	</p><p>That was not the first copy, so the time of 30 seconds is little deceptive as there is some caching going on. 
</p><p><strong>Network Util
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/5556.050413_0535_TheHomeHype7.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/5556.050413_5F00_0535_5F00_TheHomeHype7.png" alt=""/>
	</p><p>As you can see, the throughput was excellent, and that level was sustained for the duration of the copy. I thought it was excellent given its consumer grade equipment. 
</p><p><strong>Disk Queue
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/3660.050413_0535_TheHomeHype8.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/3660.050413_5F00_0535_5F00_TheHomeHype8.png" alt=""/><strong>
		</strong></p><p>The numbers to look at the Avg. Disk Queue and Avg. Disk Write Queue Length. If either are more than 5 (number of physical drives plus 2) then the copy is disk constrained. At a number of 0.451, we are nowhere near saturating the disks. 
</p><p><strong><span style="font-size:16pt">Test 2</span>
		</strong></p><p>Copy of test data from both Hyper-V hosts to the iSCSI server over dedicated 1Gb link at the same time. The copy was done to separate directories on the iSCSI Server. 
</p><p><strong>Configuration
</strong></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:312px"/><col style="width:312px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">Component</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white">Config</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Hyper-V Host NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI (one per host)</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server disks</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>3 x 1TB 7200 RPM in a storage space (no mirroring and no parity)</p></td></tr></tbody></table></div><p> 
 </p><p><strong>Copy Time
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/6835.050413_0535_TheHomeHype9.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/6835.050413_5F00_0535_5F00_TheHomeHype9.png" alt=""/>
	</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/5367.050413_0535_TheHomeHype10.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/5367.050413_5F00_0535_5F00_TheHomeHype10.png" alt=""/>
	</p><p>Same deal as the first, this was not the first copy run, so there is some caching. But the copy times have increased from 30 seconds to 1:16 on one host and 2:00 on the other. 
</p><p><strong>Network Util
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1033.050413_0535_TheHomeHype11.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1033.050413_5F00_0535_5F00_TheHomeHype11.png" alt=""/>
	</p><p>The screen shot from the other host is much the same. Hard up at half a Gb. This indicates the single 1Gb NIC on the iSCSI server is saturated. 
</p><p><strong>Disk Queue
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0081.050413_0535_TheHomeHype12.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0081.050413_5F00_0535_5F00_TheHomeHype12.png" alt=""/><strong>
		</strong></p><p>Double the previous numbers, but still not pushing the disk. 
</p><p>So from here it would seem that I am network bound. So adding an additional 1Gb NIC to the iSCSI server to give each host a dedicated 1Gb path (rather than a shared 1Gb path) will improve the performance. So, let's see what the testing says. 
</p><p><span style="font-size:16pt"><strong>Test 3
</strong></span></p><p>Copy of test data from both Hyper-V hosts to the iSCSI server over <strong>two </strong>dedicated 1Gb links at the same time. The copy was done to separate directories on the iSCSI Server. 
</p><p><strong>Configuration
</strong></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:312px"/><col style="width:312px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">Component</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white">Config</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Hyper-V Host NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI (one per host)</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>2</strong> x dedicated 1Gb for iSCSI</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server disks</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>3 x 1TB 7200 RPM in a storage space (no mirroring and no parity)</p></td></tr></tbody></table></div><p> 
 </p><p><strong>Copy Time
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/4213.050413_0535_TheHomeHype13.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/4213.050413_5F00_0535_5F00_TheHomeHype13.png" alt=""/>
	</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/8272.050413_0535_TheHomeHype14.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/8272.050413_5F00_0535_5F00_TheHomeHype14.png" alt=""/>
	</p><p>Copy times have gone down. From 1:16 to 1:04 and 2:00 to 1:20 respectively. So better, but not that much better. I expected more given it's now got twice the bandwidth. 
</p><p><strong>Network Util
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/2705.050413_0535_TheHomeHype15.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/2705.050413_5F00_0535_5F00_TheHomeHype15.png" alt=""/>
	</p><p>So, breaking over the half Gb mark, but not my much. Very choppy graph, not coming anywhere near saturating the network. The graph from the other host showed the same.
</p><p><strong>Disk Queue
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/1715.050413_0535_TheHomeHype16.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/1715.050413_5F00_0535_5F00_TheHomeHype16.png" alt=""/><strong>
		</strong></p><p>Woah, where the hell did that number come from! From <strong>0.8 to 185.6. </strong>That little bit of extra network has pushed the disk over the edge. Just goes to show, gravity's unforgiving when you drop off the edge of the performance cliff. Time to put in an SSD and run the test again.
</p><p><strong><span style="font-size:16pt">Test 4</span>
		</strong></p><p>Copy of test data from both Hyper-V hosts to the iSCSI server over <strong>two </strong>dedicated 1Gb links at the same time using an SSD drive as the target. The copy was done to separate directories on the iSCSI Server. 
</p><p><strong>Configuration
</strong></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:312px"/><col style="width:312px"/></colgroup><tbody valign="top"><tr style="background: #5b9bd5"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  solid #5b9bd5 0.5pt; border-bottom:  solid #5b9bd5 0.5pt; border-right:  none"><p><span style="color:white">Component</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #5b9bd5 0.5pt; border-left:  none; border-bottom:  solid #5b9bd5 0.5pt; border-right:  solid #5b9bd5 0.5pt"><p><span style="color:white">Config</span></p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>Hyper-V Host NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x dedicated 1Gb for iSCSI (one per host)</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server NICs</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p><strong>2</strong> x dedicated 1Gb for iSCSI</p></td></tr><tr style="background: #deeaf6"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #9cc2e5 0.5pt; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>iSCSI Server disks</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #9cc2e5 0.5pt; border-right:  solid #9cc2e5 0.5pt"><p>1 x 256GB SSD</p></td></tr></tbody></table></div><p> 
 </p><p><strong>Copy Time
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/6567.050413_0535_TheHomeHype17.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/6567.050413_5F00_0535_5F00_TheHomeHype17.png" alt=""/>
	</p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/8081.050413_0535_TheHomeHype18.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/8081.050413_5F00_0535_5F00_TheHomeHype18.png" alt=""/>
	</p><p>Copy times have gone down. From 1:04 to 53 seconds and 1:20 to 51 seconds respectively. An improvement of roughly 57% on the second node. It's also noteworthy the copy times are more aligned between the two nodes.  
</p><p><strong>Network Util
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/5314.050413_0535_TheHomeHype19.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/5314.050413_5F00_0535_5F00_TheHomeHype19.png" alt=""/>
	</p><p>Not reaching full saturation at 1Gb and still a bit choppy, but much better sustained throughput than before. Given the network is not being saturated, there must still be a disk bottleneck. 
</p><p><strong>Disk Queue
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/09/metablogapi/0820.050413_0535_TheHomeHype20.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-09-metablogapi/0820.050413_5F00_0535_5F00_TheHomeHype20.png" alt=""/>
	</p><p>Disk queue at 46, so I'm still disk bound (I suspect I might be controller bound). So not perfect but much better than 185!
</p><p>I think I've found the configuration sweet spot from a performance point of view (and staying within budget). I hope you found it useful
</p><p>In the next post, I'll cover how I have configured the virtualisation layer, where VMs are placed, and how to maximise read performance using the CSV block cache. </p>]]></content:encoded>
    </item>
  </channel>
</rss>