<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Aeval Shah's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/aevalshah/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/aevalshah/feed.xml</link>
    <description>High Availability &amp;amp; Virtualisation</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:21:44 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Configuring Virtual Machines to run in separate Resource Hosting Subsystem (RHS) Processes</title>
      <link>https://docs.microsoft.com/archive/blogs/aevalshah/configuring-virtual-machines-to-run-in-separate-resource-hosting-subsystem-rhs-processes</link>
      <pubDate>Tue, 05 Feb 2013 07:48:51 GMT</pubDate>
      <dc:creator><![CDATA[Aeval Shah]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/aevalshah/2013/02/05/configuring-virtual-machines-to-run-in-separate-resource-hosting-subsystem-rhs-processes/</guid>
      <description><![CDATA[I was recently working with a customer who was facing deadlock issues with their Windows Server...]]></description>
      <content:encoded><![CDATA[<p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">I was recently working with a customer who was facing deadlock issues with their Windows Server 2008 R2 Hyper-V cluster. The RHS process would be terminated and a new process would spawn which meant virtual machines would be recycled. As a result of this my customer decided to isolate each virtual machine in it's own RHS process. </font></p>  <p align="justify"><font size="2">My task was to work out how to do this without causing downtime to the virtual machines and hosts. They wanted a simple way to set this up and also a way to find out which virtual machines were associated to which RHS process. </font></p>  <p align="justify"><font size="2"></font></p>  <p align="justify"><font size="2">In this post I will discuss the steps I took to show and confirm the isolation of virtual machines in their own RHS process and how this could be achieved without any down time.</font></p>  <p><font size="2"></font></p>  <p><font size="2">To understand what the RHS process is and how it is used I suggest you take a look at this </font><a href="https://blogs.technet.com/b/askcore/archive/2009/11/23/resource-hosting-subsystem-rhs-in-windows-server-2008-failover-clusters.aspx" target="_blank"><font size="2">article</font></a><font size="2">. It gives a nice explanation of the RHS process and how it fits into Failover Clustering. </font><font size="2">This </font><a href="https://blogs.msdn.com/b/clustering/archive/2009/06/27/9806160.aspx" target="_blank"><font size="2">article</font></a><font size="2"> shows how you can quickly understand the cause of the RHS instability.</font>&#160; </p>  <p align="justify"><font size="2">In order to proceed I configured my test lab as a three node cluster running a few virtual machines.</font></p>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2"><strong>Step1. – Check VM is running in default RHS process. </strong></font></p>  <p align="justify"><font size="2">The first step was to determine how to find out what process the VM was running in. For</font><font color="#2a2a2a" size="2"> this example I was looking at a single VM (W2K8R2-Node1). </font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Below are extracts from Task Manager screen shots from all three cluster nodes to show how may RHS processes are running.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN1 – Cluster Node</font></p>  <p align="justify"><font size="2"></font>&#160;<font size="2"><font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image0014180.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1212.clip_image0014_thumb178_78E3245D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1212.clip_5F00_image0014_5F00_thumb178_5F00_78E3245D.png"><img title="clip_image0014_thumb178" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0014_thumb178" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1222.clip_image0014_thumb178_thumb_1825CB31.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1222.clip_5F00_image0014_5F00_thumb178_5F00_thumb_5F00_1825CB31.png" width="349" height="29" /></a></font></font></font></font></font></p>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN2 – Cluster Node</font></p>  <p align="justify"><font size="2"></font>&#160;<font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><font color="#2a2a2a" size="2"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00245.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5504.clip_image0024_thumb3_779E8B7E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5504.clip_5F00_image0024_5F00_thumb3_5F00_779E8B7E.png"><img title="clip_image0024_thumb3" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0024_thumb3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/7563.clip_image0024_thumb3_thumb_6C08CE3F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/7563.clip_5F00_image0024_5F00_thumb3_5F00_thumb_5F00_6C08CE3F.png" width="359" height="34" /></a></font></font></font></font></font></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN3 – Cluster Node</font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00344.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1307.clip_image0034_thumb2_1D943BD5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1307.clip_5F00_image0034_5F00_thumb2_5F00_1D943BD5.png"><img title="clip_image0034_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0034_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/8712.clip_image0034_thumb2_thumb_1608CC68.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/8712.clip_5F00_image0034_5F00_thumb2_5F00_thumb_5F00_1608CC68.png" width="349" height="35" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">The screenshot below confirms the VM and VM configuration have the default settings for the resource monitor process. The checkbox to run the resource in a separate Resource Monitor has not been checked.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00416.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/2364.clip_image0041_thumb4_236EDF6E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/2364.clip_5F00_image0041_5F00_thumb4_5F00_236EDF6E.png"><img title="clip_image0041_thumb4" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0041_thumb4" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1781.clip_image0041_thumb4_thumb_61F42D14.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1781.clip_5F00_image0041_5F00_thumb4_5F00_thumb_5F00_61F42D14.png" width="580" height="412" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font size="2">This is as expected as by default there are only two RHS processes running. One RHS process is used to run cluster resources and the other is used for the storage.</font></p>  <p align="justify"><font color="#2a2a2a" size="2">Running the following PowerShell command will give me the list of processes the VM and VM configuration are running in.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <table bordercolor="black" bordercolordark="white" width="593" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="591">         <p align="justify"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per VM basis</font></p>         <font color="#ffffff"></font><font color="#ffffff"></font>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource |?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="justify"><font color="#2a2a2a" size="2">This is the output of the above command. From this I can see that both the VM and VM configuration are running on the RHS process with ID 2092 on host W2K8-CN2</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00517.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/7723.clip_image0051_thumb_52711B45.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/7723.clip_5F00_image0051_5F00_thumb_5F00_52711B45.png"><img title="clip_image0051_thumb" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0051_thumb" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0876.clip_image0051_thumb_thumb_5198B55B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0876.clip_5F00_image0051_5F00_thumb_5F00_thumb_5F00_5198B55B.png" width="592" height="50" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong><em>Note:</em></strong> The VM and VM configuration are both listed. This means if we want to separate the VM entirely we also want to reconfigure the VM configuration to run in it’s own RHS process.</font></p>  <p align="justify"><font size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong>Step 2 – Change VM and VM configuration to run in their own process.</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">By running the following command I was able to change the VM and VM configuration to run in their own RHS process. I chose to do this via PowerShell as this would need to be done for a lot of virtual machines and the GUI would not be practical.</font></p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583">         <p align="justify"><font color="#ffffff" size="2"># Set VM to run in its own RHS process.</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource | ?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | %{$_.SeparateMonitor='True'}</font></p>       </td>     </tr>   </tbody></table>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">Checking in the GUI I can see the relevant tick box has now been set</font>&#160;</p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00614.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3513.clip_image0061_thumb2_37584C37.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3513.clip_5F00_image0061_5F00_thumb2_5F00_37584C37.png"><img title="clip_image0061_thumb2" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0061_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3581.clip_image0061_thumb2_thumb_3CC6BCDB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3581.clip_5F00_image0061_5F00_thumb2_5F00_thumb_5F00_3CC6BCDB.png" width="580" height="354" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Running the following PowerShell command will give me the list of processes the VM and VM configuration are running in</font></p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583"><font color="#2a2a2a" size="2"></font>&#160; <p align="left"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per VM basis</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource |?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">This is the output of the above command. From this I can see that both the VM and VM configuration are running on the RHS process with ID 2092 on host W2K8-CN2. Therefore setting the VM and VM configuration to run their own RHS process has no impact on the VM or VM configuration </font></p>  <p align="justify"><font size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00524.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1778.clip_image0052_thumb2_749900FE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1778.clip_5F00_image0052_5F00_thumb2_5F00_749900FE.png"><img title="clip_image0052_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0052_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/2330.clip_image0052_thumb2_thumb_0192E110.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/2330.clip_5F00_image0052_5F00_thumb2_5F00_thumb_5F00_0192E110.png" width="580" height="49" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font size="2"><strong>Step 3 – Live migrate VM to spawn a new RHS process</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2">In order to start the resource in a new RHS process the resource group needs to be moved to another node. Fortunately for a VM we can perform a Live Migration therefore the VM can start in a new RHS process <strong>without</strong> downtime.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong><em>Note:</em></strong> Both the VM and VM configuration should start in their own new process.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Running the following PowerShell command (once the VM has been live migrated) will give me the list of processes the VM and VM configuration are running in</font></p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583"><font color="#2a2a2a" size="2"></font>&#160; <p align="left"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per VM basis</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource |?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="left"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="left"><font color="#2a2a2a" size="2">This is the output of the above command. I can see that both the VM and VM configuration are now running in their own processes.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00714.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/6131.clip_image0071_thumb2_799B3EAD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/6131.clip_5F00_image0071_5F00_thumb2_5F00_799B3EAD.png"><img title="clip_image0071_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0071_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/7711.clip_image0071_thumb2_thumb_316D82D1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/7711.clip_5F00_image0071_5F00_thumb2_5F00_thumb_5F00_316D82D1.png" width="580" height="47" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">I can also see four RHS processes on W2K8-CN1</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00815.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0755.clip_image0081_thumb3_02A7CA2F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0755.clip_5F00_image0081_5F00_thumb3_5F00_02A7CA2F.png"><img title="clip_image0081_thumb3" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0081_thumb3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5141.clip_image0081_thumb3_thumb_62208A7C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5141.clip_5F00_image0081_5F00_thumb3_5F00_thumb_5F00_62208A7C.png" width="349" height="62" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font size="2"><strong>Step 4: What happens to the RHS process after Live Migration?</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2">We need to determine what happens to the RHS processes once the virtual machine has been live migrated to another node in the cluster. </font><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">The VM was live migrated to another host and this is what I saw on the new host. The processes are different as to what they were on the previous node.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image00913.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/6237.clip_image0091_thumb2_568ACD3D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/6237.clip_5F00_image0091_5F00_thumb2_5F00_568ACD3D.png"><img title="clip_image0091_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0091_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/8371.clip_image0091_thumb2_thumb_63F0E043.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/8371.clip_5F00_image0091_5F00_thumb2_5F00_thumb_5F00_63F0E043.png" width="580" height="47" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font size="2">The below shows there are four RHS processes on W2K8-CN3 which is as you would expect as the VM had been live migrated to that node. The previous host W2K8-CN1 still has four RHS processes. This implies that the live migration spawned new processes on the destination host but nothing removed the RHS processes from the original host.</font></p>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on new server (W2K8-CN3)</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01014.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0250.clip_image0101_thumb2_06D1A1F4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0250.clip_5F00_image0101_5F00_thumb2_5F00_06D1A1F4.png"><img title="clip_image0101_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0101_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5148.clip_image0101_thumb2_thumb_7B3BE4B4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5148.clip_5F00_image0101_5F00_thumb2_5F00_thumb_5F00_7B3BE4B4.png" width="349" height="65" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on new server (W2K8-CN1)</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01114.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1348.clip_image0111_thumb2_337A5BCD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1348.clip_5F00_image0111_5F00_thumb2_5F00_337A5BCD.png"><img title="clip_image0111_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0111_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3173.clip_image0111_thumb2_thumb_6BB8D2E5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3173.clip_5F00_image0111_5F00_thumb2_5F00_thumb_5F00_6BB8D2E5.png" width="349" height="63" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">I needed to determine what was running in those RHS process and the following command shows me just that.</font></p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583">         <p align="left"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per cluster basis</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="justify">&#160;</p>  <p align="left"><font color="#2a2a2a" size="2">This is the output. Although the two processes for VM and VM configuration on W2K8-CN1 are still up they are not running any resources (3160 &amp; 3424).</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01214.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1462.clip_image0121_thumb2_24492D4D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1462.clip_5F00_image0121_5F00_thumb2_5F00_24492D4D.png"><img title="clip_image0121_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0121_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3000.clip_image0121_thumb2_thumb_61F61509.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3000.clip_5F00_image0121_5F00_thumb2_5F00_thumb_5F00_61F61509.png" width="580" height="169" /></a></font>&#160;</p>  <p align="justify"><font size="2"><strong>Step 5: Live migrate the VM back to the previous host</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Live migrate the virtual machine back to W2K8-CN1 which is where the first processes were spawned to isolate the VM and VM configuration </font></p>  <p align="justify"><font color="#2a2a2a" size="2">The clippings below show that both hosts still have four RHS processes running.</font></p>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on W2K8-CN1</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01314.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3755.clip_image0131_thumb2_26C2393E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3755.clip_5F00_image0131_5F00_thumb2_5F00_26C2393E.png"><img title="clip_image0131_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0131_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3162.clip_image0131_thumb2_thumb_25E9D354.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3162.clip_5F00_image0131_5F00_thumb2_5F00_thumb_5F00_25E9D354.png" width="349" height="62" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on W2K8-CN3</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01415.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0844.clip_image0141_thumb3_12C8A6A8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0844.clip_5F00_image0141_5F00_thumb3_5F00_12C8A6A8.png"><img title="clip_image0141_thumb3" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0141_thumb3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/2273.clip_image0141_thumb3_thumb_5D4FE482.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/2273.clip_5F00_image0141_5F00_thumb3_5F00_thumb_5F00_5D4FE482.png" width="349" height="61" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">I ran the following command to check the RHS process for the VM and VM configuration .</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583">         <p align="left"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per VM basis</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource |?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="left">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">I can see that the process which were originally used are re-used for the VM and VM configuration .</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01514.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0523.clip_image0151_thumb2_09F89E5C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0523.clip_5F00_image0151_5F00_thumb2_5F00_09F89E5C.png"><img title="clip_image0151_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0151_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5381.clip_image0151_thumb2_thumb_48EA1EF7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5381.clip_5F00_image0151_5F00_thumb2_5F00_thumb_5F00_48EA1EF7.png" width="580" height="45" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong>Step 6: Remove the Isolation and see what happens.</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2">The following command should remove the isolation but it does not work</font></p>  <p align="justify">&#160;</p>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583">         <p align="left"><font color="#ffffff" size="2"># Set VM to run in in default RHS process. i.e. remove isolation</font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource | ?{$_.OwnerGroup -like &quot;W2K8R2-Node1&quot;} | %{$_.SeparateMonitor='False'}</font></p>       </td>     </tr>   </tbody></table>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">Instead I had to use the cluster.exe command line to remove the isolation checkbox. This has to be done for both the VM and VM configuration </font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Remove resource isolation for VM</font></p>  <table bordercolor="black" bordercolordark="white" width="100%" bgcolor="black" bordercolorlight="white" border="1"><tbody>     <tr>       <td><font color="#ffffff" size="2">C:\&gt; cluster res &quot;Virtual Machine W2K8R2-Node1&quot; /prop SeparateMonitor=0</font></td>     </tr>   </tbody></table>  <p align="justify"><font color="#2a2a2a" size="2">Remove resource isolation for VM configuration</font></p>  <table bordercolor="black" bordercolordark="white" width="100%" bgcolor="black" bordercolorlight="white" border="1"><tbody>     <tr>       <td><font color="#ffffff" size="2">C:\&gt; cluster res &quot;Virtual Machine Configuration W2K8R2-Node1&quot; /prop SeparateMonitor=0</font></td>     </tr>   </tbody></table>  <p align="justify"><font color="#2a2a2a" size="2">We can now see the check box has been removed from the settings.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01615.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/2664.clip_image0161_thumb3_32B403A5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/2664.clip_5F00_image0161_5F00_thumb3_5F00_32B403A5.png"><img title="clip_image0161_thumb3" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0161_thumb3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5488.clip_image0161_thumb3_thumb_45F4BA44.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5488.clip_5F00_image0161_5F00_thumb3_5F00_thumb_5F00_45F4BA44.png" width="580" height="355" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font size="2"><strong>Step 7: Live migrate to see if processes are removed</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2">Live migrate to another node and notice what happens to the RHS processes on the source server.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS Processes on original host after VM has been live migrated still remains at four.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS Process on W2K8-CN1</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01714.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/2158.clip_image0171_thumb2_3D90E4ED.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/2158.clip_5F00_image0171_5F00_thumb2_5F00_3D90E4ED.png"><img title="clip_image0171_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0171_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/0488.clip_image0171_thumb2_thumb_6AA5D1BB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/0488.clip_5F00_image0171_5F00_thumb2_5F00_thumb_5F00_6AA5D1BB.png" width="349" height="61" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS Process on W2K8-CN3 - where the VM was live migrated to has changed to two.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01814.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/4380.clip_image0181_thumb2_352D0F96.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/4380.clip_5F00_image0181_5F00_thumb2_5F00_352D0F96.png"><img title="clip_image0181_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0181_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/4300.clip_image0181_thumb2_thumb_4293229C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/4300.clip_5F00_image0181_5F00_thumb2_5F00_thumb_5F00_4293229C.png" width="349" height="31" /></a></font></p>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2"><strong>Step 8: Live migrate back to original node</strong></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font>&#160;</p>  <p align="justify"><font size="2">Live migrate the VM back to the original node. This should then only be using the default RHS process and the number of RHS processes running should drop from four to two.</font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on W2K8-CN1</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01915.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/4606.clip_image0191_thumb3_220BE2EA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/4606.clip_5F00_image0191_5F00_thumb3_5F00_220BE2EA.png"><img title="clip_image0191_thumb3" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0191_thumb3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3716.clip_image0191_thumb3_thumb_6C9320C4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3716.clip_5F00_image0191_5F00_thumb3_5F00_thumb_5F00_6C9320C4.png" width="349" height="32" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong><em>Note:</em></strong> We now have only two RHS processes</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">RHS processes on all hosts</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN1</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image01924.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5751.clip_image0192_thumb2_4C0BE112.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5751.clip_5F00_image0192_5F00_thumb2_5F00_4C0BE112.png"><img title="clip_image0192_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0192_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3223.clip_image0192_thumb2_thumb_2B84A160.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3223.clip_5F00_image0192_5F00_thumb2_5F00_thumb_5F00_2B84A160.png" width="349" height="32" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN2</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image02014.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/8562.clip_image0201_thumb2_0AFD61AE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/8562.clip_5F00_image0201_5F00_thumb2_5F00_0AFD61AE.png"><img title="clip_image0201_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0201_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/4278.clip_image0201_thumb2_thumb_6A7621FB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/4278.clip_5F00_image0201_5F00_thumb2_5F00_thumb_5F00_6A7621FB.png" width="349" height="32" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">W2K8-CN3</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image02114.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/5355.clip_image0211_thumb2_49EEE249.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/5355.clip_5F00_image0211_5F00_thumb2_5F00_49EEE249.png"><img title="clip_image0211_thumb2" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0211_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/8463.clip_image0211_thumb2_thumb_05424808.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/8463.clip_5F00_image0211_5F00_thumb2_5F00_thumb_5F00_05424808.png" width="349" height="31" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2">The following command checks what is running in each RHS process</font></p>  <p align="justify"><font size="2"></font>&#160;</p> <font color="#ffffff"></font><font color="#ffffff"></font>  <table bordercolor="black" bordercolordark="white" width="585" bgcolor="#000040" bordercolorlight="white" border="0"><tbody>     <tr>       <td width="583">         <p align="justify"><font color="#ffffff" size="2">#Get a list of VMs and correlate to RHS.exe process on a per cluster basis</font></p>          <p align="justify"><font color="#ffffff" size="2"></font></p>          <p align="left"><font color="#ffffff" size="2">PS C:\&gt; Get-ClusterResource | ft Cluster, OwnerNode, OwnerGroup, SeparateMonitor, ResourceType, @{Label='RHS Process ID';Expression={$_.MonitorProcessID}} -AutoSize</font></p>       </td>     </tr>   </tbody></table>  <p align="justify">&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2">This is the output. All VMs and VM configuration are running in the default RHS processes.</font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><a href="file:///C:/Users/aevals/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles391C498/clip_image02213.png"><font color="#2a2a2a" size="2"></font></a><font color="#2a2a2a" size="2"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/1122.clip_image0221_thumb2_4F5D52ED.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/1122.clip_5F00_image0221_5F00_thumb2_5F00_4F5D52ED.png"><img title="clip_image0221_thumb2" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="clip_image0221_thumb2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/metablogapi/3276.clip_image0221_thumb2_thumb_4DAC8719.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95-metablogapi/3276.clip_5F00_image0221_5F00_thumb2_5F00_thumb_5F00_4DAC8719.png" width="580" height="162" /></a></font></p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>  <p align="justify"><font color="#2a2a2a" size="2"><strong>Conclusion</strong></font></p>  <p align="justify"><font size="2">From the above testing I determined that the virtual machines can be isolated to their own RHS processes without causing any downtime. The VM can be live migrated from node to node and it will remain isolated from the default RHS process. The VM configuration also needs to be isolated.</font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p align="justify"><font size="2">There is still more testing to be done in terms of the RHS processes still running but not running any VM or VM configuration. I suspect this is by design of the cluster and an RHS process will only terminate if the thorough health check (IsAlive previously) fails. </font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p align="justify"><font size="2">This in itself posses some questions as there is nothing running inside the process therefore the health check will not run and therefore the process will not be terminated.</font></p>  <p align="justify"><font size="2">Scaling this up to a hundred virtual machines means in the cluster there will be 200 RHS processes running split over the cluster nodes. There could potentially be more as once a VM has been live migrated and spawns a new RHS process this is not terminated if the VM is live migrated again.</font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p align="justify"><font size="2">As you can see further testing needs to be done but this at least proves there is a way to achieve isolation without downtime. If running a lot of RHS processes does not impact performance then it may be feasible. Do these additional RHS processes cause an impact on the cluster itself especially with the health checks and the logging of information?</font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p align="justify"><font size="2">Depending on how my customer decides to proceed I will post an update with any further testing scenarios and results.</font></p>  <p align="justify"><font size="2"></font>&#160;</p>  <p><font size="2">Aeval</font></p>  <p><font size="2">Premier Field Engineer - Failover Clustering &amp; Virtualisation</font></p>  <p align="justify"><strong><font size="2"></font></strong>&#160;</p>  <p align="justify"><font color="#2a2a2a" size="2"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server 2008 R2 Failover Clustering - Best Practice Guide</title>
      <link>https://docs.microsoft.com/archive/blogs/aevalshah/windows-server-2008-r2-failover-clustering-best-practice-guide</link>
      <pubDate>Tue, 15 May 2012 07:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Aeval Shah]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/aevalshah/2012/05/15/windows-server-2008-r2-failover-clustering-best-practice-guide/</guid>
      <description><![CDATA[Overview
Hi everyone, this article is aimed at providing a best practice guide for building a...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;"><strong>Overview</strong></p>
<p style="text-align: justify;">Hi everyone, this article is aimed at providing a best practice guide for building a Windows Server 2008 R2 Failover Cluster. The article provides details on hardware and software pre-requisites and configuration best practices. This guide also provides best practices for different areas of Failover Clustering configuration i.e. storage and network.</p>
<p style="text-align: justify;"><strong>Pre-requisites for Failover Clustering</strong><br /><strong>Hardware Requirements</strong></p>
<p style="text-align: justify;">It is recommended to use servers with the same or similar hardware components. You should only use hardware that is compatible with Windows Server 2008 R2. Depending on the cluster you are building you will need multiple network cards and or HBAs. Be sure to finalise the architecture prior to purchasing hardware to ensure you have everything you need before you start building the cluster.</p>
<p style="text-align: justify;"><strong>Network Adapters</strong></p>
<p style="text-align: justify;">The hardware component must be compatible with Windows Server 2008 R2. If you use iSCSI the network adapters must be dedicated to either network communications or iSCSI.</p>
<p style="text-align: justify;">Ensure the network infrastructure that connects your cluster to the network has redundancies built in. This could mean multiple network cards (teamed), multiple switches and multiple routers. The purpose of this is to ensure there is no single point on failure in the network infrastructure.</p>
<p style="text-align: justify;"><strong>Storage Adapters</strong></p>
<p style="text-align: justify;">It is recommended to use identical host bus adapters (HBA) to communicate with the storage. The drivers and firmware should also be identical. If you want to use different HBA&rsquo;s verify this with your hardware vendor. Multi-Path I/O software also needs to be identical on the cluster nodes. Windows Server 2008 R2 only supports SCSI Primary Commands-3 (SPC-3) therefore the backend storage must also be compatible with this. Parallel SCSI is no longer supported therefore check your storage specifications prior to building your cluster.</p>
<p style="text-align: justify;">You must ensure that the HBA or network card used is dedicated to the storage. The network used for iSCSI cannot be used for network communications. You cannot use teamed network adapters because they are not supported with iSCSI.</p>
<p style="text-align: justify;"><strong>Storage</strong></p>
<p style="text-align: justify;">You must use storage that is compatible with Windows Server 2008 R2. Failover clustering natively supports basic disks. To you use dynamic disks you will need to speak to your hardware vendor and use any software provided by them for dynamic disks.</p>
<p style="text-align: justify;">The partition style must be either master boot record (MBR) or GUID partition table (GPT). The file system is recommended to be NTFS. The witness disk must be formatted with NTFS.</p>
<p style="text-align: justify;"><strong>Storage Area Network (SAN) Storage</strong></p>
<p style="text-align: justify;">Ensure the SAN is compatible with Windows Server 2008 R2. Ensure the storage drivers, firmware and software is compatible with Failover Clustering. The storage must support SCSI Primary Commands-3 (SPC-3). In particular, the storage must support Persistent Reservations as specified in the SPC-3 standard. The miniport driver used for the storage must work with the Microsoft Storport storage driver.<br />Storage should be isolated to a cluster in that a LUN provided to a cluster must not be accessible from another cluster through zoning and masking. If you can have a SAN dedicated for a cluster that would be even better.</p>
<p style="text-align: justify;">Consider using multi path I/O which provides the highest level of redundancy and availability.</p>
<p style="text-align: justify;"><strong>Software Requirements</strong></p>
<p style="text-align: justify;">The servers participating In Failover Clustering must be running the same version of Windows Server 2008 R2 that supports the feature. Service packs, patches and hot fixes must be at the same level on all nodes. Mixing of full server installations and Core server installations is not supported.</p>
<p style="text-align: justify;"><strong>Network Settings</strong></p>
<p style="text-align: justify;">Network adapters should ideally be identical for each network and it is recommended the configuration of the adapters be the same i.e. speed &amp; duplex settings. This will ensure the network does not behave differently on different cluster nodes. Each private network not routed to the main network infrastructure should be assigned a unique subnet.</p>
<p style="text-align: justify;"><strong>DNS</strong></p>
<p style="text-align: justify;">DNS must be running on the network and the cluster nodes must be using DNS for name resolution. When <br />objects are created in Active directory and DHCP is in use on the cluster nodes the relevant A records will also be created in DNS.</p>
<p style="text-align: justify;"><strong>Domain Role</strong></p>
<p style="text-align: justify;">Each cluster node should be in the same Active Directory domain and they should all be running using the same role. It is recommended than each node in the clusters is a member server of the same domain.</p>
<p style="text-align: justify;"><strong>Administrative Account</strong></p>
<p style="text-align: justify;">The account used to build and create the cluster must have full administrative access on the cluster nodes. A domain user account can be used but it must have Create Computer Objects and Read All Properties rights on the domain.</p>
<p style="text-align: justify;">The account used to build the cluster will also be used to create the Computer Name Object and therefore needs the permissions mentioned above.</p>
<p style="text-align: justify;"><strong>Server Setup &amp; Configuration</strong></p>
<p style="text-align: justify;">The following sections talks about the general server configuration in terms of hardware and software. It is recommended to understand the pre-requisites before reading the following sections.</p>
<p style="text-align: justify;"><strong>General Guidance</strong></p>
<p style="text-align: justify;">All nodes participating in a cluster should be identical. That is they should have the same configuration at the software level and at the hardware level. Although having identical hardware is not a pre-requisite it is recommended as it makes life easier for the server administrator when updating drivers as the same one can be used on all the nodes. It also provides consistency to the cluster.</p>
<p style="text-align: justify;">Changes made to a node must be replicated to all other nodes of the same cluster. Any changes made should be tested in a test environment first before changes are made to production nodes.</p>
<p style="text-align: justify;"><strong>Hardware Configuration</strong></p>
<p style="text-align: justify;">Specific hardware is no longer required however the cluster must pass validation i.e. no errors detected to be officially supported. In a geographically dispersed cluster as there is no shared storage you will see errors in the validation report but this is expected and the cluster will still be supported.</p>
<p style="text-align: justify;">It is highly recommended to remove all single points of failure in terms or hardware and infrastructure.</p>
<p style="text-align: justify;">P<strong>ower Supply</strong></p>
<p style="text-align: justify;">It is recommended that all cluster nodes have 2 or more power supplies to provide redundancy.<br />If a node has multiple power supplies each power supply should be connected to a different power source to help prevent any power issues from taking out the node. Each node in the cluster should use a different power source to ensure that a single power strip does not take out the whole cluster.</p>
<p style="text-align: justify;">Data centre infrastructure should also allow for total power loss and should have measures in place to provide power from UPS and/or on site generators.</p>
<p style="text-align: justify;"><strong>Network Switches</strong></p>
<p style="text-align: justify;">Having two switches for a network allows the cluster nodes to connect to the LAN and provides redundancy from a network point of view.</p>
<p style="text-align: justify;">For each network available (especially the public &ndash; client facing network) two network switches should be used for the cluster nodes to ensure a switch failure does not disrupt network communications.</p>
<p style="text-align: justify;">If you are using iSCSI for storage the cluster should be connected to this network using multiple redundant switches to ensure the backed storage is always accessible.</p>
<p style="text-align: justify;"><strong>Host Bus Adapters (HBAs)</strong></p>
<p style="text-align: justify;">It is recommended to use multiple single HBAs to connect to the backend storage. Dual HBAs can be a single point of failure as although they provide a multi-path to the storage a failure of the HBA can disconnect the node from the storage. Each HBA should be using a separate network infrastructure to connect to the SAN(s).</p>
<p style="text-align: justify;"><strong>Boot from SAN</strong></p>
<p style="text-align: justify;"><strong>Operating System Configuration</strong></p>
<p style="text-align: justify;">Setting up the operating system correctly can increase performance and reliability. Additionally in the event of an operating system error the system can record activities and performance information to help troubleshoot and aid in root cause analysis. In order to capture this information performance monitoring and kernel debugging must be set accordingly.</p>
<p style="text-align: justify;"><strong>Page File Configuration</strong></p>
<p style="text-align: justify;">It is good practice to place the page file on another partition other than the boot partition; however, in previous versions of Windows this configuration would not allow you to capture a memory dump. In Windows Server 2008 R2 the page file can be located on another partition which is not the same as the boot partition and will still capture memory dumps.</p>
<p style="text-align: justify;">The Min and Max sizes of the page file should be set to the same value in order to improve performance. Having the Min and Max sizes different can result in slow system performance if the page file has to grow. The page file can become fragmented due to not having contiguous disk space to use and would have to place the data elsewhere on the disk.</p>
<p style="text-align: justify;">The page file can be located on another LUN in cases where the boot partition is small or where the node is booting from SAN.</p>
<p style="text-align: justify;"><strong>Kernel Memory Dumps</strong></p>
<p style="text-align: justify;">It is recommended to configure each cluster node to capture a kernel memory dump. A kernel memory dump captures the memory being used by the kernel at the time when the system stops unexpectedly. This information can be useful for troubleshooting and determining the root cause.</p>
<p style="text-align: justify;">By default memory dumps are overwritten i.e. if a stop error occurs again the previous dump file will no longer exist. It is advisable to either copy the dump file to another machine for analysis or configure the server to not overwrite existing dump files.</p>
<p style="text-align: justify;"><strong>Service Packs, Hotfixes &amp; Critical Updates</strong></p>
<p style="text-align: justify;">Service packs need to be installed on each node of the cluster so that each node is on the same service pack level. This ensures device drivers, services and executable files are the same version. Hotfixes &amp; Critical updates should also be installed on each cluster node to ensure any device drivers, services and executable files are the same version. Ensure any update installed is tested in a test environment first before deploying it to production.</p>
<p style="text-align: justify;"><strong>Device Drivers</strong></p>
<p style="text-align: justify;">There are many device drivers on a system and it is highly recommended to ensure that these driver versions are consistent across all nodes of a cluster. Differences in driver versions can cause instability on a cluster and can impact the availability.<br />Software installed on a cluster node may also install a driver and this also needs to be mirrored across all nodes. If tools are used for troubleshooting which install drivers these should be removed once the troubleshooting has completed to ensure consistency between the cluster nodes.</p>
<p style="text-align: justify;"><strong>Roles, Role Services &amp; Features</strong></p>
<p style="text-align: justify;">Each role, role service and feature required in a cluster should be installed on each node in the cluster. If a role, role service or feature is removed from a cluster node it should also be removed from all other cluster nodes.</p>
<p style="text-align: justify;"><strong>Installed Services</strong></p>
<p style="text-align: justify;">All services should be identical on each node of the cluster. Any services required for the cluster must be installed on all nodes of the cluster.</p>
<p style="text-align: justify;"><strong>Performance Baselines</strong></p>
<p style="text-align: justify;">Once the cluster is in production it is good to run performance monitoring for a period of time to understand the server load. This can be used as a base line and you can compare future performance data to this base line and see where the performance has changed.</p>
<p style="text-align: justify;"><strong>Black Box Monitoring</strong></p>
<p style="text-align: justify;">It is recommended to have monitoring running on all your cluster nodes. This monitoring should be setup so all the relevant counters are logging information to a binary file. Circular logging should also be used to overwrite previous data. This also ensures the captured data file does not grow too large and therefore does not eat up disk space. This black box monitoring is useful when a performance issue occurs as rather than wait for performance data to be gathered once an issue has been raised the performance data is already to hand.</p>
<p style="text-align: justify;">The captured data can also be compared to a server baseline to see what the impact on the server is over time i.e. adding more highly available services or adding more users which consume the services.</p>
<p style="text-align: justify;"><strong>Anti-Virus Configuration</strong></p>
<p style="text-align: justify;">Anti-virus products can interfere with the performance of a server and can cause issues with the cluster. The anti-virus should be configured to exclude the cluster specific resources on each cluster node. The following should be excluded on each cluster node;</p>
<p style="text-align: justify;">(1) A witness disk if used<br />(2) A file share witness if used<br />(3) The cluster folder %systemroot%\cluster on all cluster nodes</p>
<p style="text-align: justify;"><strong>Network Setup &amp; Configuration</strong></p>
<p style="text-align: justify;">There should be adequate networks configured for the cluster to ensure there is no bottle neck for users, <br />cluster nodes and storage. Depending on the purpose of the cluster you may need an additional network for Hyper-V Live Migration.</p>
<p style="text-align: justify;">Follow the pre-requisites to ensure you are following the best practices for network configuration. The binding orders of the network should be set accordingly. Typically you have the bindings in the following order Public, Private, Storage and Live Migration.</p>
<p style="text-align: justify;"><strong>Public</strong></p>
<p style="text-align: justify;">The public network is the network which clients will connect to gain access to the highly available resources on the cluster. This network will be connected to the main network infrastructure in your organization. This is automatically selected when the cluster is built by determining which network has a default gateway.</p>
<p style="text-align: justify;"><strong>Private</strong></p>
<p style="text-align: justify;">All networks in a cluster are used for intra cluster communication. You can fine tune this to ensure intra cluster communication uses a specific network and can fall back to another network if required. The private network should also be used for management tasks ensuring no additional overhead is being added to the public, storage and Live Migration networks.</p>
<p style="text-align: justify;"><strong>Storage</strong></p>
<p style="text-align: justify;">If you are using an iSCSI network this network must be dedicated for storage. You should also consider using NIC teaming for additional redundancy.</p>
<p style="text-align: justify;"><strong>Heartbeat</strong></p>
<p style="text-align: justify;">The heartbeat for the cluster nodes is set by default to send a heartbeat every second. The heartbeat configuration also by default will allow five missed heartbeats before a cluster node is deemed as unavailable. This can be configured to increase the interval and increase/decrease the threshold. This is of particular interest when using a high latency network (WAN) when implementing a geographically dispersed cluster.</p>
<p style="text-align: justify;"><strong>Live Migration</strong></p>
<p style="text-align: justify;">When using Hyper-V in a Failover Cluster you may want to use the Live Migration feature. This requires a dedicated 1GB network to copy the system state and memory pages from one cluster node to another when Live Migration is initiated. Live migration is used for planned maintenance and cannot be used for unplanned outages.</p>
<p style="text-align: justify;">The Hyper-V guests themselves should be location on a Cluster Shared Volume to assist with Live Migration and to ensure the VM is not taken offline to move a cluster disk to another node.</p>
<p style="text-align: justify;"><strong>Storage Configuration</strong></p>
<p style="text-align: justify;">Ensure all HBAs on all nodes are at same hardware devices and ensure the firmware/driver for the HBA is the same version. Speak to your storage vendor with regards to drivers versions. Also read any documentation regarding the driver as it will probably highlight which version of the storport.sys driver is required.</p>
<p style="text-align: justify;">Speak to your hardware vendor/engineer to implement LUN masking or Zoning to ensure that LUNS are isolated from each other. Ideally each cluster should be backed up by a dedicated SAN and it is recommended to have multiple independent paths to the storage.</p>
<p style="text-align: justify;">If you are implementing an iSCSI solution for the storage it is recommended to use dedicated network interface cards so the storage traffic is independent of the public facing and intra cluster communication networks.</p>
<p style="text-align: justify;"><strong>Cluster Setup &amp; Configuration</strong><br /><strong>Cluster Validation Wizard</strong></p>
<p style="text-align: justify;">The cluster validation wizard should be run before the initial cluster build takes place and it should also be run once you have completed building and configuring your cluster. It is also recommended to run the wizard every time to make a change to the cluster.</p>
<p style="text-align: justify;">The storage tests will fail once the cluster is in production as the tests will not offline any disks that are in use unless explicitly told to do so. It is recommended to have a small LUN present on the cluster which is not is use so the storage tests can take place. This will ensure there are no issues with the storage and arbitration.</p>
<p style="text-align: justify;"><strong>Quorum Models</strong></p>
<p style="text-align: justify;">The quorum model is automatically selected when you initially build the cluster. You can make changes to the quorum model on the fly without impacting the cluster. Always check the current quorum model so you are aware of what it is and check the chosen model against the recommended model.</p>
<p style="text-align: justify;"><strong>Witness Resource</strong></p>
<p style="text-align: justify;">Depending on the architecture of the cluster you may want to implement a witness resource in the form of a witness disk or a file share witness. The witness disk should be 512MB in size (can be larger for large and print file clusters).</p>
<p style="text-align: justify;">A file share witness is recommended for geographically dispersed clusters where there is no shared storage. The witness disk will contain a backup of the cluster database and this will be loaded as a 0.cluster hive on the node which currently owns the witness disk.</p>
<p style="text-align: justify;">The file share witness does not keep a copy of the cluster database. Instead it maintains a log of the Paxos tag to provide versioning.</p>
<p style="text-align: justify;">A single file share witness can be used by multiple clusters. It is recommended to make the file share witness highly available in its own cluster to provide the additional vote for multiple clusters. Within the file share witness folder a new folder will be created for each cluster so the data is isolated.</p>
<p style="text-align: justify;"><strong>Core Cluster Group</strong></p>
<p style="text-align: justify;">The cluster group should only contain the Network Name, IP and witness disk resources (if required). No other resource should be in this group. If you are using software provided by the storage vendor you may have an additional resource within this group which is acceptable.</p>
<p style="text-align: justify;">The dependencies for these resources should not be altered unless your storage vendor advises you to due to the software used to manage/provide LUNs to the cluster.</p>
<p style="text-align: justify;"><strong>Other Groups</strong></p>
<p style="text-align: justify;">Most of the advanced settings should be left at their defaults unless specifically recommended by Microsoft or third party vendors.</p>
<p style="text-align: justify;">Affect the group should only be cleared if the resource is non-critical i.e. secondary network is used for backups and this network allows client access for backup purposes only. As a result of this network failing, if you do not want the whole group to failover uncheck affect the group.</p>
<p style="text-align: justify;">All resources should have all nodes listed in the Possible Owners list. You can set anti affinity rules to ensure groups are kept on separate cluster nodes to ensure the services remain highly available and that the cluster nodes split the load evenly.</p>
<p style="text-align: justify;">Run this resource in a separate Resource Monitor should not be selected unless recommended by Microsoft for troubleshooting or by a 3rd party vendor for a specific reason. Anti-Affinity can be used to ensure the services are dispersed among the cluster nodes.</p>
<p style="text-align: justify;"><strong>Chkdsk on Cluster Disks</strong></p>
<p style="text-align: justify;">When cluster disks states are changed to online pending (i.e. when a failover is initiated or when a group is moved) the system will check the dirty bit on the disk and see if it is set. If the dirty bit has been set the disk will remain in an online pending state whilst chkdsk is run on the entire volume.</p>
<p style="text-align: justify;">This can lead to a significant amount of downtime and therefore should be avoided. You should plan on a monthly or quarterly basis to have a maintenance window during which you can manually check the dirty bit ad run chkdsk on the relevant volume(s). Below is a list of the options you can set using PowerShell or Cluster.exe.</p>
<table style="width: 778px; height: 167px;" border="0">
<tbody>
<tr>
<td>Value</td>
<td>Description</td>
</tr>
<tr>
<td style="text-align: center;">0 (Default)&nbsp;&nbsp;&nbsp;</td>
<td>ShallowCheck open files in root of volume. Check dirty bit</td>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td>FullCheck recursively on all files. Check dirty bit</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td>Run chkdsk every time the volume is mounted</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td>ShallowCheck. If corrupt run chkdsk. If not corrupt run chkdsk in read-only mode. Online will proceed when chkdsk is running in read-only mode</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td>Never run chkdsk</td>
</tr>
<tr>
<td style="text-align: center;">5</td>
<td>FullCheck. If corrupt do not bring online. User intervention required.</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;"><strong>Anti-Affinity</strong><strong></strong></p>
<p style="text-align: justify;">To ensure groups do not end up on the same node set the AntiAffinityClassName of the group. You can set this to the same string value for all groups you do not want to appear on the same node.</p>
<p style="text-align: justify;"><strong>Network Priority</strong></p>
<p style="text-align: justify;">The network priority should be set for each network participating in the cluster. The metric value on the network represents a cost which determines which network to use for what communication.</p>
<p style="text-align: justify;">By default the network that has been assigned a default gateway will have a metric value of 10,000. Other networks without a gateway defined will be assigned a value of between 1000 and 10,000. The first network without a gateway will be given a metric value of 1000 and subsequent networks will be given values in increments of 100 i.e. 1100, 1200, 1300.</p>
<p style="text-align: justify;">Intra cluster communication occurs on networks that have the lower metric value i.e. cost. You need to set the iSCSI and Live Migration networks metric value higher than the private network. If the private network is down the next available network with the lowest will be used.</p>
<p style="text-align: justify;">Set the network priorities according to the network design in your environment.</p>
<p style="text-align: justify;"><strong>Failover/Failback Policies</strong></p>
<p style="text-align: justify;">All nodes must be able to run load that might be on them so if you have printers installed ensure the drivers are on all cluster nodes to ensure the printer can operate after a failover to any node. There should also be enough capacity in terms of resources available on a node to take on additional capacity from other nodes.<br />&nbsp;<br />Failback causes another outage, however small and therefore it is recommended to set this to occur outside of normal working hours. In a 24x7 operation this may not be acceptable and therefore you should disable failback altogether.<br />Always test failover and failback prior to production to ensure each node can host the services without issue.</p>
<p style="text-align: justify;"><strong>Security Considerations</strong></p>
<p style="text-align: justify;">A dedicated account to run the cluster service is no longer required. Instead a cluster name object (CNO) is created in Active Directory when the cluster is built. All further security checks are performed using the context of the CNO.</p>
<p style="text-align: justify;">A domain admin account is required to build the cluster as it is this account that creates the CNO. Once the CNO has been created all further virtual computer objects (VCO) are created using the CNO. As with any Active Directory user there is a limit of 10 imposed on the number objects an account can create. This will need to be changed if you need the CNO to create more than 10 VCO&rsquo;s.</p>
<p style="text-align: justify;">The CNO object can be pre-staged prior to building the cluster. The pre-staged CNO needs to be set to disabled in order for the newly built cluster to use it.</p>
<p style="text-align: justify;">You can now also set permissions on the cluster to allow users to view the cluster configuration in with read-only privileges.</p>
<p style="text-align: justify;"><strong>Patch Management</strong></p>
<p style="text-align: justify;">Installing patches on a cluster can be challenging as there will be a period of time when the cluster nodes are out of sync. It is recommended to install the patches on a test cluster before deploying the updates to the production cluster. This ensures that any adverse effects are seen before impacting production.</p>
<p style="text-align: justify;">Hotfixes are designed to address specific issues and should only be installed if you are facing the symptoms described in the relevant hotfix knowledge base article.</p>
<p style="text-align: justify;">Security Updates should be installed as they are released by Microsoft. Once Microsoft has released the security updates these should be tested in a test environment and deployed to production once deemed ok.</p>
<p style="text-align: justify;">Always ensure you have full backups which have been tested and verified prior to installing updates to a cluster.</p>
<p style="text-align: justify;">Aeval Shah<br />Premier Field Engineer - Failover Clustering &amp; Hyper-V</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server 2008 R2 Failover Clustering - Avoiding Chkdsk on Failover</title>
      <link>https://docs.microsoft.com/archive/blogs/aevalshah/windows-server-2008-r2-failover-clustering-avoiding-chkdsk-on-failover</link>
      <pubDate>Tue, 15 May 2012 07:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Aeval Shah]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/aevalshah/2012/05/15/windows-server-2008-r2-failover-clustering-avoiding-chkdsk-on-failover/</guid>
      <description><![CDATA[Overview
In Windows Server 2003 if corruption on a physical disk was encountered the chkdsk process...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;"><strong>Overview</strong></p>
<p style="text-align: justify;">In Windows Server 2003 if corruption on a physical disk was encountered the chkdsk process was run to attempt to repair the corruption. The repair attempt would occur when a disk resource was moved or failed over to another cluster node. The disk was taken offline, moved and then would be brought online. During the online stage the disk was checked to see if the dirty bit had been set and if so a chkdsk would be run.</p>
<p style="text-align: justify;">Cluster admins would see the cluster disk in an online pending state. Once the chkdsk was completed the cluster disk would be brought online. Users would not be able to access the shares on the disk and would result in calls to the help desk. If this was a SQL Server installation using the disk SQL Server would not be brought online as it has a dependency on the disk. If this was the quorum disk the whole cluster would be offline until the chkdsk completed.</p>
<p style="text-align: justify;"><strong>New Parameter in Windows Server 2008 R2</strong></p>
<p style="text-align: justify;">In Windows 2008 R2 Failover Clustering is now a new parameter (DiskRunChkDsk) that can be set, using cluster.exe or PowerShell, that determines what action to take if the dirty flag has been set on a cluster disk. The options for the setting are described below.</p>
<table style="width: 657px; height: 178px;" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td><strong>Value</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr>
<td style="text-align: center;">0 (default)</td>
<td>ShallowCheck open files in root of volume. Check dirty bit</td>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td>FullCheck recursively on all files. Check dirty bit</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td>Run chkdsk every time the volume is mounted</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td>ShallowCheck. If corrupt run chkdsk. If not corrupt run chkdsk in read-only mode. Online will proceed when chkdsk is running in read-only mode</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Never run chkdsk</p>
</td>
</tr>
<tr>
<td style="text-align: center;">5</td>
<td>FullCheck. If corrupt do not bring online. User intervention required.</td>
</tr>
</tbody>
</table>
<p><strong>Check Dirty Flag On Disks</strong></p>
<p style="text-align: justify;">There are several ways to check if the disk is marked as dirty on Windows Server 2008 R2. You can do this using a scripting language to interrogate WMI, cluster.exe, PowerShell or FSUtil. I prefer the PowerShell way as you can check all disks which are available on the node from where you run the command.</p>
<p style="text-align: justify;">Checks all logical disks on a node for the dirty bit using PowerShell</p>
<p style="text-align: justify;">Get-WMIObject Win32_LogicalDisk | ft DeviceID, VolumeDirty</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/0005.PS%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/0005.PS-Check-disk-dirty-bit.png"><img width="547" height="53" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/0005.PS%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/0005.PS-Check-disk-dirty-bit.png" border="0" /></a></p>
<p>These commands will allow you to check the dirty bit on a specified disk<br />Chkntfs X:</p>
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/4520.chkntfs%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/4520.chkntfs-Check-disk-dirty-bit.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/4520.chkntfs%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/4520.chkntfs-Check-disk-dirty-bit.png" border="0" /></a></p>
<p>Fsutil dirty query x:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/7041.fsutil%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/7041.fsutil-Check-disk-dirty-bit.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/7041.fsutil%20Check%20disk%20dirty%20bit.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/7041.fsutil-Check-disk-dirty-bit.png" border="0" /></a></p>
<p>For testing you can also manually set the dirty bit of a disk <br />Fsutil dirty set x:</p>
<p><strong>Check &amp; Change the Default Setting</strong></p>
<p style="margin: 0in; text-align: justify; font-family: 'Segoe UI'; font-size: 9.5pt;">By default the parameter has a setting that will run a shallow check on the disk if it is marked as dirty when the disk is brought online. To totally avoid running chkdsk you change the parameter to 4. This will ensure chkdsk is not run even if he dirty bit has been set. You must ensure there are procedures in place to allow you manually check the disks and plan maintenance to run chkdsk on the disks manually if the flag is set.</p>
<p style="margin: 0in; text-align: justify; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; text-align: justify; font-family: 'Segoe UI'; font-size: 9.5pt;">Below are the PowerShell commands to check the parameter and set it's value.</p>
<p style="margin: 0in; text-align: justify; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Check the parameter on a disk</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterResource "&lt;Cluster Disk Name&gt;" | Get-Parameter | fl DiskRunChkDsk</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Example</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterResource "Witness Disk" | Get-Parameter | fl DiskRunChkDsk</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">From the screen shot below we can see the current value of the property DiskRunChkDsk</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/6558.PS%20DiskRunChkDsk%201.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/6558.PS-DiskRunChkDsk-1.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/6558.PS%20DiskRunChkDsk%201.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/6558.PS-DiskRunChkDsk-1.png" border="0" /></a></p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Set the parameter on a disk ( is the x is the number we want to set)</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterResource "&lt;Cluster Disk Name&gt;" | Set-Parameter DiskRunChkDsk = x</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Example</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterResource "Witness Disk" | Set-Parameter DiskRunChkDsk = 4</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">From the screen shot below we can see the current value of the property DiskRunChkDsk has changed to 4</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/4201.PS%20DiskRunChkDsk%202.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/4201.PS-DiskRunChkDsk-2.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/95/4201.PS%20DiskRunChkDsk%202.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-95/4201.PS-DiskRunChkDsk-2.png" border="0" /></a></p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">You can check if the dirty bit has been set on all CSV volumes using the command</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-WMIObject Win32_Volume | ft Caption, DirtyBitSet -autosize</p>
<p style="margin: 0cm 0cm 0pt;"><span style="color: #1f497d; font-family: 'Segoe UI','sans-serif'; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ligatures: standard; mso-fareast-language: EN-US;"><o:p></o:p></span>&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">For CSVs you can run the following commands to check and set the value of the parameter DiskRunChkDsk</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Check the values of the parameters</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterSharedVolume | Get-ClusterParameter</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;"># Set the value of the DiskRunChkDsk parameter</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Get-ClusterSharedVolume | Set-ClusterParameter DiskRunChkDsk 4</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">&nbsp;</p>
<p style="margin: 0in; font-family: 'Segoe UI'; font-size: 9.5pt;">Aeval Shah</p>
<p style="margin: 0in; font-size: 9.5pt;"><span style="font-family: 'Segoe UI';">Premier Field Engineer - </span><span style="font-family: Segoe;">Failover Clustering &amp; Hyper-V</span></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>