<html><body><p><tt>&gt; to the question. &nbsp;If I were to hypothetically use a 256K metadata <br>&gt; block size, does the \u201c1/32nd of a block\u201d come into play like it does<br>&gt; for \u201cnot metadata\u201d? &nbsp;I.e. 256 / 32 = 8K, so am I reading / writing <br>&gt; *2* inodes (assuming 4K inode size) minimum?</tt><br><br><tt>I think the point of confusion here is minimum allocation size vs minimum IO size -- those two are not one and the same. &nbsp;In fact in GPFS those are largely unrelated values. &nbsp;For low-level metadata files where multiple records are packed into the same block, it is possible to read/write either an individual record (such as an inode), or an entire block of records (which is what happens, for example, during inode copy-on-write). &nbsp;The minimum IO size in GPFS is 512 bytes. &nbsp;On a &quot;4K-aligned&quot; file system, GPFS vows to only do IOs in multiples of 4KiB. &nbsp;For data, GPFS tracks what portion of a given block is valid/dirty using an in-memory bitmap, and if 4K in the middle of a 16M block are modified, only 4K get written, not 16M (although this is more complicated for sparse file writes and appends, when some areas need to be zeroed out). &nbsp;For metadata writes, entire metadata objects are written, using the actual object size, rounded up to the nearest 512B or 4K boundary, as needed. &nbsp;</tt><br><br><tt>So a single modified inode results in a single inode write, regardless of the metadata block size. &nbsp;If you have snapshots, and the inode being modified needs to be copied to the previous snapshot, and happens to be the first inode in the block that needs a COW, an entire block of inodes is copied to the latest snapshot, as an optimization.</tt><br><br><tt>&gt; And here\u2019s a really off the wall question \u2026 yesterday we were <br>&gt; discussing the fact that there is now a single inode file. &nbsp;<br>&gt; Historically, we have always used RAID 1 mirrors (first with <br>&gt; spinning disk, as of last fall now on SSD) for metadata and then use<br>&gt; GPFS replication on top of that. &nbsp;But given that there is a single <br>&gt; inode file is that \u201cold way\u201d of doing things still the right way? &nbsp;<br>&gt; In other words, could we potentially be better off by using a couple<br>&gt; of 8+2P RAID 6 LUNs?</tt><br><br><tt>The old way is also the modern way in this case. &nbsp;Using RAID1 LUNs for GPFS metadata is still the right approach. &nbsp;You don't want to use RAID erasure codes that trigger read-modify-write for small IOs, which are typical for metadata (unless your RAID array has so much cache as to make RMW a moot point).</tt><br><br><tt>&gt; One potential downside of that would be that we would then only have<br>&gt; two NSD servers serving up metadata, so we discussed the idea of <br>&gt; taking each RAID 6 LUN and splitting it up into multiple logical <br>&gt; volumes (all that done on the storage array, of course) and then <br>&gt; presenting those to GPFS as NSDs???</tt><br><br><tt>Like most performance questions, this one can ultimately only be answered definitively by running tests, but offhand I would suspect that the performance impact of RAID6, combined with extra contention for physical disks, is going to more than offset the benefits of using more NSD servers. &nbsp;Keep in mind that you aren't limited to 2 NSD servers per LUN. &nbsp;If you actually have the connectivity for more than 2 nodes on your RAID controller, GPFS allows up to 8 simultaneously active NSD servers per NSD.</tt><br><br><tt>yuri</tt><br><tt>&nbsp;<br>&gt; On Sep 28, 2016, at 10:23 AM, Marc A Kaplan &lt;makaplan@us.ibm.com&gt; wrote:</tt><br><tt>&gt; <br>&gt; OKAY, I'll say it again. &nbsp;inodes are PACKED into a single inode <br>&gt; file. &nbsp;So a 4KB inode takes 4KB, REGARDLESS of metadata blocksize. &nbsp;<br>&gt; There is no wasted space.<br>&gt; <br>&gt; (Of course if you have metadata replication = 2, then yes, double <br>&gt; that. &nbsp;And yes, there overhead for indirect blocks (indices), <br>&gt; allocation maps, etc, etc.)<br>&gt; <br>&gt; And your choice is not just 512 or 4096. &nbsp;Maybe 1KB or 2KB is a good<br>&gt; choice for your data distribution, to optimize packing of data and/<br>&gt; or directories into inodes...<br>&gt; <br>&gt; Hmmm... I don't know why the doc leaves out 2048, perhaps a typo...<br>&gt; <br>&gt; mmcrfs x2K -i 2048<br>&gt; <br>&gt; [root@n2 charts]# mmlsfs x2K -i<br>&gt; flag &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;description<br>&gt; ------------------- ------------------------ <br>&gt; -----------------------------------<br>&gt; &nbsp;-i &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2048 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Inode size in bytes<br>&gt; <br>&gt; Works for me!<br>&gt; _______________________________________________<br>&gt; gpfsug-discuss mailing list<br>&gt; gpfsug-discuss at spectrumscale.org<br>&gt; <a href="http://gpfsug.org/mailman/listinfo/gpfsug-discuss">http://gpfsug.org/mailman/listinfo/gpfsug-discuss</a></tt><br><tt>&gt; <br>&gt; <br></tt><br><tt>&gt; _______________________________________________<br>&gt; gpfsug-discuss mailing list<br>&gt; gpfsug-discuss at spectrumscale.org<br>&gt; <a href="http://gpfsug.org/mailman/listinfo/gpfsug-discuss">http://gpfsug.org/mailman/listinfo/gpfsug-discuss</a><br></tt><BR>
</body></html>