<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Martin's Windows Server Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/mlucas/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/mlucas/feed.xml</link>
    <description>Martin&amp;#039;s random posts regarding Windows Server, Failover Clustering, or other important topics.</description>
    <lastBuildDate>Tue, 16 Apr 2019 06:11:47 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>A few more of my posts to AskPFE Platforms...</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/a-few-more-of-my-posts-to-askpfe-platforms</link>
      <pubDate>Fri, 18 Oct 2013 00:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2013/10/18/a-few-more-of-my-posts-to-askpfe-platforms/</guid>
      <description><![CDATA[For those that follow this blog, there are a few other posts I've written that are on the AskPFE...]]></description>
      <content:encoded><![CDATA[<p>For those that follow this blog, there are a few other posts I've written that are on the AskPFE Platforms page that I did not cross-post here.&nbsp; They are:</p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/10/21/storage-spaces-how-to-configure-storage-tiers-with-windows-server-2012-r2.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/10/21/storage-spaces-how-to-configure-storage-tiers-with-windows-server-2012-r2.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/10/02/sweet-sixteen-a-milestone-for-windows-clustering.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/10/02/sweet-sixteen-a-milestone-for-windows-clustering.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/09/25/storage-spaces-understanding-expansion.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/09/25/storage-spaces-understanding-expansion.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/09/23/using-powershell-to-gather-performance-data.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/09/23/using-powershell-to-gather-performance-data.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/03/29/mailbag-how-do-you-set-network-adapter-settings-with-powershell-in-windows-8-or-windows-server-2012.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/03/29/mailbag-how-do-you-set-network-adapter-settings-with-powershell-in-windows-8-or-windows-server-2012.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/02/21/mailbag-should-i-use-the-same-network-adapters-for-all-interfaces-on-my-cluster.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/02/21/mailbag-should-i-use-the-same-network-adapters-for-all-interfaces-on-my-cluster.aspx</a></p>
<p><a href="http://blogs.technet.com/b/askpfeplat/archive/2013/01/25/mailbag-should-servers-be-restarted-as-soon-as-possible-after-updates-or-okay-to-wait.aspx">http://blogs.technet.com/b/askpfeplat/archive/2013/01/25/mailbag-should-servers-be-restarted-as-soon-as-possible-after-updates-or-okay-to-wait.aspx</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server 2012: Does ReFS replace NTFS? When should I use it?</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/windows-server-2012-does-refs-replace-ntfs-when-should-i-use-it</link>
      <pubDate>Tue, 01 Jan 2013 22:39:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2013/01/01/windows-server-2012-does-refs-replace-ntfs-when-should-i-use-it/</guid>
      <description><![CDATA[When I first heard of ReFS my immediate first question was whether ReFS as a file system was a...]]></description>
      <content:encoded><![CDATA[<p class="Publishwithline">When I first heard of ReFS my immediate first question was whether ReFS as a file system was a direct replacement for NTFS.&nbsp; It didn&rsquo;t take long before my customers began to ask me the same question. In learning about this new file system in Windows Server 2012, it became apparent fairly quickly that ReFS, while a new file system, is built differently.&nbsp; REFS stands for Resilient File System.&nbsp; NTFS has its place, and so does ReFS.&nbsp; While ReFS may appear to have some similarity to NTFS, it does not contain all the underlying NTFS features and scales efficiently to handle data sets far larger than NTFS.&nbsp;</p>
<h2>The Resilient File System</h2>
<p>Although ReFS inherited some of the NTFS code base initially, it is a different file system with different uses in mind.&nbsp; In fact, disk tools that work with the NTFS Master File Table (MFT) won&rsquo;t be able to work with ReFS because ReFS has its own mechanism for keeping up with file metadata. ReFS is ideal for storing large amounts of data and can be leveraged for file shares.&nbsp; Applications that run locally on the server and rely on specific NTFS features may not work with ReFS.&nbsp; However, many may have no issues due to ReFS compatibility with many of the Win32 storage APIs. For example, Windows Deployment Services (WDS) explicitly requires NTFS because it relies on specific features in order to implement the RemoteInstall folder structure used for storing images.&nbsp; These are features that a conventional file server or data repository does not require.</p>
<p>CHKDSK isn&rsquo;t applicable to ReFS.&nbsp; Yes&hellip;I did just indicate that there&rsquo;s no need to run CHKDSK on a ReFS partition.&nbsp; Are you feeling that the tool you&rsquo;ve wanted to avoid for so long is now something you might want to hold onto&hellip;just in case?&nbsp; A love-hate relationship perhaps? &nbsp;The counselor is in.&nbsp; It&rsquo;s okay to have those feelings if you have them.&nbsp; The truth is that in terms of ReFS partitions, ReFS doesn&rsquo;t need CHKDSK because repair functionality is built-into the file system. Repair, if needed, occurs on-the-fly. Yep&hellip;there&rsquo;s no need for extra tools to go fix corruption like with other file systems. And for what it&rsquo;s worth, Windows Server 2012 contains improvements for CHKDSK.</p>
<p>ReFS can use checksums to detect if data has changed since last written and is able to detect and recover from corruption <em>quickly</em>.&nbsp; In fact, when data is written to disk, it is written to a new location on disk rather than over the top of existing data.&nbsp; Once successfully written, the file system can free the space used by the old data stream. ReFS is able to recover from corruption within the file system rapidly without limiting availability of the volume.&nbsp; Further, ReFS may be used with clusters, Hyper-V, file shares, data archival, and many other uses.</p>
<p>Additional integrity data streams may be enabled if you have additional needs for data protection.&nbsp; By default, ReFS uses conventional streams which behave identically to NTFS data streams.&nbsp; However, don&rsquo;t think that because this is so that file system metadata is conventional also.&nbsp; File system metadata is protected against corruption.&nbsp;&nbsp; If you want additional protection of data streams, you may enable <em>Integrity Streams</em>.&nbsp; When configured to do so, checksums are used against written data and updates are done using <em>copy-on-write</em>.&nbsp; You may enable Integrity Streams on particular folders, volumes, or even granularly on a per-file basis.&nbsp; When coupled with redundancy through Storage Spaces, it is default behavior for Integrity Streams to be enabled for the entire volume.&nbsp; Storage Spaces and ReFS complement each other.&nbsp; When coupled with a mirrored Storage Space, duplicate copies of data will automatically be leveraged by ReFS.&nbsp;&nbsp; With this configuration, if corruption were to be encountered, ReFS can immediately leverage redundant data within Storage Spaces to expediently address the issue.&nbsp; One other example of how Storage Spaces compliments ReFS would be how ReFS periodically scrubs file system data to look for differences in an event to combat bit flips that can occur over time due to data stored over a long period of time in the same location.&nbsp;</p>
<p>As a file system, ReFS is not only good for resiliency, it is great for maintaining extremely large amounts of data.&nbsp; With data integrity and recovery features built-into the file system, there is no need to wait for CHKDSK to run to fix corruption.&nbsp; What if you needed to store 500 billion gigabytes in one place?.&nbsp; But why stop there?&nbsp;&nbsp; I recently read that ReFS can handle up to 1 Yottabyte (YB).&nbsp; That wasn&rsquo;t in my geek vocabulary until now and I&rsquo;m not sure I&rsquo;m going to remember that name next week.&nbsp; To give you an idea of how large a number that is, 1GB can be represented as 10<sup>9</sup>.&nbsp; 1YB is represented by 10<sup>24</sup>.&nbsp; That is like 1 quadrillion GB.&nbsp; That seriously messes with my head.&nbsp; Good luck purchasing that much available hard drive space for your home lab in the basement.&nbsp; Imagine trying to power all that storage without shorting out the power for the whole neighborhood.&nbsp; Can you imagine how long even a modern efficient version of CHKDSK might run on a volume that size?&nbsp;&nbsp; ReFS answers the needs of data integrity and efficiency and is mainly intended for very large volumes on file servers.&nbsp; It is a file system that goes beyond capability of NTFS.&nbsp;</p>
<h2>NTFS Improvements</h2>
<p>NTFS remains the file system of choice for the operating system boot volume as well as any other general needs for data storage. &nbsp;CHKDSK remains the tool of choice for dealing with NTFS file system issues should they happen.&nbsp; CHKDSK in Windows Server 2012 contains improvements&hellip;so CHKDSK continues to evolve and get better.&nbsp; The average NTFS deployment currently is around 500GB.&nbsp; In many cases administrators were hesitant to go beyond that due to the time potentially required to run CHKDSK against a volume that size.&nbsp; The time required to run CHKDSK has not been predictable due to file system structure complexity differences from one volume to another as well as a variety of other factors. The average number mentioned above has increased over time because the efficiency of CHDKSK has evolved with each new Windows Server release for quite some time now.&nbsp;&nbsp; As the following TechNet reference indicates, you can safely deploy multi-terabyte volumes based on the improvements in CHKDSK and the existing capabilities of the NTFS file system.&nbsp; Windows Server 2012 builds upon the self-healing capabilities of Windows Server 2008 R2 NTFS.&nbsp; NTFS fixes the corruption it can on-the-fly and what can&rsquo;t be addressed immediately can already be calculated in how it needs to be fixed to that when you choose to mitigate the issue, the time required is truly minimal compared to the CHKDSK of years past.</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/7633.1.runtimeimprovements.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/7633.1.runtimeimprovements.jpg"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/7633.1.runtimeimprovements.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/7633.1.runtimeimprovements.jpg" alt="" border="0" /></a></p>
<p align="center"><a href="http://technet.microsoft.com/en-us/library/hh831536.aspx">http://technet.microsoft.com/en-us/library/hh831536.aspx</a></p>
<h2>Comparing ReFS and NTFS Features</h2>
<p>Although ReFS is a different file system, there are similar features between ReFS and NTFS.&nbsp; The easiest way to compare those is to look at the feature list side by side.&nbsp; Consider the following feature sets:</p>
<table style="margin-left: auto; margin-right: auto;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="319">
<p><span style="font-size: medium;"><strong>NTFS Features</strong></span></p>
</td>
<td valign="top" width="319">
<p><span style="font-size: medium;"><strong>ReFS Features</strong></span></p>
</td>
</tr>
<tr>
<td valign="top" width="319">
<p><strong>Supports Case-sensitive filenames</strong></p>
<p><strong>Preserves Case of filenames</strong></p>
<p><strong>Supports Unicode in filenames</strong></p>
<p><strong>Preserves &amp; Enforces ACL's</strong></p>
<p>Supports file-based Compression</p>
<p>Supports Disk Quotas</p>
<p><strong>Supports Sparse files</strong></p>
<p><strong>Supports Reparse Points</strong></p>
<p>Supports Object Identifiers</p>
<p>Supports Encrypted File System</p>
<p>Supports Named Streams</p>
<p>Supports Transactions</p>
<p>Supports Hard Links</p>
<p>Supports Extended Attributes</p>
<p><strong>Supports Open By FileID</strong></p>
<p><strong>Supports USN Journal</strong></p>
</td>
<td valign="top" width="319">
<p><strong>Supports Case-sensitive filenames</strong></p>
<p><strong>Preserves Case of filenames</strong></p>
<p><strong>Supports Unicode in filenames</strong></p>
<p><strong>Preserves &amp; Enforces ACL's</strong></p>
<p><strong>Supports Sparse files</strong></p>
<p><strong>Supports Reparse Points</strong></p>
<p><strong>Supports Open By FileID</strong></p>
<p><strong>Supports USN Journal</strong></p>
</td>
</tr>
</tbody>
</table>
<p>How did I pull this information?&nbsp;&nbsp; There are charts available on the net&hellip;and people that know me can testify that I like charts.&nbsp; Yet, it is easy to obtain the available features of each file system yourself from the live file systems that you already use.&nbsp; If you don&rsquo;t have a volume available that uses ReFS, it is easy to create a VHD file, attach it, and format as ReFS to use for your own testing.&nbsp;&nbsp; Once you have NTFS and ReFS file systems at your fingertips, use FSUTIL to gather the file system supported features.&nbsp; Then it&rsquo;s a matter of comparing each list of features.&nbsp; FSUTIL syntax is very simple:</p>
<p style="padding-left: 30px;"><strong>FSUTIL fsinfo volumeinfo</strong> <em>driveletter</em></p>
<p>This simple command lists the capabilities provided by the file system in use on the supplied drive letter.&nbsp; Simply run this command against each type of file system and compare.&nbsp;</p>
<p>Here are a few screen shots of using Disk Management to create a VHD, initialize as GPT, format as ReFS, and using FSUTIL against the newly created ReFS volume.</p>
<p>&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/3487.2.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/3487.2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/3487.2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/3487.2.jpg" alt="" border="0" /></a>&nbsp;</p>
<p align="center">For this example I used dynamic expansion. If I were really going to use this VHD for data I would not thin provision like in this example.&nbsp; I only want to inventory <br />ReFS features for this example.</p>
<p style="text-align: center;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/4336.3.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/4336.3.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/4336.3.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/4336.3.jpg" alt="" border="0" /></a></p>
<p style="text-align: center;">Right-click on the new disk. Choose Initialize. Choose GPT. Right-click on the disk and format as ReFS.</p>
<p align="center">&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/2671.4.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/2671.4.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/2671.4.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/2671.4.jpg" alt="" border="0" /></a>&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0216.5.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0216.5.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0216.5.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0216.5.jpg" alt="" border="0" /></a>&nbsp;</p>
<p>Notice that key capabilities missing from ReFS as compared to NTFS are EFS encryption, quotas, and compression.&nbsp; BitLocker may be used for encrypting these volumes while EFS is not an option.&nbsp;&nbsp; Thus, when using ReFS, encryption doesn&rsquo;t need to be part of the file system.&nbsp; BitLocker satisfies the need for encrypting data on the volume as it encrypts the contents of the entire disk. Quotas may be managed outside the file system rather than through the file system like NTFS.&nbsp; Not supporting Hard Links is a key reason why you wouldn&rsquo;t use ReFS for a system disk; files in the system32 folder are really hard linked back into the WinSxS folder structure.&nbsp;&nbsp; You might think that ReFS would have data deduplication built-into the file system.&nbsp; The fact that it doesn&rsquo;t may not prohibit other components or third-party solutions from interfacing with ReFS through the API set provided.</p>
<h2>Command Line Directives for ReFS</h2>
<p>For those that are script fanatics (you know who you are), I&rsquo;ve written this section just for you.&nbsp; We all know that the need for scripting language happens all the time.&nbsp; Perhaps you&rsquo;re just creating re-creatable virtual environments for one reason or another&hellip;and now you need to include the creation of some ReFS volumes.&nbsp; Below are some valuable commands including conventional and PowerShell examples.</p>
<h2>Formatting a ReFS Volume</h2>
<p>While this can be done from the UI quite easily by choosing ReFS as the file system in the drop down from the Format dialog, this is also easily done from the command line.&nbsp; Full format example below:</p>
<p><strong>Command-Line</strong></p>
<p style="padding-left: 30px;">Format /fs:ReFS J:</p>
<p><strong>PowerShell Equivalent</strong></p>
<p style="padding-left: 30px;">Format-Volume &ndash;DriveLetter J &ndash;FileSystem ReFS -Full</p>
<p>In fact, typical command line syntax and optional parameters apply.&nbsp; Therefore, if you want this to be a quick format, just append /q to the above command line.&nbsp;&nbsp; However, you have the option to enable Integrity Streams for the volume.&nbsp; Note the following command:</p>
<p><strong>Command-Line</strong></p>
<p style="padding-left: 30px;">Format /fs:ReFS /q /i:enable J:</p>
<p><strong>PowerShell Equivalent</strong></p>
<p style="padding-left: 30px;">Format-Volume &ndash;DriveLetter J &ndash;FileSystem ReFS &ndash;SetIntegrityStreams $true</p>
<p>The preceding command enables Integrity Streams on drive J: and performs a quick format.&nbsp; The /i option offers you the ability to enable|disable this feature for the volume.&nbsp; If you enable this option, all files created on the volume will be configured with integrity.&nbsp; You may turn this off for individual files or folders using the Integrity command. However, know that if a file is non-empty and has data streams created with Integrity Streams, you cannot disable the feature for that file.&nbsp; You cannot change the integrity status for a file once the file contains integrity data streams.&nbsp; You could copy the file to another partition, delete the original, and then copy it back without Integrity Streams.</p>
<h2>Additional Thoughts</h2>
<p>During the beta for Windows Server 2012, there were blog posts on the net that&nbsp;mentioned&nbsp;a tool called INTEGRITY.EXE.&nbsp;&nbsp; In the released version of Windows Server 2012 this tool does not exist.&nbsp; This is not a bug or mistake. Development provided PowerShell cmdlets to address configuration options for ReFS instead of providing another utility to keep up with that had narrow focus to begin with.&nbsp; I plan to construct a future post on storage cmdlets that will include how to adjust ReFS behavior using PowerShell.&nbsp;&nbsp; Also, just because a file system is self-healing doesn&rsquo;t mean that backups should be forgotten.&nbsp; If a large chunk of blue ice falls from the sky and crushes your massive ReFS file system in one loud thunk&hellip;you&rsquo;re more than likely going to need to restore the data.&nbsp; While that's&nbsp;my conservative side speaking, unexpected events do happen. It never hurts to be prepared for the unexpected or the unlikely in a datacenter.</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server 2012: How to Import a Storage Pool on Another Server</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/windows-server-2012-how-to-import-a-storage-pool-on-another-server</link>
      <pubDate>Mon, 24 Dec 2012 06:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/12/24/windows-server-2012-how-to-import-a-storage-pool-on-another-server/</guid>
      <description><![CDATA[Thanks for great feedback and for reading my prior AskPFEPlat post regarding Storage Spaces in...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">Thanks for great feedback and for reading my prior AskPFEPlat post regarding </span><a href="http://blogs.technet.com/b/askpfeplat/archive/2012/10/10/windows-server-2012-storage-spaces-is-it-for-you-could-be.aspx"><span style="font-family: Calibri; color: #0000ff; font-size: small;">Storage Spaces in Windows Server 2012</span></a><span style="font-size: small;"><span style="font-family: Calibri;">.&nbsp; Based on feedback and questions following that post, it seemed like a great time to show how to import a storage pool on another server.&nbsp;&nbsp; Storage Spaces in Windows Server 2012 writes the configuration about the storage pool onto the disks themselves.&nbsp; Therefore, if disaster strikes and the server hardware requires replacement or a complete re-install &ndash; there is a relatively simple procedure involved to mount and access a previously created storage pool...perhaps on another server.&nbsp; Notice I said server.&nbsp; The implementation of Storage Spaces on Windows 8 doesn&rsquo;t offer the same feature set that Windows Server 2012 does, so therefore you can only import a storage pool on the same OS version for which it was created.</span></span></p>
<h3><strong><span style="color: #17365d;"><span style="font-family: Calibri;">Step By Step Example</span></span></strong></h3>
<h3><span style="color: #17365d;"><span style="font-family: Calibri; font-size: medium;">1.</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: medium;"><span style="font-family: Calibri;">Make the disks available to the server</span></span></span></h3>
<p><span style="font-size: small;"><span style="font-family: Calibri;">The first step, which may have multiple sub-steps, is to physically attach and successfully make available all drives from the pre-existing storage pool.&nbsp; To be successful in this endeavor, you would need appropriate drivers, cables, firmware, etc. to make this work.&nbsp;&nbsp; Obviously if these are SAS drives and the destination server doesn&rsquo;t have a SAS interface, this will be somewhat of a difficult task without the proper interface.&nbsp; Once you&rsquo;ve completed this task, from Server Manager you should see something similar to the following:</span></span></p>
<p style="text-align: center;"><span style="font-family: Calibri; font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/2577.1.StoragePoolAttachedtoNewServer.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/2577.1.StoragePoolAttachedtoNewServer.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/2577.1.StoragePoolAttachedtoNewServer.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/2577.1.StoragePoolAttachedtoNewServer.jpg" alt="" border="0" /></a>&nbsp;</span></p>
<h3><span style="color: #17365d;"><span style="font-family: Calibri; font-size: medium;">2.</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: medium;"><span style="font-family: Calibri;">Make the storage pool read-write.</span></span></span></h3>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As you can see from the prior screenshot, the storage pool (as well as the virtual disk) has a warning exclamation mark symbol to indicate a problem.&nbsp; By default, Windows Server 2012 will detect the foreign volume and mark it read-only.&nbsp; The indicator appears because of this condition.&nbsp; To proceed, right-click the storage pool and choose <strong>Set Read-Write Access&hellip;</strong></span></span></p>
<p align="center">&nbsp;</p>
<p align="center"><strong><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/5466.2.StoragePoolAttachedtoNewServerMakeReadWrite.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/5466.2.StoragePoolAttachedtoNewServerMakeReadWrite.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/5466.2.StoragePoolAttachedtoNewServerMakeReadWrite.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/5466.2.StoragePoolAttachedtoNewServerMakeReadWrite.jpg" alt="" border="0" /></a></span></span></strong></p>
<p align="center"><span style="font-size: small;"><span style="font-family: Calibri;">Make it read-write.</span></span></p>
<p align="center">&nbsp;</p>
<p style="text-align: center;"><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/3404.3.StoragePoolAttachedtoNewServerMakeReadWrite2.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/3404.3.StoragePoolAttachedtoNewServerMakeReadWrite2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/3404.3.StoragePoolAttachedtoNewServerMakeReadWrite2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/3404.3.StoragePoolAttachedtoNewServerMakeReadWrite2.jpg" alt="" border="0" /></a></span></span></p>
<p style="text-align: center;"><span style="font-size: small;"><span style="font-family: Calibri;">Choose the server where the storage pool may be mounted read-write.&nbsp; If this is a clustered storage pool, multiple nodes may appear in the Choose a Server for Read-Write Access dialog.</span></span></p>
<h3><span style="color: #17365d;"><span style="font-family: Calibri; font-size: medium;">3.</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: medium;"><span style="font-family: Calibri;">Attach the virtual disk.</span></span></span></h3>
<p><span style="font-size: small;"><span style="font-family: Calibri;">The activities in prior steps make the storage pool available.&nbsp; However, within the storage pool will be any virtual disks previously created using pool resources.&nbsp; Just like a VHD, these must be attached in order to be accessible.&nbsp; Therefore, the yellow exclamation warning sign indicates that the virtual disk is not currently attached.&nbsp; To proceed, right-click on each virtual disk and choose <strong>Attach Virtual Disk</strong>.</span></span></p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0027.4.StoragePoolAttachedtoNewServerAttachVirtualDisk.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0027.4.StoragePoolAttachedtoNewServerAttachVirtualDisk.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0027.4.StoragePoolAttachedtoNewServerAttachVirtualDisk.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0027.4.StoragePoolAttachedtoNewServerAttachVirtualDisk.jpg" alt="" border="0" /></a></span></span></p>
<p style="text-align: center;" align="center">&nbsp;</p>
<p style="text-align: center;" align="center">&nbsp;</p>
<p style="text-align: center;" align="center"><span style="font-size: small;"><span style="font-family: Calibri;">If all is successful, each Virtual Disk chosen will be attached.</span></span></p>
<h3><span style="color: #17365d;"><span style="font-family: Calibri; font-size: medium;">4.</span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: medium;"><span style="font-family: Calibri;">Online the resulting logical disk(s).</span></span></span></h3>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As you may recall, Windows Server 2008 Enterprise and Datacenter editions, by default do not automatically mount every disk device seen (providing that the default SAN policy has not been changed.)&nbsp;&nbsp; Windows Server 2012 is no different.&nbsp; To use any of the virtual disks that belong to the imported storage pool, you must online them first.</span></span></p>
<p>&nbsp;</p>
<p style="text-align: center;"><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/1651.7.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/1651.7.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/1651.7.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/1651.7.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.jpg" alt="" border="0" /></a></span></span></p>
<p style="text-align: center;"><span style="font-size: small;"><span style="font-family: Calibri;">In <strong>Server Manager</strong> under <strong>Volumes\Disks</strong>, select the <strong>disk</strong>, <strong>right-click</strong>, and choose <strong>online</strong>.</span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/8463.8.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/8463.8.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/8463.8.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/8463.8.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.jpg" alt="" border="0" /></a></span></span></p>
<p align="center"><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0652.9.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.alldone.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0652.9.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.alldone.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0652.9.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.alldone.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0652.9.StoragePoolAttachedtoNewServerAttachVirtualDisk4.onlinedisk.prompt.alldone.jpg" alt="" border="0" /></a></span></span></p>
<p align="center"><span style="font-size: small;"><span style="font-family: Calibri;">Notice at this point that the volume now appears and remains accessible.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<h3><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Concluding Thoughts</span></span></span></h3>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Hopefully the above notes and screenshots illustrate how easy it is to import a storage pool when you have a need to do so, or as a proof of concept when learning about Storage Spaces.&nbsp;&nbsp; The example above was created using Hyper-V Virtual Machines, and using iSCSI targets (for example only, not production) made available to a second newly installed VM after the first VM was conveniently destroyed.&nbsp; You could also use individual VHD files as components for the storage pool members. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server 2012 iSCSI Target: Is it the same as the downloadable target for Windows Server 2008 R2?</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/windows-server-2012-iscsi-target-is-it-the-same-as-the-downloadable-target-for-windows-server-2008-r2</link>
      <pubDate>Mon, 10 Dec 2012 12:53:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/12/10/windows-server-2012-iscsi-target-is-it-the-same-as-the-downloadable-target-for-windows-server-2008-r2/</guid>
      <description><![CDATA[Originally posted by Martin to AskPFEPlat
As mentioned in my prior post about Storage Spaces,...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">Originally posted by Martin to <a title="AskPFEPlat" href="http://blogs.technet.com/b/askpfeplat/">AskPFEPlat</a></span></p>
<p>As mentioned in my prior post about Storage Spaces, Windows Server 2012 contains many new capabilities. The integrated iSCSI Target happens to be one of those. Many have used the downloadable iSCSI Target for Windows Server 2008 R2 from Microsoft since it was released for internet download. Prior to release for download the Microsoft iSCSI Target was available as a component of Windows Storage Server. Windows Server 2012 contains a native iSCSI Target and there&rsquo;s no need to download one if you need to make storage available via iSCSI for other systems or virtual machines. No special licenses required. It is worthy to note that the included target is <em>not</em> identical to the downloadable target for Windows Server 2008 R2 &ndash; though they both provide block based storage.</p>
<h3>Integrated iSCSI Target Differences</h3>
<p>The new target contains improvements above and beyond the previous version. For instance, the new iSCSI Target would be of interest to you if you have any new 4k sector drives as it contains support for these newer devices. Development included some enhancements that improve performance rather comprehensively. Additionally, iSCSI virtual disks do not have to be hosted on dedicated physical disks. You may use Windows Server 2012 Storage Spaces to host them. However, incorporation of iSCSI LUNs into a Storage Spaces pool is not supported.</p>
<h3>Management</h3>
<p>There are a few different ways to manage iSCSI Targets under Windows Server 2012 which may be different than what some administrators may be familiar with previously. Those that have become adept with PowerShell will be happy to know there is yet more PowerShell support for iSCSI Targets. Increased PowerShell support is of no surprise since management interfaces are consistently backed by PowerShell cmdlets. Beyond PowerShell, the MMC snap-in method for managing iSCSI Targets is no longer the way to manage them. You may manage iSCSI Targets via the management interface integrated within Server Manager. Specifying initiator IQN identifier strings for defined targets can be hassle free using the new management interface in Windows Server 2012 with the option to query initiator identifiers of systems you choose. The new query option does not work with Windows versions prior to Windows 8 or Windows Server 2012. However, for newer systems that will access your iSCSI Target, the new query option removes the potential for mistakes. As a side note, the iSCSI Initiator remains a separate component with a management interface accessible from the Control Panel or Administrative Tools.</p>
<p>New in Windows Server 2012 is the Windows Storage Management API (SMAPI) that provides cmdlets for PowerShell and a new set of WMI classes for management of Windows storage. Having these additional interfaces opens up scripting possibilities as well as remote administration through a variety of methods for managing Windows storage. Also new to Windows Server 2012 is the Storage Management Provider (SMP) framework which also works with 3<sup>rd</sup> party storage. The iSCSI Target included with Windows Server 2012 as released does not include a Storage Management Initiative &ndash; Specification (SMI-S) Provider. Therefore, the interfaces described above need to be used for management of targets. The following link suggests that with the introduction of SMAPI that the Virtual Disk Service (VDS) is being deprecated. Therefore, this is a time of transition to superior technology for storage management. Until then, VDS remains for compatiblity or for storage types that don't yet have a SMI-S Provider.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/hh848071(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/hh848071(v=vs.85).aspx</a></p>
<h3>VHD Compatibility</h3>
<p>If you&rsquo;ve used one of Microsoft&rsquo;s iSCSI Targets before, you know that when you create virtual disks for a given target, the underlying storage resides in a VHD file. In Windows Server 2012, these iSCSI Target VHD files are completely compatible with Hyper-V (and vice versa) for VHDs up to 2TB. Therefore, if you create a VHD using iSCSI Target that is within the constraints of Hyper-V, you can port that VHD directly over for use with a Hyper-V virtual machine. However, Hyper-V under Windows Server 2012 introduces a new virtual hard disk format known as VHDx. This format is <em>not</em> supported by the iSCSI Target and is not interchangeable.</p>
<h3>Other Improvements</h3>
<p>Prior releases of iSCSI Target would allow snapshots to be taken of one of the virtual disks with the ability to revert to a snapshot later. However, the methods used could require lengthy operations to complete the copy. Though the copy operation for snapshots could be slow, applying the snapshot to revert was fairly quick. Windows Server 2012&rsquo;s implementation of snapshots for iSCSI is based on VSS, much more robust, and uses common VSS features. In addition to VSS support, in Windows Server 2012 the iSCSI Target integrates with Failover Clustering. Therefore, you may create highly available iSCSI targets.</p>
<h3>In Conclusion</h3>
<p>The built-in iSCSI Target within Windows Server 2012 is a nice addition to the OS. I've already found it to be a great asset for proof of concept, testing, demos, or helping to increase availabilty of storage in the basement lab for my home office...especially along with Storage Spaces. Creating targets for Windows Server 2012 Hyper-V clusters is a snap with the new management interface and better yet saves time.</p>
<h3>More Information</h3>
<p style="padding-left: 30px;"><strong>Windows Server 2012 Storage Management</strong></p>
<p style="padding-left: 60px;"><a href="http://blogs.msdn.com/b/san/archive/2012/06/26/an-introduction-to-storage-management-in-windows-server-2012.aspx">http://blogs.msdn.com/b/san/archive/2012/06/26/an-introduction-to-storage-management-in-windows-server-2012.aspx</a></p>
<p style="padding-left: 30px;"><strong>Windows Server 2012 Storage Spaces</strong></p>
<p style="padding-left: 60px;"><a href="http://blogs.technet.com/b/askpfeplat/archive/2012/10/10/windows-server-2012-storage-spaces-is-it-for-you-could-be.aspx">http://blogs.technet.com/b/askpfeplat/archive/2012/10/10/windows-server-2012-storage-spaces-is-it-for-you-could-be.aspx</a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>What can be used to keep Active Directory data secure?</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/what-can-be-used-to-keep-active-directory-data-secure</link>
      <pubDate>Mon, 10 Dec 2012 12:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/12/10/what-can-be-used-to-keep-active-directory-data-secure/</guid>
      <description><![CDATA[Originally posted by Martin to AskPFEPlat&nbsp;
With the increase in concern over data privacy and...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">Originally posted by Martin to <a title="AskPFEPlat" href="http://blogs.technet.com/b/askpfeplat/">AskPFEPlat</a></span>&nbsp;</p>
<p>With the increase in concern over data privacy and security, one of my customers recently asked about securing Active Directory data while stored on disk and what could be done in relation to network traffic. My first thoughts were BitLocker and IPSEC. However, there are a number of different considerations that factor in. Special thanks to Brent Whitlow for contributing to this post.</p>
<h3>Protecting Active Directory Information on Disk</h3>
<p>Active Directory data primarily resides in the NTDS.DIT file as well as accompanying log files. Therefore, you could use encryption technology like BitLocker to encrypt volumes that contain Active Directory data. BitLocker is ideal for protecting volumes holding Active Directory data because it works with features in the server hardware and firmware to provide secure operating system boot and drive encryption, even if protected disks are removed and someone attempts to read them on another system. While you may use Active Directory to store recovery information for BitLocker volumes, using an external data recovery agent for BitLocker would be more suitable when using BitLocker to protect Active Directory data. (If replicated Active Directory databases were to become corrupt as a whole or no other DCs were available to retrieve the key, storing the recovery key in Active Directory would be like storing the combination to a locked safe inside the safe and forgetting the combination.) Therefore, you would want to safely protect any BitLocker recovery keys so that they are accessible to appropriate personnel, secure, and not prone to compromise.</p>
<p>Encrypting File System (EFS) is another encryption technology but not good to use for encrypting Active Directory data due to a circular dependency at boot time. Active Directory requires EFS to unlock the database before it can respond to queries. Yet, in order for EFS to unlock the file, it needs Active Directory. EFS and BitLocker operate at completely different levels. Therefore, using EFS you can make Active Directory too secure by creating a deadlock situation between Active Directory and EFS.</p>
<p>Protecting data on a volume is important, but what about other forms of Active Directory data? Any backups containing Active Directory data must also be secured. When using BitLocker on a volume, backups of those volumes may not be encrypted. Further, physical security of backups remains paramount.</p>
<p>Any virtualized DCs in the environment? Access to stored virtual hard disk files need to be protected as it the equivalent of a physical hard drive of a physical domain controller. Virtualized DCs need the same amount of care and consideration if not more. It is relatively easy for someone with administrative access to the virtualization host to have access to the files on that host. Choose only reliable and trusted administrators to have administrative access to the virtualization hosts that contain virtualized DCs. Further, use of removable storage devices can be limited by Group Policy. As such, you may want to limit who can write to removable storage or limit these devices to read-only access.</p>
<h3>Protecting Active Directory Data over the Network</h3>
<p>Transmission of Active Directory data over the network may be protected quite easily using methods like IPSEC or 802.1x if these are already in use within the environment. LDAPS and LDAP become somewhat irrelevant over a secured connection when using IPSEC or 802.1x. However, LDAP is still used for things like client logon or related to Group Policy so this may be something to protect when not using encryption over the network. Standard permissions within Active Directory permit access to Authenticated Users. IPSEC or 802.1x would cover encryption of traffic for domain joined clients. Non-domain joined clients do not query personal data stored in Active Directory and would be protected by IPSEC or 802.1x once joined. Prior to or during the join process, personal data is not queried through LDAP and the user does not have access as an Authenticated User.</p>
<p>One additional item to check would be the use of the old Pre-Windows 2000 Compatible Access Group for older clients like NT4. Using this option definitely makes Active Directory less secure.</p>
<h3>Additional Resources</h3>
<h4 style="padding-left: 30px;">For information about the Pre-Windows 2000 Compatible Access Group</h4>
<p style="padding-left: 60px;"><a href="http://support.microsoft.com/kb/303973/EN-US">http://support.microsoft.com/kb/303973/EN-US</a></p>
<h4 style="padding-left: 30px;">Virtualizing DCs</h4>
<p style="padding-left: 60px;"><a href="http://support.microsoft.com/kb/888794/EN-US">http://support.microsoft.com/kb/888794/EN-US</a></p>
<h4 style="padding-left: 30px;">Running Domain Controllers in Hyper-V</h4>
<p style="padding-left: 60px;"><a href="http://technet.microsoft.com/en-us/library/virtual_active_directory_domain_controller_virtualization_hyperv(WS.10).aspx">http://technet.microsoft.com/en-us/library/virtual_active_directory_domain_controller_virtualization_hyperv(WS.10).aspx</a></p>
<h4 style="padding-left: 30px;">BitLocker Overview</h4>
<p style="padding-left: 60px;"><a href="http://technet.microsoft.com/en-us/library/hh831713.aspx">http://technet.microsoft.com/en-us/library/hh831713.aspx</a></p>
<h4 style="padding-left: 30px;">Planning for Hyper-V Security</h4>
<p style="padding-left: 60px;"><a href="http://technet.microsoft.com/en-us/library/cc974516.aspx">http://technet.microsoft.com/en-us/library/cc974516.aspx</a></p>
<h4 style="padding-left: 30px;">Limiting Access to Removable Storage</h4>
<p style="padding-left: 60px;"><a href="http://blogs.technet.com/b/askds/archive/2008/08/25/removable-storage-group-policy-and-windows-server-2008-and-windows-vista.aspx">http://blogs.technet.com/b/askds/archive/2008/08/25/removable-storage-group-policy-and-windows-server-2008-and-windows-vista.aspx</a></p>
<p style="padding-left: 30px;">&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Server and Processor Cores… (Part 2): Windows Server 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/windows-server-and-processor-cores-part-2-windows-server-2012</link>
      <pubDate>Mon, 10 Dec 2012 12:40:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/12/10/windows-server-and-processor-cores-part-2-windows-server-2012/</guid>
      <description><![CDATA[Originally posted by Martin to AskPFEPlat
My last installment about how Windows Server handles...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">Originally posted by Martin to <a title="AskPFEPlat" href="http://blogs.technet.com/b/askpfeplat/">AskPFEPlat</a></span></p>
<p><span style="font-family: Calibri; font-size: small;">My </span><a href="http://blogs.technet.com/b/askpfeplat/archive/2012/07/30/windows-server-and-processor-cores.aspx"><span style="color: #0000ff; font-size: small;">last installment</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> about how Windows Server handles processor cores discussed Windows Server 2008 and Windows Server 2008 R2. Windows Server 2012 is out and the editions available differ somewhat from prior Windows operating system releases. With the editions available, key differences are not regarding features as one might think but actually concern virtualization rights. Both editions support the same amounts of memory, physical processors, and logical processors. This post is for informational purposes only. Please consult the End User License Agreement (EULA) for your product and/or the link at the end of this post for more information.</span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Windows Server 2012: Standard VS Datacenter</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">These two editions contain all the same features. For example, previous Standard editions did not contain Failover Clustering. Therefore, to use that feature it required Enterprise or Datacenter. Enterprise edition for Windows Server 2012 does not exist. You will find that Failover Clustering as well as any other feature you can find in Windows Server 2012 Datacenter also exists with Standard edition. Virtualization and processor licensing are key differentiators. </span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Licenses and Physical Hardware</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Client Access Licenses (CALs) remain required for access to Windows Server 2012. Therefore, CAL requirements have not changed. As in the past, CALs must be equivalent or higher in version as compared to the Windows Server version being accessed. Therefore, Windows Server 2012 requires Windows Server 2012 CALS. Licensing requirements for Remote Desktop Services (RDS) and Active Directory Rights Management Service (ADRMS) remain the same and still require appropriate CALs for access.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">What is different is what the Windows Server license provides. A single license for either available edition provides use of up to two physical processors. If you have additional physical processors in the same server, simply assign additional licenses for Windows Server 2012 for the edition purchased as needed for the additional set of physical processors. When I say &lsquo;assign&rsquo; another license, I might as well say allocate because this is for licensing compliance. Currently you can only register one license key per server. Just make certain you have enough licenses purchased to cover the number of physical processors and for any virtualization needs (discussed in the next section). Remember, each license provides for up to two additional physical processors. The number of cores available per processor is irrelevant. If you have an odd number of physical processors, you can&rsquo;t purchase server licenses for individual physical processors; they cover up to two. For purposes of example, if you assign four Windows Server 2012 Standard edition licenses to the same server, that server is licensed for use of eight physical processors and as many cores per physical processor as the OS will support.</span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Licenses and Virtualization Rights</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Standard server licenses provide the ability to host two virtual machines (VMs) on those same two physical processors that the license covers. The same license also provides virtualization rights. Using the above example with four Standard edition licenses, the server is licensed for use of eight physical processors, as many cores as the OS supports, and up to eight VMs. If you have a need to support ten VMs on the same four (physical) processor system, simply assign one more Standard edition license to support ten VMs even though the hardware may only have four physical processors. The number of licenses needed depends on the number of physical processors or VMs to be hosted &ndash; whichever number is higher.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">A Datacenter license provides the ability to host an unlimited number of VMs on those same two physical processors. However, like a Standard edition license, you need to assign additional Datacenter edition licenses based on the number of physical processors needed. The number of cores per physical processor remains irrelevant other than staying within the bounds of the OS and, of course, what the hardware itself will support. My take on this is that if you are going to be hosting a serious number of VMs on a host with lots of processors and cores, Datacenter is likely the most cost effective path.</span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Standard Edition to Datacenter Edition?</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Standard Edition may fit some situations. However, Datacenter is obviously more flexible in terms of virtualization rights and is likely a better fit for highly virtualized environments. While with either edition you may assign more licenses, those licenses have to be for the same edition and may not be intermixed. So what can you do if you go with Standard and find out that the future of the server requires more licensing capacity? You could continue to purchase and assign additional Standard edition licenses as applicable. If you have Software Assurance benefits, you may be able to purchase a Step-up to migrate to a Datacenter license for that server.</span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">How Many Processors Supported?</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Windows Server 2012 supports up to 64 physical processors with an upper limit of 640 logical processors. Hyper-V enabled systems have an upper limit of 320 logical processors. Physical cores remain a preferred option in lieu of logical processors from Simultaneous Multithreading (SMT) when physical cores are available.</span></span></p>
<h2><span style="font-size: medium;"><span style="color: #17365d;"><span style="font-family: Calibri;">Concluding Thoughts</span></span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">My thoughts behind writing this post were to help communicate a significant change that affects server deployment planning. The cost of licenses for Standard and Datacenter editions are different to account for the licensing changes. The price per instance appears to have been reduced such that equivalent instances for Windows Server 2012 may be less than Windows Server 2008 R2 Enterprise. Again, this post is not a definitive source for what a license covers, what the terms are, or what all the different options are that are available. A great source for frequently asked questions and other links to related information, please consult the following Windows Server 2012 Licensing and Pricing FAQ document:</span></span></p>
<p><a href="http://download.microsoft.com/download/4/D/B/4DB352D1-C610-466A-9AAF-EEF4F4CFFF27/WS2012_Licensing-Pricing_FAQ.pdf"><span style="font-family: Calibri; color: #0000ff; font-size: small;">http://download.microsoft.com/download/4/D/B/4DB352D1-C610-466A-9AAF-EEF4F4CFFF27/WS2012_Licensing-Pricing_FAQ.pdf</span></a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Visit the AskPFEPlat blog...</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/visit-the-askpfeplat-blog</link>
      <pubDate>Mon, 10 Dec 2012 12:04:01 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/12/10/visit-the-askpfeplat-blog/</guid>
      <description><![CDATA[&nbsp;
Wanted to take a minute to&nbsp;mention the PFE Blog AskPFEPlat&nbsp;that I've been known to...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>Wanted to take a minute to&nbsp;mention the PFE Blog <span style="font-family: Calibri; font-size: small;"><a title="AskPFEPlat" href="http://blogs.technet.com/b/askpfeplat/">AskPFEPlat</a></span>&nbsp;that I've been known to post to once in a while.&nbsp; There you'll find a variety of great topics with great technical information.&nbsp; Any future posts I make to AskPfePlat will also cross-post here.&nbsp; I will continue to post material to&nbsp;Martin's Windows Server Blog that fit here but may not fit in the larger forum (Debug hints and tricks would be just one example.)</p>
<p>Happy Holidays!</p>
<p>Martin</p>
<p>&nbsp;&nbsp;&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Clustering: What exactly is a File Share Witness and when should I use one?</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/clustering-what-exactly-is-a-file-share-witness-and-when-should-i-use-one</link>
      <pubDate>Wed, 27 Jun 2012 06:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/06/27/clustering-what-exactly-is-a-file-share-witness-and-when-should-i-use-one/</guid>
      <description><![CDATA[Customers ask from time to time: &ldquo;What is a File Share Witness (FSW)?&rdquo;&nbsp; Sometimes...]]></description>
      <content:encoded><![CDATA[<div></div>
<p><span size="3"><span style="font-family: Calibri;" face="Calibri">Customers ask from time to time: &ldquo;What is a File Share Witness (FSW)?&rdquo;&nbsp; Sometimes they&rsquo;ve worked with prior versions of clustering and don&rsquo;t know what a FSW is, or that the option exists.&nbsp; The next question asked is usually: &ldquo;When should we use one?&rdquo;&nbsp; Before going into that, I&rsquo;ll review some subtle differences between legacy cluster quorum options and what&nbsp;options are available from Microsoft today for&nbsp;a Failover Cluster.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #17365d;" color="#17365d"><span style="font-family: Calibri;" face="Calibri">Legacy Cluster Quorum Options</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Quorum may be defined as the number of members of a group that must be present to conduct business.&nbsp;&nbsp; For a legacy (Windows NT/2000)&nbsp;two-node cluster that lost all communications and became partitioned, whichever node could maintain reservation of the quorum disk first would survive and own it.&nbsp; The quorum disk was a tie-breaker for systems that could not communicate as well as an additional storage location for cluster configuration data.&nbsp; One downside to this model was that if the quorum disk failed, so did the cluster.&nbsp;&nbsp; A legacy two node cluster could not function without it.&nbsp; So if just the disk failed but both nodes remained, the cluster would cease to function.&nbsp; Therefore, the quorum disk was very important for legacy clusters.&nbsp; With Windows Server 2003 clusters with more than two nodes, Majority Node Set was another quorum option.&nbsp; A MNS cluster can only run when the majority of cluster nodes are available.&nbsp;&nbsp; This model is typically not chosen for two node clusters because with this model you have to have two nodes minimum&nbsp;((2 / 2) +1 = 2)&hellip;to maintain majority.&nbsp;&nbsp; As of 2003 SP1, an option was added to allow use of a File Share Witness to add an additional vote so that in the same example above, a two node cluster could function with the loss of one node.</span></span></p>
<h2><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&nbsp;</span><span style="font-size: medium;" size="4"><span style="color: #17365d;" color="#17365d"><span style="font-family: Calibri;" face="Calibri">Quorum Options for Modern Clusters</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">With Windows Server 2008 and later clusters, if&nbsp;all <em>network</em> communication becomes severed between nodes, and quorum must be established, votes are counted.&nbsp; (The exception to this statement would be the disk only quorum model&nbsp;which is similar to the quorum model in legacy clusters where the only vote that is counted is the disk.&nbsp;&nbsp;This option is not recommended, and is rarely chosen.) &nbsp;By default, each node gets a vote and if configured, a single witness may be counted as a vote.&nbsp; A witness may be either a Witness Disk or File Share Witness (FSW).&nbsp; However, you cannot use both.&nbsp; Half of all possible votes + 1 must exist for there to be quorum.&nbsp; Therefore, for an even number of nodes you would want to have a FSW or witness disk.&nbsp; This means that the disk or FSW can cease to exist and as long as enough nodes are online then the cluster may still function.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The following TechNet link is a great reference for 2008 and 2008 R2 quorum options:</span></span></p>
<p><a href="http://technet.microsoft.com/en-us/library/cc770620(v=WS.10).aspx"><span style="font-family: Calibri; color: #0000ff; font-size: small;" size="3" face="Calibri" color="#0000ff">http://technet.microsoft.com/en-us/library/cc770620(v=WS.10).aspx</span></a></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">From that link, the following table describes when you would use an alternate method based on even or odd number of nodes.</span></span></p>
<div align="center">
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p><b>Description of cluster </b></p>
</td>
<td>
<p align="center"><b>Quorum recommendation </b></p>
</td>
</tr>
<tr>
<td>
<p>Odd number of nodes</p>
</td>
<td>
<p>Node Majority</p>
</td>
</tr>
<tr>
<td>
<p>Even number of nodes (but not a multi-site cluster)</p>
</td>
<td>
<p>Node and Disk Majority</p>
</td>
</tr>
<tr>
<td>
<p>Even number of nodes, multi-site cluster</p>
</td>
<td>
<p>Node and File Share Majority</p>
</td>
</tr>
<tr>
<td>
<p>Even number of nodes, no shared storage</p>
</td>
<td>
<p>Node and File Share Majority</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&nbsp;</span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #17365d;" color="#17365d"><span style="font-family: Calibri;" face="Calibri">What is a FSW and how does it differ from a disk?</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">All this discussion about votes is a perfect segue into what a File Share Witness (FSW) is and how it differs from a witness disk.&nbsp; A FSW is simply a file share that you may create on a completely separate server from the cluster to act like a disk for tie-breaker scenarios when quorum needs to be established.&nbsp;&nbsp; The share could reside on a file server, domain controller, or even a completely different cluster.&nbsp; A witness share needs to be available for a single connection, and available for all nodes of the cluster to be able to connect to &ndash; if you are using the FSW option for quorum.&nbsp;&nbsp; The purpose of the FSW is to have something else that can count as a vote in situations where the number of configured nodes isn&rsquo;t quite enough for determining quorum.&nbsp; A FSW is more likely to be used in multi-site clusters or where there is no common storage.&nbsp; A FSW does not store cluster configuration data like a disk.&nbsp; It does, however, contain information about which version of the cluster configuration database is most recent.&nbsp; Other than that, the FSW is just a share.&nbsp; Resources cannot fail to it, nor can the share act as a communications hub or alternate brain to make decisions in the event cluster nodes cannot communicate.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Remember the old capture the flag game you might have played at summer camp?&nbsp; Typically each team had a flag and had to protect it from capture by the opposing team.&nbsp; However, a variation on that game is where there is only one flag located at an alternate location in the woods and two teams try to find it.&nbsp;&nbsp; When the flag is captured by one team, that team wins.&nbsp; A FSW is somewhat like the flag at an alternate location where a team of surviving nodes that can obtain it are able to reach quorum and other nodes that cannot drop out of the active cluster.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">A Witness Disk is similar to a FSW except rather than being a file share somewhere on your network like a FSW, it is an actual disk provided by disk storage that is common to the cluster.&nbsp; Nodes arbitrate for exclusive access to the disk and the disk is capable of storing cluster configuration data.&nbsp;&nbsp; A witness disk counts as a vote.&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">By this point you may have a good understanding of what a FSW is, when it might be used, what it is, and what it isn&rsquo;t.&nbsp;&nbsp; Now let&rsquo;s look at a couple of make-believe cluster configurations that each use a FSW that are similar but quite different.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0121.FSW.Figure.1.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0121.FSW.Figure.1.jpg"><img style="display: block; margin-left: auto; margin-right: auto;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/0121.FSW.Figure.1.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/0121.FSW.Figure.1.jpg" /></a></span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span>&nbsp;</p>
<p align="center"></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This is a 4 node cluster that is split between two sites with a FSW in Site C.&nbsp; In this configuration there are 5 possible votes.&nbsp; Bidirectional communication is possible on the Public and Private networks.&nbsp; Site A and Site B have a link to Site C to connect to the FSW, but neither Site A or Site B may connect with each other through Site C&rsquo;s network.&nbsp;&nbsp;&nbsp; If one of the bi-directional networks fails, there remains&nbsp;one network that may be used for cluster communications for the nodes to determine connectivity and decide the best recovery method.&nbsp; If both bi-directional networks fail, then this cluster is partitioned into two sets of two nodes and the FSW must be leveraged to determine which set of nodes survives.&nbsp; The first set of nodes to successfully gain access to the FSW will survive.&nbsp; IF the network to Site C were a complete network allowing communication between Site A and Site B as well, then there would be an alternate communication path for the cluster to determine the best course of action&hellip;and this configuration would be that much better.</span></span></p>
<p align="center"></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/5822.FSW.Figure.2.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/5822.FSW.Figure.2.jpg"><img style="display: block; margin-left: auto; margin-right: auto;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/5822.FSW.Figure.2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/5822.FSW.Figure.2.jpg" /></a></span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span>&nbsp;</p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This variation is very similar to the first example and is something that customers have been known to implement.&nbsp; In this case, both bi-directional networks are actually VLANs that go through the same network connection.&nbsp; Therefore, the two separate networks have the vulnerability of a single network.&nbsp; Even if the Leased Net were redundant, that piece of this puzzle remains provided by the same network provider or could be cut by a backhoe somewhere between.&nbsp; So there exists a possibility the Leased Net segment could go down or become unresponsive. The validation process will warn if there is only a single network but it has no insight into what the underlying network actually is between the two sites.&nbsp; An extra network or bi-directional communication link through Site C would once again be an improvement.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Without a FSW in these two configurations, there would be no way to break the tie during communication loss as there are two sets of two nodes otherwise.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Let&rsquo;s take a non-technical example.&nbsp; Imagine you have 4 people on a camping trip.&nbsp; They park the truck at the camp parking lot and split into two groups of two.&nbsp; Each group hikes 5 miles in opposite directions from the truck they arrived in but at most, the groups are 5 miles from each other. &nbsp;They each make camp in a triangular setup like the second diagram above.&nbsp;&nbsp; Each group has a cell phone to communicate (with voice and text capability) and a heater.&nbsp; The truck contains a spare heater with a partial tank of fuel.&nbsp; Late at night, the heater at each camp fails.&nbsp; One runs out of fuel.&nbsp; The other experiences a mechanical problem.&nbsp; One or both groups are beyond cell range and cannot communicate.&nbsp; The first person that hikes back to the truck to get the spare heater has heat for their tent at their campsite.&nbsp; It doesn&rsquo;t matter if both camps can hike to the truck or can even see the truck directly from their camp.&nbsp; There is only one spare heater.&nbsp;&nbsp; Since there is no communication available, they can&rsquo;t call or txt message each other.&nbsp; The camp that ran out of fuel ends up getting the spare heater and almost enough fuel to make it through the night.&nbsp; The other camp wastes energy of one person hiking to the truck and back to find there is no spare heater and ultimately freezes with no working heater and extra fuel they can&rsquo;t use.&nbsp; &nbsp;Ideally, if the camps could communicate by other means, they would know to meet at the truck, swap the broken heater for the spare and divide up all the fuel so that both camps could have heat, or decide to leave and get coffee on the way home.&nbsp; With only one real communication path, the best decision for all 4 people could not be made.&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The cluster configuration is similar.&nbsp; With all communication severed, the cluster has to decide what to do based on the information available which may be limited.&nbsp; The FSW in the cluster example is capable of breaking the tie of two votes against two votes.&nbsp;&nbsp; However, the cluster is not able to help discern which site is actually the best one to continue because of other conditions.&nbsp; </span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #17365d;" color="#17365d"><span style="font-family: Calibri;" face="Calibri">How do I know if I&rsquo;ve chosen the best quorum model?</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">For a cluster with an odd number of nodes, Node Majority is the typical model chosen.&nbsp; However, with an even number of nodes it makes sense to have a witness resource as a vote.&nbsp;&nbsp; The validation process for clusters in Windows Server 2008 R2 can validate the cluster against best practices and suggest a different quorum model if the current selection is not the best option.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>VSS Timeouts during Backup?  Check Fragmentation!</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/vss-timeouts-during-backup-check-fragmentation</link>
      <pubDate>Wed, 13 Jun 2012 11:43:30 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/06/13/vss-timeouts-during-backup-check-fragmentation/</guid>
      <description><![CDATA[&nbsp;
Volume Snapshot Services (VSS) was and remains a good addition to the Windows OS.&nbsp;...]]></description>
      <content:encoded><![CDATA[<p><b></b>&nbsp;</p>
<p><span style="font-size: small;">Volume Snapshot Services (VSS) was and remains a good addition to the Windows OS.&nbsp; Without going into a lot of detail, this technology coordinates various components to ensure stable point-in-time backups even while applications may be running.&nbsp;&nbsp; Typically, this occurs successfully with only minimal interruption to the application.&nbsp;&nbsp; On occasion there can be problems taking backups of systems that result from configuration issues, missing fixes, to third-party providers and writers that need updates.&nbsp;&nbsp; VSS really does a lot during the course of a normal backup.&nbsp; There are a couple of points during the process that actions must be timely.&nbsp; Failure of components to complete I/O within the allotted time results in timeout.&nbsp; Sometimes something as simple as file system fragmentation can be the reason behind such timeouts.</span></p>
<p><span style="font-size: small;">A really good link describing all the things that happen during a VSS backup may be found using the following link.</span></p>
<p style="padding-left: 30px;"><span style="font-size: small;">&nbsp;<a href="http://msdn.microsoft.com/en-us/library/aa384589(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa384589(v=VS.85).aspx</a></span></p>
<p><span style="font-size: small;">Using the above link you will find a chart of VSS activities.&nbsp;&nbsp; Common places for trouble in this process are the shaded green and red areas.&nbsp; Consider the below excerpt from the chart:</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/6330.VSS_Timeout_diagram.jpg" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/6330.VSS_5F00_Timeout_5F00_diagram.jpg"><img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/92/80/6330.VSS_Timeout_diagram.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-80/6330.VSS_5F00_Timeout_5F00_diagram.jpg" /></a></p>
<p>&nbsp;</p>
<p><span style="font-size: small;">Each of these two highlighted areas denotes the finite amount of time for which operations <i>must </i>complete to avoid timeout.&nbsp; One particular configuration issue that can cause timeouts and backup failures at this juncture is file system fragmentation.&nbsp;&nbsp;&nbsp;&nbsp;Sounds pretty trivial right?&nbsp;&nbsp; Sure.&nbsp; For most systems and most environments a defragmentation plan may exist to prevent issues and to ensure optimum performance.&nbsp;&nbsp; In fact, many clients have a scheduled task to defrag the system drive automatically.&nbsp;&nbsp;&nbsp;In the case where the volume isn&rsquo;t defragmented regularly and there are no other combined issues, running defrag.exe may resolve the condition quickly to allow successful backups.&nbsp; However, if you have a file system that was upgraded from an older operating system &ndash; or by chance was formatted using an older deployment tool &ndash; it is possible that the file system may be using a smaller <i>cluster size</i> and may be more prone to&nbsp; ragmentation than the average system that uses a default cluster size or larger.&nbsp;&nbsp; It is also possible that systems like this may have other contributing factors that may prevent defrag.exe from resolving the issue of fragmentation preventing successful backups.&nbsp; It is recommended that systems use the default cluster size or larger for best performance.</span></p>
<p><span style="font-size: medium;"><b>Background on Converted Volumes and Small Cluster Size</b></span></p>
<p><span style="font-size: small;">If you find that a system volume has a small cluster size of 512 bytes (not to be confused with the sector size which is commonly 512 bytes), this file system might have been converted to NTFS at one point in the past by CONVERT.EXE.&nbsp; FAT could be the original file system later converted to NTFS.&nbsp;&nbsp;&nbsp;It is known that when converting to NTFS with CONVERT.EXE, the cluster size does not change from the original file system.&nbsp;&nbsp; Perhaps this system was upgraded to Windows Server 2003 or may have been formatted with some other type of deployment utility that used a small cluster size.&nbsp; When a volume is formatted freshly with NTFS, the file system uses a default cluster size of 4K providing the volume is less than 16TB.&nbsp;&nbsp; Volumes with a small cluster size are more likely to achieve significant levels of fragmentation faster than a volume of same size using a default or larger cluster size.&nbsp;&nbsp; Therefore, volumes with small cluster sizes may require more frequent defragmentation.</span></p>
<p><span style="font-size: small;">A second characteristic that may contribute to fragmentation is lack of free space.&nbsp;&nbsp; As a volume gets closer to being full, the likelihood of fragmentation increases.&nbsp;&nbsp; Combine this characteristic with a small cluster size and the likelihood of a highly fragmented volume increases dramatically. </span></p>
<p><span style="font-size: small;">A third contributing characteristic would be if the volume contains a page file configured to allow dynamic expansion as needed.&nbsp; If the page file experiences frequent extension on a volume that is already highly fragmented, the page file may become highly fragmented as well.&nbsp;&nbsp; A highly fragmented page file not only impacts performance but also may impede the ability to defragment the volume&hellip;especially if the volume is more than 60%-70% full.</span></p>
<p><span style="font-size: small;">The additional head and platter movements required because of the degree of fragmentation can easily result in VSS timeout because I/O operations have to be split into multiple I/O requests to retrieve data.&nbsp; Depending on the degree of fragmentation coupled with contributing factors may present a situation that defag.exe can&rsquo;t easily resolve in order to complete a successful backup.</span></p>
<p><span style="font-size: medium;"><b>Mitigation of a Highly Fragmented Volume that Won&rsquo;t Defragment</b></span></p>
<p><span style="font-size: small;">I recently consulted on a case where the page file itself contained over 500,000 fragments on a volume that was fragmented.&nbsp;&nbsp; For this volume, defragmentation activities could not get fragmentation on the volume below 20% and the delays to VSS consistently prevented successful backups.&nbsp; To resolve this condition in order to conduct a successful backup, the page file had to be removed from the system volume and located elsewhere, a restart performed, and defrag allowed to run a few times.&nbsp;&nbsp;&nbsp; Then after successful defrag and backup, we set the page file on the system volume to be a fixed size and sufficient for the system.&nbsp; The restart in this sequence of events is important because some file system space may remain locked after setting the page file on the system volume to zero.&nbsp; In fact, it might be better to approach this with a defragmentation utility being run from WinPE or safe mode so that the list of potential obstacles is even shorter.</span></p>
<p><span style="font-size: small;">The problem experienced on this system was one of cyclical nature contributed to by small cluster size, reduced amount of free space, and a dynamically expanding page file.&nbsp; &nbsp;Running defrag on a more frequent basis, &nbsp;removing page file issues, and keeping sufficient free space can prevent this type of situation from recurrence.&nbsp; Removing any one of the key issues would have had a positive impact on preventing the situation.&nbsp; However, the potential for fragmentation and VSS issues continues due to the small cluster size in use.</span></p>
<p><span style="font-size: small;">Typically for a system disk, the 4K default cluster size is adequate. For a volume to hold only databases you would likely use a much larger cluster size for better efficiency as recommended by the application.&nbsp;&nbsp; On any systems like this one that remain in production, it is advisable to monitor and address fragmentation on a regular basis to avoid issues.&nbsp; &nbsp;It may be desirable to negotiate down time to reformat the system volume with a larger cluster size and restore a known good backup to alleviate potential recurrence of issues and reduce the extra administrative overhead for a system using a small cluster size for the file system.</span>&nbsp;</p>
<p><span style="font-size: medium;"><b>Determining the Cluster Size</b></span></p>
<p><span style="font-size: small;">It may be a good proactive step to check other 2003 servers for 512 byte cluster sizes on the system partition in an effort to increase awareness of volume and page file fragmentation and to adjust practices as needed.&nbsp;&nbsp; An easy command to display cluster size is as follows:</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">fsutil fsinfo ntfsinfo c:</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">Sample output from a 512 byte cluster size volume:</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">Bytes Per Sector&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;512</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">Bytes Per Cluster:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>512 &lt;</b></span></p>
<p style="padding-left: 60px;">&nbsp;</p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">Sample output from a 4096 byte (4K) cluster size volume:</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">.</span></p>
<p style="padding-left: 60px;"><span style="font-family: terminal,monaco; font-size: small;">Bytes Per Cluster :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>4096 &lt;</b></span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><b>Additional Considerations</b></span></p>
<p><span style="font-size: small;">If using volumes with a small cluster size and using Shadow Copies for Shared Folders to have previous versions of files available, the number of changes caused by defragmentation on a highly fragmented volume can also cause shadow copies containing previous versions of files to be deleted.&nbsp; Therefore, for Shadow Copies for Shared Folders, it is a best practice to use 16K clusters or larger.</span></p>
<p><span style="font-size: small;">For more information about NTFS, please consult the following TechNet document:</span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><a href="http://technet.microsoft.com/en-us/library/cc767961.aspx">http://technet.microsoft.com/en-us/library/cc767961.aspx</a></span></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Debug: Why isn’t this IRP being serviced on a hung server?</title>
      <link>https://docs.microsoft.com/archive/blogs/mlucas/debug-why-isnt-this-irp-being-serviced-on-a-hung-server</link>
      <pubDate>Wed, 04 Apr 2012 12:24:00 GMT</pubDate>
      <dc:creator><![CDATA[Martin Lucas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/mlucas/2012/04/04/debug-why-isnt-this-irp-being-serviced-on-a-hung-server/</guid>
      <description><![CDATA[Have you ever been following an I/O request in a crash dump that leads to another I/O Request Packet...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">Have you ever been following an I/O request in a crash dump that leads to another I/O Request Packet (IRP) &ndash; to then be at a dead end and not know why the driver isn&rsquo;t servicing the IRP?&nbsp;&nbsp; If so, you are not alone.&nbsp; It could be that this transaction involves a work item and system worker threads.&nbsp; !analyze &ndash;v typically doesn&rsquo;t go far enough to illuminate an issue like this and simply looking at locks and IRPs may not be enough.&nbsp; A deadlocked system may, in fact, look idle at first glance within the debugger.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">Many times drivers and other kernel components create their own threads to process workloads.&nbsp; The kernel offers the ability for drivers and other kernel components to create <b><i>work items</i></b> to be queued and processed by a pool of system <b><i>worker threads</i></b>. &nbsp;Worker threads are re-used over and over and will show idle if there are no work items remaining in the queue. These work items can come from drivers or from other kernel threads (for example, at DPC level) where the thread cannot perform an action because of the current Interrupt Request&nbsp; Level (IRQL) of the processor.&nbsp; Such requests may be handled by worker threads that are able to execute later or by another processor.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">When a thread creates a work item, it calls a kernel API (there are a few to choose from) to queue the work item.&nbsp; If you&rsquo;re looking at a thread stack that has created the work item already, you will not see the API call used but instead may see calls that lead up to a wait for object call.&nbsp; Often what the thread is waiting on at this point is an event that signals when the work item completes.&nbsp; For more&nbsp; information on worker threads or work items, consult &ldquo;Windows Internals&rdquo; by Mark Russinovich and David Solomon.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">Why did I bring up work items like that?&nbsp;&nbsp;&nbsp;Worker threads and queued work items can be very important&nbsp;things to check when debugging a hung system...and if you're used to debugging&nbsp;hang dumps that don't involve them -- it is easy to forget to look at them when the cause of a hang doesn't make sense.&nbsp;&nbsp;&nbsp;Debugging of&nbsp;crash or hang dumps is an acquired skill and it&nbsp;often helps to have&nbsp;good examples to refer back to.&nbsp; The following annotated debug session is a classic example of a deadlocked system that appears to be blocked on a Windows Server driver but in fact is blocked by something else entirely.&nbsp; The crash dump was manually induced on a hung system.&nbsp; Dumps like these can take many hours of analysis to prove or disprove involvement of components.&nbsp; Much of the output has been truncated appropriately and formatted for readability because some of these commands produce excessive amounts of information.&nbsp; Special thanks to the Debug Ninja for assisting with this one!</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">Using !locks reveals a lock held exclusively with many threads waiting on it.</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !locks</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">**** DUMP OF ALL RESOURCE OBJECTS ****</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">KD: Scanning for held locks...</span></p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">Resource @ 0xfffffa9006bf5150&nbsp;&nbsp;&nbsp; Exclusively owned</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;Contention Count = 1892</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;NumberOfExclusiveWaiters = 33</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp; Threads: <span style="font-size: small;"><b>fffffa900b7915d0</b></span>-01&lt;*&gt;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp; Threads Waiting On Exclusive Access:</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900e50f060&nbsp; fffffa900e7fe060 &nbsp;fffffa900c86f060&nbsp; fffffa900eaa44f0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900edaebb0&nbsp; fffffa900ebf4bb0&nbsp; fffffa900d5e5740&nbsp; fffffa900f3a3790&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa90065b58e0&nbsp;</strong></span><span style="font-family: terminal,monaco; font-size: x-small;"> fffffa900ae79720&nbsp; fffffa900eddabb0&nbsp; fffffa900d5de040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa90065b4040&nbsp; fffffa900b371280&nbsp; fffffa90065c2720&nbsp; fffffa900ae79bb0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900ec4dbb0&nbsp; fffffa900c9b6bb0&nbsp; fffffa90065c2290&nbsp; fffffa90065b4720&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900cf9cbb0&nbsp; fffffa900d5c0bb0&nbsp; fffffa90065b4bb0&nbsp; fffffa90065b3bb0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900b668040&nbsp; fffffa90065b3040&nbsp; fffffa90065c2bb0&nbsp; fffffa900f4a2bb0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900f0e1bb0&nbsp; fffffa900edcdbb0&nbsp; fffffa90065b3720&nbsp; fffffa900cc5abb0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-align: left;"><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900ddc6060&nbsp;&nbsp;</span></p>
<p>&nbsp;</p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">Looking at thread <b>fffffa900b7915d0 </b>that owns this lock, it can be seen that the last driver on the stack before the thread went into a wait is fltmgr.sys which is a Windows driver.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !thread <b>fffffa900b7915d0</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>THREAD fffffa900b7915d0</b>&nbsp; Cid 1fa0.1d20&nbsp; [&hellip;] <b>WAIT:(Executive)</b> KernelMode Non-Alertable</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; <b>fffffa600358bc98&nbsp; NotificationEvent</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">IRP List:</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; <b>fffffa900d9cd8b0</b>: (0006,03a0) Flags:00000884&nbsp; Mdl: 00000000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; fffffa900ea51960:(0006,03a0) Flags: 00000884&nbsp; Mdl:00000000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Not impersonating</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">DeviceMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">fffff88011eaa630</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Owning Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fffffa900eef5480&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.exe</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Attached Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N/A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N/A</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Wait Start TickCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;81612&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Ticks: 31801 (0:00:08:16.098</b>)</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Context Switch Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: terminal,monaco;">206&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IdealProcessor:1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">UserTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: terminal,monaco;">00:00:00.000</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>KernelTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00.046</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Win32 Start Address 0x000000004ab67370</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Stack Init fffffa600358edb0 Current fffffa600358b9b0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Base fffffa600358f000 Limit fffffa6003589000 Call 0</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Priority 14 BasePriority 8 PriorityDecrement 5 IoPriority 2 </span><span style="font-family: terminal,monaco;">PagePriority 5</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Child-SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">RetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call Site</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358b9f0 fffff800`01a666fa <b>nt!KiSwapContext+0x7f</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bb30 fffff800`01a5b38b <b>nt!KiSwapThread+0x13a</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bba0 fffffa60`00d70142 <b>nt!KeWaitForSingleObject+0x2cb</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>fffffa60`0358bc30</b> fffffa60`00d68fa4 <b>fltmgr!FltpPostSyncOperation+0xc2</b></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bce0 fffffa60`00d62cdb </span><span style="font-family: terminal,monaco;">fltmgr!FltpGetNormalizedFileName+0x69d4</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bd10 fffffa60`00d46979 fltmgr!FltpCreateFileNameInformation+0xab</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bd40 fffffa60`00d51334 </span><span style="font-family: terminal,monaco;">fltmgr!FltpGetFileNameInformation+0x3b9</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bdd0 fffffa60`0b0cb9e0 </span><span style="font-family: terminal,monaco;">fltmgr!FltGetFileNameInformation+0x174</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358be60 fffffa60`0b0cbea1 AnotherDriver+0x89e0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bea0 fffffa60`00d44eca AnotherDriver+0x8ea1</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c060 fffffa60`00d43fce </span><span style="font-family: terminal,monaco;">fltmgr!FltpPerformPostCallbacks+0x30b</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c130 fffffa60`00d6026c </span><span style="font-family: terminal,monaco;">fltmgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x34e</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c1a0 fffffa60`00e389bc fltmgr!FltpCreate+0x25d</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c250 fffffa60`00e46a82 3rdPartyDrv+0x2e9bc</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c290 fffffa60`00e4668f 3rdPartyDrv+0x3ca82</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c330 fffffa60`00fc499f 3rdPartyDrv+0x3c68f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c3a0 fffff800`01cd29d9 3rdPartyDrv+0x1ba99f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c3f0 fffff800`01ccaed2 nt!IopParseDevice+0x5f9</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c590 fffff800`01ccba65 </span><span style="font-family: terminal,monaco;">nt!ObpLookupObjectName+0x593</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c6a0 fffff800`01cd1047 </span><span style="font-family: terminal,monaco;">nt!ObOpenObjectByName+0x2f5</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c770 fffff800`01cdaed8 nt!IopCreateFile+0x287</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c810 fffff800`01a63f33 nt!NtCreateFile+0x78</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c8a0 fffff800`01a64440 </span><span style="font-family: terminal,monaco;">nt!KiSystemServiceCopyEnd+0x13</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">In this thread, you can see that it is waiting on Executive activity, denoted by <b>WAIT: (Executive)</b>.&nbsp; In fact, this thread has been waiting for over 8 minutes (see <b>Ticks: 31801 (0:00:08:16.098</b>)).&nbsp; Context has been swapped as noted with nt!KiSwapContext and it is waiting on notification event <b>fffffa600358bc98</b>.&nbsp; The event is tied to what this thread is waiting on and when signaled this thread may be scheduled to resume execution.&nbsp;&nbsp; However, we need to see what this thread is waiting on because so many threads are unable to execute pending release of the lock this thread owns.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">At this point one could look at the IRPs that !thread shows.&nbsp; However, if you just look at the IRPs and stop there, you&rsquo;ll have the wrong conclusion.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !irp fffffa900d9cd8b0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Irp is active with 9 stacks 8 is current (= 0xfffffa900d9cdb78)</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;No Mdl: No System </span><span style="font-family: terminal,monaco;">Buffer: Thread fffffa900b7915d0:&nbsp; Irp </span><span style="font-family: terminal,monaco;">stack trace.&nbsp;</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp; cmd&nbsp; flg cl Device&nbsp;&nbsp; File&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">Completion-Context</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0] &nbsp;&nbsp;0&nbsp; 0 </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;">&nbsp;<span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 00000000 00000000 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;">&nbsp;<span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 00000000 00000000 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: 00000000 00000000 00000000 00000000</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 00000000 00000000 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;">&nbsp;<span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 00000000 00000000 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;">&nbsp;<span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 00000000 00000000 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;">&nbsp;<span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 <b>fffffa9006f05030</b> 00000000 fffffa6000d452b0-fffffa900db85010&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\FileSystem\Ntfs</b>&nbsp; fltmgr!FltpSynchronizedOperationCompletion</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">00000000 00000000 00000000 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;"><b>&gt;</b>[&nbsp; 0, 0]&nbsp;&nbsp; 0 e0 <b>fffffa9006f1d420 </b></span><span style="font-family: terminal,monaco;">fffffa900cc00f20 fffffa6000e46bc0-fffffa900be8cb40 Success Error Cancel</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\FileSystem\FltMgr</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3rdPartyDrv</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: </span><span style="font-family: terminal,monaco;">fffffa600358c538 01000120 00070080 00000000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;[&nbsp; 0, 0]&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">0&nbsp; 0 fffffa9007422890 fffffa900cc00f20 </span><span style="font-family: terminal,monaco;">00000000-00000000&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \FileSystem\3rdPartyDrv</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Args: fffffa600358c538 </span><span style="font-family: terminal,monaco;">01000120 00070080 00000000</span></span></p>
<p></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">At first glance, this IRP might look like it is waiting to be handled by NTFS.SYS.&nbsp; However, the <i>current</i> entry in the IRP stack is shown by the &gt; symbol on the far left which indicates the IRP is waiting on&nbsp; FltMgr.sys.&nbsp; Looking at the device object below, &nbsp;&nbsp;the Fltmgr device driver is in the device stack with NTFS and the third-party driver from the thread stack.&nbsp; All this makes sense.&nbsp; You can also see below that the queue for that device is not busy.&nbsp; If this driver was actually stalled, you might see queued IRPs listed in place of the &ldquo;Device queue is not busy&rdquo; text.&nbsp; Current Irp shows 00000000 which indicates the driver isn&rsquo;t currently processing an I/O request and is idle.</span></p>
<p></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !devobj fffffa9006f1d420</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Device object (fffffa9006f1d420) is for:</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp; \FileSystem\FltMgr DriverObject fffffa9006bd9e70</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Current Irp <b>00000000 </b>RefCount 0 Type 00000008 Flags 00040000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">DevExt fffffa9006f1d570 DevObjExt fffffa9006f1d5c8</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">ExtensionFlags (0x00000800)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unknown flags 0x00000800</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">AttachedDevice (Upper) fffffa9006f6e040 \FileSystem\3rdPartyDrv</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">AttachedTo (Lower) fffffa9006f05030 \FileSystem\Ntfs</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>Device queue is not busy</b>.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">If indeed FltMgr sent up a work item, that item certainly </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">should have been worked and completed in far less than the 8 minutes the thread </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">has waited.&nbsp; Why not check the worker </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">threads and work item queue and see what that looks like?&nbsp; &ldquo;!exqueue f&rdquo; will list out the system worker </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">threads and queued work items.&nbsp; Be </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">prepared for lots of information to scroll by within your debug session.&nbsp; The below output has been truncated for </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">obvious reasons.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !exqueue f</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">**** Critical WorkQueue ( Concurrency: current = 0 maximum = </span><span style="font-family: terminal,monaco;">8 )</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">THREAD <b>fffffa90065b58e0</b>&nbsp; Cid 0004.001c&nbsp; </span><span style="font-family: terminal,monaco;">[..] WAIT: <b>(WrResource) </b></span><span style="font-family: terminal,monaco;">KernelMode Non-Alertable</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; fffffa9007b17d20&nbsp; SynchronizationEvent</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; fffffa90065b5998&nbsp; NotificationTimer</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Not impersonating</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">DeviceMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">fffff88000007390</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Owning Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">fffffa9006562040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Attached Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">N/A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N/A</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Wait Start TickCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">113256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ticks: 157 </span><span style="font-family: terminal,monaco;">(0:00:00:02.449)</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Context Switch Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">6738&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IdealProcessor: </span><span style="font-family: terminal,monaco;">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">UserTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">00:00:00.000</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">KernelTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">00:00:00.468</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Win32 Start Address nt!ExpWorkerThread (0xfffff80001a6b7d0)</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Stack Init fffffa6001f4edb0 Current fffffa6001f4e5f0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Base fffffa6001f4f000 Limit fffffa6001f49000 Call 0</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Priority 14 BasePriority 13 PriorityDecrement 0 IoPriority 2 </span><span style="font-family: terminal,monaco;">PagePriority 5</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">Child-SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: terminal,monaco;">RetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call Site</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4e630 fffff800`01a666fa nt!KiSwapContext+0x7f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4e770 fffff800`01a5b38b nt!KiSwapThread+0x13a</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`01f4e7e0 fffff800`01a90406 </span><span style="font-family: terminal,monaco;">nt!KeWaitForSingleObject+0x2cb</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`01f4e870 fffff800`01a6ba75 </span><span style="font-family: terminal,monaco;">nt!ExpWaitForResource+0xda</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`01f4e8d0 fffffa60`00e9113f </span><span style="font-family: terminal,monaco;">nt!ExAcquireResourceExclusiveLite+0xa5</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4e920 fffffa60`00eeaba8 <b>3rdPartyDrv</b>+0x8713f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4e950 fffffa60`00ee7da3 <b>3rdPartyDrv</b>+0xe0ba8</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4e9b0 fffffa60`00edecf7 <b>3rdPartyDrv</b>+0xddda3</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ea60 fffffa60`00edfbe6 <b>3rdPartyDrv</b>+0xd4cf7</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ead0 fffffa60`00edfe35 <b>3rdPartyDrv</b>+0xd5be6</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ebb0 fffffa60`00e625d1 <b>3rdPartyDrv</b>+0xd5e35</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ec00 fffffa60`00e62ee0 <b>3rdPartyDrv</b>+0x585d1</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ecb0 fffff800`01a6b8cb <b>3rdPartyDrv</b>+0x58ee0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`01f4ecf0 fffff800`01c6ef97 nt!ExpWorkerThread+0xfb</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`01f4ed50 fffff800`01aa15c6 </span><span style="font-family: terminal,monaco;">nt!PspSystemThreadStartup+0x57</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`01f4ed80 00000000`00000000 </span><span style="font-family: terminal,monaco;">nt!KxStartSystemThread+0x16</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa90073f18c0</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa9007407300</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa90073eb060</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa900d56ce50</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa900ccddd40</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa900ccae980</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>fltmgr!FltpSyncOpWorker </b></span><span style="font-family: terminal,monaco;">(fffffa6000d6e5e0) Parameter <b>fffffa600358bc60</b></span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine nt!CcWorkerThread (fffff80001a4edb0) </span><span style="font-family: terminal,monaco;">Parameter fffffa90065c9660</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa900b9b1360</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">PENDING: WorkerRoutine <b>3rdPartyDrv</b>+0xfffffa6000e62eb0 </span><span style="font-family: terminal,monaco;">([...]) Parameter fffffa900cbd37e0</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif; font-size: small;">While the above output is truncated&nbsp;output from !exqueue for this discussion, the debugger command listed out all of the critical worker threads in the system.&nbsp; Every single thread looked like <b>fffffa90065b58e0</b> above that is waiting on the same resource, and all from the same third-party driver.&nbsp; In fact, you can find <b>fffffa90065b58e0</b> in the earlier list of threads waiting on exclusive access to the lock. After the listing of the critical threads you see the list of pending work items that are queued. That list had over 3000 entries&hellip;where nearly all of them were queued work items </span><span style="font-family: arial,helvetica,sans-serif; font-size: small;">from the same third-party driver.&nbsp;&nbsp; The reason I chose the excerpt above from that long list of queued work items is because it contains a work item that was initiated by the original thread that owns the lock.&nbsp; You can cross check that this is the correct fltmgr entry by looking at the address provided (<b>fffffa600358bc60</b>)<b> </b>where the parameters for this work item are located.&nbsp; If you go back to the original thread that owns the lock, you will find that this pointer is to this thread&rsquo;s stack memory where the parameters are stored which happens to be located between the calls to fltmgr!FltpGetNormalizedFileName and fltmgr!FltpPostSyncOperation.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">0: kd&gt; !thread <b>fffffa900b7915d0</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>THREAD fffffa900b7915d0</b>&nbsp; Cid 1fa0.1d20&nbsp; [&hellip;] <b>WAIT: (Executive)</b> KernelMode Non-Alertable</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; <b>fffffa600358bc98&nbsp; NotificationEvent</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">IRP List:</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; <b>fffffa900d9cd8b0</b>: (0006,03a0) Flags: 00000884&nbsp; Mdl: 00000000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">&nbsp;&nbsp;&nbsp; fffffa900ea51960: (0006,03a0) Flags: 00000884&nbsp; Mdl: 00000000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Not impersonating</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">DeviceMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffff88011eaa630</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Owning Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fffffa900eef5480&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.exe</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Attached Process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N/A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N/A</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Wait Start TickCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 81612&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Ticks: 31801 (0:00:08:16.098</b>)</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Context Switch Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 206&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IdealProcessor: 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">UserTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00.000</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>KernelTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00.046</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Win32 Start Address 0x000000004ab67370</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Stack Init fffffa600358edb0 Current fffffa600358b9b0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Base fffffa600358f000 Limit fffffa6003589000 Call 0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Priority 14 BasePriority 8 PriorityDecrement 5 IoPriority 2 PagePriority 5</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">Child-SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call Site</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358b9f0 fffff800`01a666fa <b>nt!KiSwapContext+0x7f</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bb30 fffff800`01a5b38b <b>nt!KiSwapThread+0x13a</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bba0 fffffa60`00d70142 <b>nt!KeWaitForSingleObject+0x2cb</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>fffffa60`0358bc30</b> fffffa60`00d68fa4 <b>fltmgr!FltpPostSyncOperation+0xc2</b></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;"><b>fffffa60`0358bce0</b> fffffa60`00d62cdb fltmgr!FltpGetNormalizedFileName+0x69d4</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bd10 fffffa60`00d46979 </span><span style="font-family: terminal,monaco;">fltmgr!FltpCreateFileNameInformation+0xab</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bd40 fffffa60`00d51334 </span><span style="font-family: terminal,monaco;">fltmgr!FltpGetFileNameInformation+0x3b9</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358bdd0 fffffa60`0b0cb9e0 </span><span style="font-family: terminal,monaco;">fltmgr!FltGetFileNameInformation+0x174</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358be60 fffffa60`0b0cbea1 AnotherDriver+0x89e0</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358bea0 fffffa60`00d44eca AnotherDriver+0x8ea1</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c060 fffffa60`00d43fce </span><span style="font-family: terminal,monaco;">fltmgr!FltpPerformPostCallbacks+0x30b</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c130 fffffa60`00d6026c </span><span style="font-family: terminal,monaco;">fltmgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x34e</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c1a0 fffffa60`00e389bc fltmgr!FltpCreate+0x25d</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c250 fffffa60`00e46a82 3rdPartyDrv+0x2e9bc</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c290 fffffa60`00e4668f 3rdPartyDrv+0x3ca82</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c330 fffffa60`00fc499f 3rdPartyDrv+0x3c68f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c3a0 fffff800`01cd29d9 3rdPartyDrv+0x1ba99f</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c3f0 fffff800`01ccaed2 nt!IopParseDevice+0x5f9</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c590 fffff800`01ccba65 </span><span style="font-family: terminal,monaco;">nt!ObpLookupObjectName+0x593</span></span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c6a0 fffff800`01cd1047 </span><span style="font-family: terminal,monaco;">nt!ObOpenObjectByName+0x2f5</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c770 fffff800`01cdaed8 nt!IopCreateFile+0x287</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">fffffa60`0358c810 fffff800`01a63f33 nt!NtCreateFile+0x78</span></p>
<p><span style="font-size: x-small;"><span style="font-family: terminal,monaco;">fffffa60`0358c8a0 fffff800`01a64440 </span><span style="font-family: terminal,monaco;">nt!KiSystemServiceCopyEnd+0x13</span></span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: terminal,monaco; font-size: x-small;">.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: small;">In summary, this was a case where a third-party driver tied up all of the critical worker threads in the kernel due to waiting on the same lock.&nbsp; The same driver caused a deadlock situation on itself because the thread owning the lock by the same driver is waiting on a work item to be processed so that it can release the lock.&nbsp;&nbsp; The work item will never be processed because the kernel worker threads are all blocked.&nbsp; Therefore, the third-party driver needs to be removed, replaced, or repaired so that it handles things differently and doesn&rsquo;t block all the critical worker threads or&nbsp; deadlock on itself</span>.</span></p>
<p>&nbsp;</p>
<p></p>
<p></p>
<p></p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>