<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Architecture_-_ZFS_large_dnodes</id>
	<title>Architecture - ZFS large dnodes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Architecture_-_ZFS_large_dnodes"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;action=history"/>
	<updated>2026-08-05T20:38:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=1404&amp;oldid=prev</id>
		<title>KenRawlings: assigning category</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=1404&amp;oldid=prev"/>
		<updated>2016-03-04T18:47:15Z</updated>

		<summary type="html">&lt;p&gt;assigning category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:47, 4 March 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l62&quot;&gt;Line 62:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;http://www.opensolaris.org/jive/thread.jspa?threadID=39817&amp;amp;tstart=15&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;http://www.opensolaris.org/jive/thread.jspa?threadID=39817&amp;amp;tstart=15&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Architecture]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-933:rev-1404 --&gt;
&lt;/table&gt;</summary>
		<author><name>KenRawlings</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=933&amp;oldid=prev</id>
		<title>Adilger: /* References */ add link to GitHub tracker</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=933&amp;oldid=prev"/>
		<updated>2015-09-14T23:25:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;References: &lt;/span&gt; add link to GitHub tracker&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:25, 14 September 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== References ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== References ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://github.com/zfsonlinux/zfs/pull/3542|Large dnode pool feature]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;http://www.opensolaris.org/jive/thread.jspa?threadID=39817&amp;amp;tstart=15&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;http://www.opensolaris.org/jive/thread.jspa?threadID=39817&amp;amp;tstart=15&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-927:rev-933 --&gt;
&lt;/table&gt;</summary>
		<author><name>Adilger</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=927&amp;oldid=prev</id>
		<title>Adilger: Copy from original page on old wiki</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Architecture_-_ZFS_large_dnodes&amp;diff=927&amp;oldid=prev"/>
		<updated>2015-09-14T23:04:21Z</updated>

		<summary type="html">&lt;p&gt;Copy from original page on old wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information.&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;dnode&amp;#039;&amp;#039;&amp;#039; : DMU node, 512 bytes in original ZFS implementation and includes &amp;quot;bonus buffer&amp;quot; for users to store extra data&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;EA&amp;#039;&amp;#039;&amp;#039; : extended attribute generally of a limited size (4kB or less), not to be confused with the ZFS &amp;#039;xattr&amp;#039; which is more like a named byte stream that may be an arbitrary size&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;znode&amp;#039;&amp;#039;&amp;#039; : ZPL-format dnode, uses bonus buffer to store POSIX data for ZFS&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0&lt;br /&gt;
|-&lt;br /&gt;
!id !! quality attribute !! summary&lt;br /&gt;
|-&lt;br /&gt;
|large_dnode || performance || increased dnode size to allow more data in the inode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EA in large dnode ===&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; || Storage of EA in dnode&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039; || Fast access to Lustre EA values&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;|| Performance&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;|| EA needs to be stored in ZFS-format dnode&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;|| Lustre OSD (MDT/OST) storing EA data to object&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;|| EA being stored on a specific znode within a transaction&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;|| EA is stored in the znode&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;|| time to store EA data&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;|| time is not significantly more than znode update without EA, much less than storing data in ZFS xattr&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;|| &lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;|| None.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation constraints ==&lt;br /&gt;
&lt;br /&gt;
DMU must work with both larger and original size dnodes in the same pool.  There is currently no requirement for dynamic dnode size within a single filesystem&lt;br /&gt;
&lt;br /&gt;
ZFS must be able to work on a filesystem with large dnodes, even if it cannot initially access the extra dnode space&lt;br /&gt;
&lt;br /&gt;
&amp;#039;zfs&amp;#039; tool must be able to specify dnode size for a filesystem at creation time&lt;br /&gt;
&lt;br /&gt;
EA is stored in microzap (as described in [[Architecture - ZFS_TinyZAP|ZFS_Microzap]]) to allow efficient access, retrieval, and flexibility.&lt;br /&gt;
&lt;br /&gt;
== Questions and Issues ==&lt;br /&gt;
&lt;br /&gt;
How do we handle case where EAs overflow available space in dnode?  Strong consideration should be given to allowing EAs (also?) be stored in an external block or in a protected EA xattr file.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
http://www.opensolaris.org/jive/thread.jspa?threadID=39817&amp;amp;tstart=15&lt;/div&gt;</summary>
		<author><name>Adilger</name></author>
	</entry>
</feed>