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

<channel>
	<title>The Storage Architect &#187; NTFS</title>
	<atom:link href="http://thestoragearchitect.com/tag/ntfs/feed/" rel="self" type="application/rss+xml" />
	<link>http://thestoragearchitect.com</link>
	<description>Storage, Virtualisation &#38; Cloud</description>
	<lastBuildDate>Wed, 23 May 2012 22:20:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Enterprise Computing: Thin Provisioning and The Cookie Monster!</title>
		<link>http://thestoragearchitect.com/2009/11/17/enterprise-computing-thin-provisioning-and-the-cookie-monster/</link>
		<comments>http://thestoragearchitect.com/2009/11/17/enterprise-computing-thin-provisioning-and-the-cookie-monster/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:45:35 +0000</pubDate>
		<dc:creator>Chris M Evans</dc:creator>
				<category><![CDATA[GestaltIT]]></category>
		<category><![CDATA[Cookie Monster]]></category>
		<category><![CDATA[File System]]></category>
		<category><![CDATA[MFT]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[Tech Field Day]]></category>
		<category><![CDATA[Thick Provisioning]]></category>
		<category><![CDATA[thin provisioning]]></category>
		<category><![CDATA[VMFS]]></category>
		<category><![CDATA[Zero Block Reclaim]]></category>

		<guid isPermaLink="false">http://thestoragearchitect.com/?p=895</guid>
		<description><![CDATA[<p>The <a href="http://gestaltit.com/featured/top/stephen/tech-field-day-1/" >Gestalt IT Field Day</a> was a great success in bringing together a mixture of delegates from varying discplines. Following the presentations from 3Par and Symantec, there was heated debate about the implementation of Thin Provisioning and the ability to reclaim released storage resources. This post covers the basic concepts of Thin Provisioning [...]<!--Begin ClixTrac.com Rotator Code -->
<script type="text/javascript" language="javascript" src="http://www.clixtrac.com/rotate/321"></script>
<!--End ClixTrac.com Rotator Code -->]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://gestaltit.com/featured/top/stephen/tech-field-day-1/" >Gestalt IT Field Day</a> was a great success in bringing together a mixture of delegates from varying discplines. Following the presentations from 3Par and Symantec, there was <strong>heated debate</strong> about the implementation of Thin Provisioning and the ability to <strong>reclaim</strong> released storage resources. This post covers the basic concepts of Thin Provisioning and more importantly how deleted resources can be recovered over time.</p>
<p><strong>Thin Provisioning Primer</strong></p>
<p>The underlying concept of thin provisioning is pretty simple; provide storage resources to those requesting it <strong>only</strong> as they need it.</p>
<p><a rel="nofollow" href="http://thestoragearchitect.files.wordpress.com/2009/11/tp-example-1.jpg" ><img class="alignright size-medium wp-image-897" style="margin:5px;" title="TP Example 1" src="http://thestoragearchitect.files.wordpress.com/2009/11/tp-example-1.jpg?w=300" alt="" width="180" height="167" /></a>Think of a standard <strong>&#8216;thick provisioned&#8217;</strong> environment.  As thick LUNs are created, the storage is assigned and mapped to that LUN to the <strong>full extent</strong> of the size requested.  See, the first graphic, which shows a RAID group of four 5GB drives.  I&#8217;ve assumed &#8220;RAID-0&#8243; here for simplification, i.e. no RAID overhead.  Each LUN (coloured separately) is made up from a 1GB slice of the available disks.  Thick provisioning is great if the LUNs are all 100% allocated.  In that instance, 100% of the available physical space is used up.  However, it is never the case that <strong>100%</strong> of a LUN is used and so wastage exists. </p>
<p>Look at the second graphic.  This shows how <strong>thin provisioned</strong> LUNs work.  As storage is requested by the LUN, the space is mapped to physical blocks of storage.  In this <a rel="nofollow" href="http://thestoragearchitect.files.wordpress.com/2009/11/tp-example-2.jpg" ><img class="alignright size-medium wp-image-901" title="TP Example 2" src="http://thestoragearchitect.files.wordpress.com/2009/11/tp-example-2.jpg?w=292" alt="" width="175" height="180" /></a>example, none of the logical LUNs are <strong>fully utilised</strong> and so don&#8217;t consume their full theoretical capacity.  This means that the pool of space can be over-subscribed and a sixth new LUN created.  Obviously there&#8217;s no such thing as a <strong>free lunch</strong> or infinite storage resources and in this example if a further five blocks are requested then physical space would be exhausted.  The next request for a new storage block would result in an error situation and this represents the main concern with <strong>over-subscribing</strong> thin provisioned volumes.</p>
<p>Now we get the concept of thin provisioning, there are a further two aspects to consider.  Firstly, when we say a LUN isn&#8217;t <strong>100% utilised</strong>, what to we mean?  Second, how can deleted blocks be <strong>returned</strong> to our free physical pool?</p>
<p><a rel="nofollow" href="http://thestoragearchitect.files.wordpress.com/2009/11/defrag1.jpg" ><img class="alignright size-medium wp-image-903" title="Defrag1" src="http://thestoragearchitect.files.wordpress.com/2009/11/defrag1.jpg?w=300" alt="" width="300" height="129" /></a>As LUNs are presented to hosts, they are formatted with a <strong>file system</strong>, for example on Windows it&#8217;s <strong>NTFS</strong>; a VMware environment would use <strong>VMFS</strong>.  The file system will have a standard layout which determines where the file index sits and the method in which files are allocated onto the disk.  Have a look at the third graphic.  This is a map of the C: drive for one of my servers.  Each block represents approximately <strong>22MB</strong>.  You can clearly see the MFT (NTFS index) in the centre of the volume.  A <strong>large percentage</strong> of the disk is unused.  In a thin provisioned environment, storage would have been requested only for the blocks with valid data and in this way, a LUN can be <strong>less</strong> than 100% allocated. </p>
<p>OK, so what happens if I create some files then <strong>delete</strong> them on the file system?  Most file systems remove a file by deleting the entry in the index rather than physically overwriting the file contents with binary zeros.  This is <strong>quick </strong>and <strong>efficient</strong> (if not slightly unsafe security wise).  The actual data isn&#8217;t <strong>overwritten</strong> and it is this &#8216;logical&#8217; deletion that enables undelete utilities to work.  The trouble is, most disk arrays are not <strong>file system aware</strong> and so can&#8217;t detect the logical deletion of a file.  Those arrays that offer thin provisioning typically detect unwanted space by looking for blocks containing only <strong>&#8216;binary zeros&#8217;</strong>.  This means simply deleting files will <strong>not</strong> release unused space back to the free block pool (except for one storage device I&#8217;ll discuss in more detail another time, that&#8217;s <strong>Drobo</strong>). Arrays which are capable of recovering unused space need to see data overwritten in order to recover it.</p>
<p>This (finally) brings us to the cookie analogy.  Imagine <strong>cookies</strong> are my free pool blocks.  There are a number of ways in which storage arrays operate in handling thin provisioning &#8211; different cookie monster personalities:</p>
<ul>
<li><strong>The Greedy Cookie Monster;</strong> grabs all the cookies he thinks he might eat, but never eats all of them and never returns any &#8211; this is the thick provisioning model.</li>
<li><strong>The Selfish Cookie Monster;</strong> only grabs cookies as he gets hungry but if he doesn&#8217;t eat them immediately, doesn&#8217;t give them back &#8211; this is thin provisioning with no zero block reclaim.  Eventually thin provisioning will become thick as all logical blocks in a LUN become mapped to physical storage.</li>
<li><strong>The Nice Cookie Monster;</strong> takes the cookies as he gets hungry but only returns uneaten cookies if asked &#8211; this is thin provisioning with manual zero block reclaim.  A manual process is required to zero out the unused space and to return it to the free pool.</li>
<li><strong>The Saintly Cookie Monster;</strong> takes the cookes as he gest hungry and offers them back immediately he realises he can&#8217;t eat them  &#8211; this is thin provisioning with automatic zero block or free space reclaim. </li>
</ul>
<p>So, of the storage arrays out there offering thin provisioning, which fit the various Cookie Monster personality types?  I&#8217;ll leave that for you to guess.</p>
]]></content:encoded>
			<wfw:commentRss>http://thestoragearchitect.com/2009/11/17/enterprise-computing-thin-provisioning-and-the-cookie-monster/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>LUN Stacker</title>
		<link>http://thestoragearchitect.com/2008/11/04/lun-stacker/</link>
		<comments>http://thestoragearchitect.com/2008/11/04/lun-stacker/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 13:00:00 +0000</pubDate>
		<dc:creator>Chris M Evans</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FAT]]></category>
		<category><![CDATA[LUN consolidation]]></category>
		<category><![CDATA[MFT]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[stacker]]></category>
		<category><![CDATA[svc]]></category>
		<category><![CDATA[UVM]]></category>

		<guid isPermaLink="false">http://thestoragearchitect.wordpress.com/2008/11/04/lun-stacker/</guid>
		<description><![CDATA[<p>A <a rel="nofollow" href="http://storagebod.typepad.com/storagebods_blog/2008/10/a-stacked-feature-request.html" >recent post</a> from Martin &#8220;The Bod&#8221; Glassborow got me thinking about the whole process of LUN consolidation. I&#8217;ve done lots of migrations where people quake at the thought of changing the LUN size from one array to another. Now, I almost always want to change LUN sizes, as the vendor specific [...]<!--Begin ClixTrac.com Rotator Code -->
<script type="text/javascript" language="javascript" src="http://www.clixtrac.com/rotate/321"></script>
<!--End ClixTrac.com Rotator Code -->]]></description>
			<content:encoded><![CDATA[<p>A <a rel="nofollow" href="http://storagebod.typepad.com/storagebods_blog/2008/10/a-stacked-feature-request.html" >recent post</a> from Martin &#8220;The Bod&#8221; Glassborow got me thinking about the whole process of LUN consolidation. I&#8217;ve done lots of migrations where people quake at the thought of changing the LUN size from one array to another. Now, I almost always want to change LUN sizes, as the vendor specific ones &#8211; 8.43GB/13.59GB etc are pretty painful and wasteful at the same time.</p>
<p>There&#8217;s another good reason to standardise on LUNs. If you&#8217;ve implemented a good dual-vendor strategy and sorted your firmware driver stack out, then you can position to take storage from any of your preferred vendors. There&#8217;s nothing better than having all of your vendors sweating on that next 500TB purchase when they know you take your storage from either or EMC/HDS/HP/IBM.</p>
<p>If LUNs and the I/O stack are all standardised, you can move data around too. The difficult part as alluded to in Martin&#8217;s post is achieving the restacking of data.</p>
<p><a rel="nofollow" href="http://4.bp.blogspot.com/_b1B7GuxiR0o/SRBSWMGJjlI/AAAAAAAAAGg/kFxK7hRVCTE/s1600-h/Stacker+-+4-11-08+-+1.jpg" ><img style="float:right;width:320px;cursor:hand;height:181px;margin:0 0 10px 10px;" alt="" src="http://4.bp.blogspot.com/_b1B7GuxiR0o/SRBSWMGJjlI/AAAAAAAAAGg/kFxK7hRVCTE/s320/Stacker+-+4-11-08+-+1.jpg" border="0" /></a></p>
<p>Here&#8217;s the problem; SAN storage is inherently block based and the underlying hardware has no idea of how you will lay out your data. Have a look at the following diagram. Each LUN from a SAN perspective is divided into blocks and each block has a logical block address. The array just services requests from the host for a block of data and reads/writes it on demand. It is the operating system which determines how the file system should be laid out on the underlying storage. Each volume will have a standard location (or standard method of calculating the location) for what was called the VTOC (Volume Table of Contents), also known as the FAT (File Allocation Table) in DOS and MFT (Master File Table) in NTFS. There are similar constructs for other O/S versions like Linux but I&#8217;m not 100% certain of the terminology so won&#8217;t risk the rath of getting it wrong.</p>
<p>The layout of data on a file system is not a trivial task. Apart from keeping track of files, there&#8217;s the requirement to keep track of free space and to be able to recreate the file index in the case of corruption, so some kind of journalling is likely to be implemented. There are also features such as compression, Single Instancing, Encryption, etc which all add to the mix of understanding exactly how file data is laid out on disk.</p>
<p><a rel="nofollow" href="http://4.bp.blogspot.com/_b1B7GuxiR0o/SRBW-ENJzSI/AAAAAAAAAGo/w-bsTXUSRlY/s1600-h/Stacker+-+4-11-08+-+2.jpg" ><img style="float:right;width:320px;cursor:hand;height:153px;margin:0 0 10px 10px;" alt="" src="http://4.bp.blogspot.com/_b1B7GuxiR0o/SRBW-ENJzSI/AAAAAAAAAGo/w-bsTXUSRlY/s320/Stacker+-+4-11-08+-+2.jpg" border="0" /></a>Now think of how multiple LUNs are currently connected together. This will be achieved with either a Volume Manager (like <a rel="nofollow" href="http://en.wikipedia.org/wiki/Veritas_Volume_Manager" >VxVM</a>), supplied as a separate product, or a native LVM (logical volume manager). All of these tools will spread the &#8220;logical&#8221; volume across multiple LUNs and will format the LUN with information to enable the volume to be recreated if the LUNs are moved to another host. VxVM achieves this by having a private area on each LUN which contains metadata to rebuild the logical volume. Each LUN can be divided into sub-disks and then recombined into a logical volume, as shown in this diagram.</p>
<p>So a physical LUN from an array may contain a whole or partial segment of a host volume, including LVM metadata.  Determining what part, whether all the parts are on this array (and where) is a tricky task &#8211; and we&#8217;re expecting that the transmission protocol (i.e. the fabric) can determine all of this information &#8220;on the fly&#8221; as it were.</p>
<p>My thought would be &#8211; why bother with a fabric-based consolidation tool? Products like VxVM provide a wide set of commands for volume migration, although not automated they certainly make the migration task more simple. I&#8217;ve seen some horrendous VxVM implementations, which would require some pretty impressive logic to be developed in order to understand how to deconstruct and reconstruct a volume.  However life is not that simple, and host-based migrations aren&#8217;t always easy to execute on, so potentially a product would be commercially viable, even if the first implementation was an offline version which couldn&#8217;t cope with host I/O at the same time.  </p>
<p>Funny, what&#8217;s required sounds a bit like a virtualisation product &#8211; perhaps the essence of this is already coded in SVC, UVM or Incipient?</p>
<div class="blogger-post-footer">
<p>_uacct = &#8220;UA-1104321-2&#8243;;<br />
urchinTracker();
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://thestoragearchitect.com/2008/11/04/lun-stacker/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Problems Problems</title>
		<link>http://thestoragearchitect.com/2007/09/21/problems-problems/</link>
		<comments>http://thestoragearchitect.com/2007/09/21/problems-problems/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 05:26:00 +0000</pubDate>
		<dc:creator>Chris M Evans</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HDS]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Tuning Manager]]></category>

		<guid isPermaLink="false">http://thestoragearchitect.wordpress.com/2007/09/21/problems-problems/</guid>
		<description><![CDATA[<p>This week I&#8217;ve been working on two interesting (ish) problems. Well, one more interesting than the other, one a case of the vendor needing to think about requirements more.</p> <p>Firstly, <a href="http://www.storagewiki.com/ow.asp?Tuning%5FManager" >Tuning Manager</a> (my old software <a rel="nofollow" href="http://en.wikipedia.org/wiki/Nemesis_%28mythology%29" >nemesis</a>) strikes again. Within Tuning Manager it is possible to track performance for all LUNs [...]<!--Begin ClixTrac.com Rotator Code -->
<script type="text/javascript" language="javascript" src="http://www.clixtrac.com/rotate/321"></script>
<!--End ClixTrac.com Rotator Code -->]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;ve been working on two interesting (ish) problems.  Well, one more interesting than the other, one a case of the vendor needing to think about requirements more.</p>
<p>Firstly, <a href="http://www.storagewiki.com/ow.asp?Tuning%5FManager" >Tuning Manager</a> (my old software <a rel="nofollow" href="http://en.wikipedia.org/wiki/Nemesis_%28mythology%29" >nemesis</a>) strikes again.  Within Tuning Manager it is possible to track performance for all LUNs in an array.  The gotcha I found this week is that the list of monitored LUNs represents only those allocated to hosts and is a static list which must be refreshed each time an allocation is performed!</p>
<p>This is just lack of thought on behalf of the developers not to provide a &#8220;track everything&#8221; option so it isn&#8217;t necessary to keep going into the product, selecting the agent, refreshing the LUN list and tagging them all over again.  No wonder allocations can take so long and be fraught with mistakes when Storage Admins have to include in their process the requirement to manually update the tuning product.  I&#8217;m still waiting for confirmation that there isn&#8217;t a way to automatically report on all LUNs.  If there isn&#8217;t then a product enhancement will be required to meet what I want.  In the meantime, I&#8217;ll have to ensure things are updated manually.  So if you configured Tuning Manager and the LUN list when you first installed an array, have a quick look to see if you&#8217;re monitoring everything or not.</p>
<p>I&#8217;m sure some of you out there will point out, with good reason, why HTnM doesn&#8217;t automatically scan all LUNs, but from my perspective, I&#8217;m never asked by senior management to monitor a performance issue *before* it has occurred, so I always prefer to have monitoring enabled for all devices and all subsystems if it doesn&#8217;t have an adverse affect on performance.</p>
<p>Second was an issue with the way NTFS works.  A number of filesystems on our SQL Server machines show high levels of fragmentation, despite there being plenty of freespace on the volumes in question.  This fragmentation issue seems to occur even when a volume is cleared and files are reallocated from scratch.</p>
<p>A quick trawl around the web found me various assertions  that NTFS deliberately leaves file clusters between files in order to provide an initial bit of expansion.  I&#8217;m not sure this is true as I can&#8217;t find a trusted source to indicate this is standard behaviour.  In addition I wonder if it the way in which some products allocate files; for instance if a SQL backup starts to create a backup file it has no real idea how big the file will become.  NTFS (I assume) will choose the largest block of freespace available and allocate the file there.  If another process allocates a file almost immediately, then it will get allocated just after the first file (which may only be a few clusters in size at this stage).  Then the first file gets extended and &#8220;leapfrogs&#8221; the second file, and so on, producing fragmentation in both files.</p>
<p>I&#8217;m not sure if this is what is happening, but if this is the way NTFS is working then it would explain the levels of fragmentation we see (some files have 200,000+ fragments in a 24GB file).  In addition, I don&#8217;t know for definite that the fragmentation is having a detremental impact on performance (these are SAN connected LUNs).  Everything is still speculation.  I guess I need to do more investigation&#8230;
<div class="blogger-post-footer">
<p>_uacct = &#8220;UA-1104321-2&#8243;;<br />
urchinTracker();
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://thestoragearchitect.com/2007/09/21/problems-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

