<?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=ZFS_System_Design</id>
	<title>ZFS System Design - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=ZFS_System_Design"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;action=history"/>
	<updated>2026-08-05T14:37:05Z</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=ZFS_System_Design&amp;diff=3042&amp;oldid=prev</id>
		<title>Adilger: reword initial text</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3042&amp;oldid=prev"/>
		<updated>2018-01-20T00:44:04Z</updated>

		<summary type="html">&lt;p&gt;reword initial text&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 17:44, 19 January 2018&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-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&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;=== Introduction ===  &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;=== Introduction ===  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When you have a disk array and you want to format the drives as OSTs, you would be in a dilemma for the choice of zpool and OST configuration. What&amp;#039;s the actual differences between multiple VDEVs in the same &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pool &lt;/del&gt;and multiple &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pools &lt;/del&gt;with single &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vdev &lt;/del&gt;in each? This article will help you make the right choice based on the performance and reliability.&lt;/div&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;When you have a disk array and you want to format the drives as OSTs, you would be in a dilemma for the choice of zpool and OST configuration. What&amp;#039;s the actual differences between multiple VDEVs in the same &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool &lt;/ins&gt;and multiple &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpools &lt;/ins&gt;with single &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VDEV &lt;/ins&gt;in each? This article will help you make the right choice based on the performance and reliability.&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; 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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pool &lt;/del&gt;Configuration ===  &lt;/div&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;ZPool &lt;/ins&gt;Configuration ===  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Let&amp;#039;s start with an actual example: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;when &lt;/del&gt;you have a disk array with &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;116 &lt;/del&gt;disks&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;you &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;would &lt;/del&gt;choose to have 10 zpools and each zpool has a single VDEV with 9+2 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RAIDZ2&lt;/del&gt;, or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you &lt;/del&gt;could have a single zpool with 10 9+2 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RAIDZ2 &lt;/del&gt;VDEVs. The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;former &lt;/del&gt;will have 10 OSTs exported &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but &lt;/del&gt;the latter will have only one OST. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I will compare the above &lt;/del&gt;configurations and make &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a proposal in the conclusion&lt;/del&gt;.&lt;/div&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;Let&amp;#039;s start with an actual example: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/ins&gt;you have a disk array with &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;120 &lt;/ins&gt;disks &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(e.g. two 6x10 HDD JBOD) &lt;/ins&gt;you &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;could &lt;/ins&gt;choose to have 10 zpools and each zpool has a single VDEV with 9+2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RAID-Z2 and space for 10 hot spares or SSDs for L2ARC&lt;/ins&gt;, or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;separate Metadata Allocation Class.  You could have 4 zpools with three 8+2 VDEVs.   You &lt;/ins&gt;could &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;instead &lt;/ins&gt;have a single zpool with 10 9+2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RAID-Z2 VDEVs and 10 unused slots, or 12 8+2 RAID-Z2 &lt;/ins&gt;VDEVs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and no unused slots, or a wide variety of other combinations&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;The &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;first configuration &lt;/ins&gt;will have 10 OSTs exported &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to clients, the second would have 4 OSTs, while &lt;/ins&gt;the latter &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;two &lt;/ins&gt;will have only one &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;large &lt;/ins&gt;OST. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;These &lt;/ins&gt;configurations &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;have different trade-offs for performance, manageability, &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fault tolerance that &lt;/ins&gt;make &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;them more or less desirable for various applications&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; 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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Single &lt;/del&gt;zpool &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;would be &lt;/del&gt;easier to manage, especially when it comes to the hot spare disks management. For example, for the above disk array, you can assign &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;all &lt;/del&gt;remaining disks &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;into &lt;/del&gt;the zpool as hot spare disks and ZFS will take care of disk failure automatically. In this configuration, ZFS can tolerate to lose &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;any 8 &lt;/del&gt;disks in the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pool &lt;/del&gt;without data loss. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; The other &lt;/del&gt;benefit is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;about ditto blocks. &lt;/del&gt;ZFS will store 3 copies for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;file system &lt;/del&gt;metadata and 2 copies for file metadata(indirect blocks). With more VDEVs in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the pool&lt;/del&gt;, ZFS will be able to choose different VDEVs to write different ditto blocks, therefore improving the overall reliability.&lt;/div&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;Having a single large &lt;/ins&gt;zpool &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with one OST has several benefits:&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;# &amp;#039;&amp;#039;&amp;#039;Easier Management:&amp;#039;&amp;#039;&amp;#039; It is typically &lt;/ins&gt;easier to manage &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fewer OSTs&lt;/ins&gt;, especially when it comes to the hot spare disks management. For example, for the above disk array, you can assign &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;any &lt;/ins&gt;remaining disks &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/ins&gt;the zpool as hot spare disks and ZFS will take care of disk failure automatically. In this configuration, ZFS can tolerate to lose &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;up to 10 &lt;/ins&gt;disks in the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool &lt;/ins&gt;without data loss.&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;# &amp;#039;&amp;#039;&amp;#039;Redundant metadata efficiency:&amp;#039;&amp;#039;&amp;#039; Another &lt;/ins&gt;benefit is &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/ins&gt;ZFS will store 3 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;metadata &lt;/ins&gt;copies &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(ditto blocks) &lt;/ins&gt;for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;filesystem internal &lt;/ins&gt;metadata and 2 copies for file metadata (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dnodes, &lt;/ins&gt;indirect blocks). With more VDEVs in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a single zpool&lt;/ins&gt;, ZFS will be able to choose different VDEVs to write different ditto blocks, therefore improving the overall reliability &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and avoiding redundant writes to a single VDEV.  Having at least 3 VDEVs in a zpool is preferred.&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;# &amp;#039;&amp;#039;&amp;#039;Reduced client overhead:&amp;#039;&amp;#039;&amp;#039; Every Lustre client reserves space on every OST (grant) for efficient writeback caching, so having fewer OSTs means less space is reserved for grant.  Also, each client maintains state for every OST connection, so having more OSTs increases client overhead to some extent.&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;# &amp;#039;&amp;#039;&amp;#039;Reduced free space/quota fragmentation:&amp;#039;&amp;#039;&amp;#039;  Having fewer, larger OST will reduce the chance of any OST becoming full, compared to having more, smaller OSTs. ZFS (as any filesystem) performs worse when there is little free space in a filesystem, so having larger OSTs avoids fragmented allocations.  While free space is typically expressed as a percentage, the absolute amount of free space is also important.  If 5% of free space is several TB of space then ZFS can likely still make efficient 1MB allocations, but if 5% free space is a few GB spread across the whole zpool then it is more likely to make poor allocations&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; 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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;configuration of &lt;/del&gt;multiple zpool has some benefits too:&lt;/div&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;The multiple zpool &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;configuration &lt;/ins&gt;has some benefits too:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Better &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;read performance. &lt;/del&gt;When &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;osd-zfs &lt;/del&gt;is writing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a bunch of &lt;/del&gt;data to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DMU, &lt;/del&gt;in the single zpool configuration, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DMU &lt;/del&gt;will use round robin policy to allocate blocks from each &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VDEVs&lt;/del&gt;, which will &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cause the problem that &lt;/del&gt;sequentially written blocks &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will be spread &lt;/del&gt;all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;around &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pool&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Then it will create some performance problems &lt;/del&gt;when reading &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;them &lt;/del&gt;back&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/del&gt;&lt;/div&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;&amp;#039;&amp;#039;&amp;#039;&lt;/ins&gt;Better &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disk utilization:&amp;#039;&amp;#039;&amp;#039;  &lt;/ins&gt;When &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Lustre &lt;/ins&gt;is writing data to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ZFS &lt;/ins&gt;in the single zpool configuration, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ZFS &lt;/ins&gt;will use round robin policy to allocate blocks from each &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VDEV&lt;/ins&gt;, which will &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;spread &lt;/ins&gt;sequentially written blocks &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;across &lt;/ins&gt;all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VDEVs in &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; If a single-stripe read/write is accessing many VDEVs this can add overhead &lt;/ins&gt;when reading &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the blocks &lt;/ins&gt;back&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, since it will require seeking on all disks to fetch blocks for the same file.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Consistent I/O performance&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Since &lt;/del&gt;a TXG &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;may spread &lt;/del&gt;many VDEVs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in the single zpool configuration&lt;/del&gt;, the actual TXG sync time will be limited by the slowest &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VDEV&lt;/del&gt;. If &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;there exists a &lt;/del&gt;VDEV in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;degrated &lt;/del&gt;mode &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in the pool&lt;/del&gt;, the overall I/O performance will be impacted, because &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DMU &lt;/del&gt;has to stall writing and wait for sync &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TXG &lt;/del&gt;to complete before it can cache more dirty data in memory&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/del&gt;&lt;/div&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;&amp;#039;&amp;#039;&amp;#039;&lt;/ins&gt;Consistent I/O performance&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&amp;#039;&amp;#039;&amp;#039; In the single zpool configuration &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;filesystem transaction group (&lt;/ins&gt;TXG&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) will use &lt;/ins&gt;many &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or all &lt;/ins&gt;VDEVs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(using dozens of disks)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so &lt;/ins&gt;the actual TXG sync time will be limited by the slowest &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disk in the zpool&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;If &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;any &lt;/ins&gt;VDEV &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/ins&gt;in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;degraded &lt;/ins&gt;mode &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;due to failed disks, if disks have remapped sectors or perform internal housekeeping (internal recalibration, etc.), or other hardware issues&lt;/ins&gt;, the overall I/O performance will be impacted, because &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;each transaction commit &lt;/ins&gt;has to stall writing &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for all of the disks &lt;/ins&gt;and wait for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TXG &lt;/ins&gt;sync to complete before it can cache more dirty data in memory &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(essentially disk-level [https://en.wikipedia.org/wiki/Jitter jitter]).  Having separate zpools allows the TXG sync to happen independently on each zpool, and allows these (often random) individual disk slowdowns to avoid slowing down all disk operations.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Having more OSTs will help client stream data better. &lt;/del&gt;Clients maintain dirty data and space grant per OSTs. With single &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pool &lt;/del&gt;configuration, even it has a super fast OST &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but &lt;/del&gt;the client won&amp;#039;t be able to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;use &lt;/del&gt;it &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;efficently;&lt;/del&gt;&lt;/div&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;&amp;#039;&amp;#039;&amp;#039;More independent OST IO streams:&amp;#039;&amp;#039;&amp;#039; &lt;/ins&gt;Clients maintain dirty data and space grant per OSTs. With &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;single &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool &lt;/ins&gt;configuration, even it has a super fast OST&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;the client won&amp;#039;t &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;necessarily &lt;/ins&gt;be able to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;submit RPCs fast enough for that OST, but &lt;/ins&gt;it &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will cause contention (seeks) with other clients using the same OST.  Having more independent OSTs allows more clients to do disk IO without causing too much contention.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;There are also &lt;/del&gt;lock contention &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;issues at the pool&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;lustre levels &lt;/del&gt;that &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;make &lt;/del&gt;separate &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pools perform better, as well as improved &lt;/del&gt;failure isolation &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(e.g. &lt;/del&gt;degraded RAID, total &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pool &lt;/del&gt;failure/corruption, etc&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/del&gt;,  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but need &lt;/del&gt;to be &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;balanced with extra management effort for more OSTs&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;more fragmentation &lt;/del&gt;of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;free space and grant overhead&lt;/del&gt;.&lt;/div&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;&amp;#039;&amp;#039;&amp;#039;Avoid &lt;/ins&gt;lock contention&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&amp;#039;&amp;#039;&amp;#039; The ZFS/Lustre code have locks to maintain consistency for read&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;write in &lt;/ins&gt;that &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool.  Having &lt;/ins&gt;separate &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpools allows more independent locks and results in less contention in software.&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;# &amp;#039;&amp;#039;&amp;#039;Improved &lt;/ins&gt;failure isolation&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&amp;#039;&amp;#039;&amp;#039;  If there is a &lt;/ins&gt;degraded RAID&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-Z2 VDEV&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a full OST, or &lt;/ins&gt;total &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpool &lt;/ins&gt;failure/corruption, etc&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. then the MDS will avoid allocating new objects on this OST&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or may stop using it completely. &lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Having more OSTs reduces the performance impact of a single OST going offline.  If an OST fails completely, or needs &lt;/ins&gt;to be &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;removed from service (due to age, faulty hardware, etc)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;then the number &lt;/ins&gt;of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;files affected is proportional to the OST size, which affects recovery time (restore files from backup, migrate files off the failing OST)&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;=== Conclusion ===&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;=== Conclusion ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&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;The benefits of fewer, larger OSTs need to be balanced against extra management effort for more OSTs, more fragmentation of free space and grant overhead.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;All in all&lt;/del&gt;, it&amp;#039;s better to have &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;separate zpool &lt;/del&gt;for performance reason but single zpool for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reliabiltiy&lt;/del&gt;. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;single hot spare disk. You can probably sell the remaining &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disk &lt;/del&gt;for some beer.&lt;/div&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;In general&lt;/ins&gt;, it&amp;#039;s better to have &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;multiple zpools &lt;/ins&gt;for performance reason but single zpool for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reliability&lt;/ins&gt;. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;3-&lt;/ins&gt;5 zpools, and each zpool has a couple of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8+2 or &lt;/ins&gt;9+2 RAIDZ2 VDEVs&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  Also, each zpool will have &lt;/ins&gt;single hot spare disk. You can probably sell the remaining &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disks &lt;/ins&gt;for some beer.&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;=== DRAID ===&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;=== DRAID ===&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;div&gt;(to be continued)&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;(to be continued)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-3041:rev-3042 --&gt;
&lt;/table&gt;</summary>
		<author><name>Adilger</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3041&amp;oldid=prev</id>
		<title>Jxiong at 23:37, 19 January 2018</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3041&amp;oldid=prev"/>
		<updated>2018-01-19T23:37:58Z</updated>

		<summary type="html">&lt;p&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:37, 19 January 2018&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-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&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;=== Conclusion ===&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;=== Conclusion ===&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; 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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All in all, it&amp;#039;s better to have separate zpool for performance reason but single zpool for reliabiltiy. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Also, each zpool will have &lt;/del&gt;single hot spare disk. You can probably sell the remaining disk for some beer.&lt;/div&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;All in all, it&amp;#039;s better to have separate zpool for performance reason but single zpool for reliabiltiy. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/ins&gt;single hot spare disk. You can probably sell the remaining disk for some beer.&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;=== DRAID ===&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;=== DRAID ===&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;div&gt;(to be continued)&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;(to be continued)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-3040:rev-3041 --&gt;
&lt;/table&gt;</summary>
		<author><name>Jxiong</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3040&amp;oldid=prev</id>
		<title>Jxiong at 23:35, 19 January 2018</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3040&amp;oldid=prev"/>
		<updated>2018-01-19T23:35:58Z</updated>

		<summary type="html">&lt;p&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:35, 19 January 2018&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-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&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;The configuration of multiple zpool has some benefits too:&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;The configuration of multiple zpool has some benefits too:&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;div&gt;# Better read performance. When osd-zfs is writing a bunch of data to DMU, in the single zpool configuration, DMU will use round robin policy to allocate blocks from each VDEVs, which will cause the problem that sequentially written blocks will be spread all around the pool. Then it will create some performance problems when reading them back;&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;# Better read performance. When osd-zfs is writing a bunch of data to DMU, in the single zpool configuration, DMU will use round robin policy to allocate blocks from each VDEVs, which will cause the problem that sequentially written blocks will be spread all around the pool. Then it will create some performance problems when reading them back;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Consisten &lt;/del&gt;I/O performance. Since a TXG may spread many VDEVs in the single zpool configuration, the actual TXG sync time will be limited by the slowest VDEV. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Therefore if &lt;/del&gt;there exists a VDEV in degrated mode, the overall I/O performance will be impacted, because DMU has to stall writing and wait for sync TXG to complete before it can cache more dirty data in memory;&lt;/div&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;Consistent &lt;/ins&gt;I/O performance. Since a TXG may spread many VDEVs in the single zpool configuration, the actual TXG sync time will be limited by the slowest VDEV. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;If &lt;/ins&gt;there exists a VDEV in degrated mode &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in the pool&lt;/ins&gt;, the overall I/O performance will be impacted, because DMU has to stall writing and wait for sync TXG to complete before it can cache more dirty data in memory;&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;div&gt;# Having more OSTs will help client stream data better. Clients maintain dirty data and space grant per OSTs. With single pool configuration, even it has a super fast OST but the client won&amp;#039;t be able to use it efficently;&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;# Having more OSTs will help client stream data better. Clients maintain dirty data and space grant per OSTs. With single pool configuration, even it has a super fast OST but the client won&amp;#039;t be able to use it efficently;&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;div&gt;# There are also lock contention issues at the pool/lustre levels that make separate pools perform better, as well as improved failure isolation (e.g. degraded RAID, total pool failure/corruption, etc),  but need to be balanced with extra management effort for more OSTs, more fragmentation of free space and grant overhead.&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;# There are also lock contention issues at the pool/lustre levels that make separate pools perform better, as well as improved failure isolation (e.g. degraded RAID, total pool failure/corruption, etc),  but need to be balanced with extra management effort for more OSTs, more fragmentation of free space and grant overhead.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-3038:rev-3040 --&gt;
&lt;/table&gt;</summary>
		<author><name>Jxiong</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3038&amp;oldid=prev</id>
		<title>Adilger: Adilger moved page Zfs system design to ZFS System Design: capitalize title properly</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3038&amp;oldid=prev"/>
		<updated>2018-01-19T23:32:25Z</updated>

		<summary type="html">&lt;p&gt;Adilger moved page &lt;a href=&quot;/Zfs_system_design&quot; class=&quot;mw-redirect&quot; title=&quot;Zfs system design&quot;&gt;Zfs system design&lt;/a&gt; to &lt;a href=&quot;/ZFS_System_Design&quot; title=&quot;ZFS System Design&quot;&gt;ZFS System Design&lt;/a&gt;: capitalize title properly&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:32, 19 January 2018&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-3037:rev-3038 --&gt;
&lt;/table&gt;</summary>
		<author><name>Adilger</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3037&amp;oldid=prev</id>
		<title>Jxiong at 23:28, 19 January 2018</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3037&amp;oldid=prev"/>
		<updated>2018-01-19T23:28:59Z</updated>

		<summary type="html">&lt;p&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:28, 19 January 2018&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-l20&quot;&gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&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;All in all, it&amp;#039;s better to have separate zpool for performance reason but single zpool for reliabiltiy. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs. Also, each zpool will have single hot spare disk. You can probably sell the remaining disk for some beer.&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;All in all, it&amp;#039;s better to have separate zpool for performance reason but single zpool for reliabiltiy. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs. Also, each zpool will have single hot spare disk. You can probably sell the remaining disk for some beer.&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;=== DRAID ===&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;(to be continued)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-3036:rev-3037 --&gt;
&lt;/table&gt;</summary>
		<author><name>Jxiong</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3036&amp;oldid=prev</id>
		<title>Jxiong: Created page with &quot;Category:ZFS  == ZFS System Design ==  === Introduction ===  When you have a disk array and you want to format the drives as OSTs, you would be in a dilemma for the choice...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=ZFS_System_Design&amp;diff=3036&amp;oldid=prev"/>
		<updated>2018-01-19T23:27:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/Category:ZFS&quot; title=&quot;Category:ZFS&quot;&gt;Category:ZFS&lt;/a&gt;  == ZFS System Design ==  === Introduction ===  When you have a disk array and you want to format the drives as OSTs, you would be in a dilemma for the choice...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:ZFS]]&lt;br /&gt;
&lt;br /&gt;
== ZFS System Design ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction === &lt;br /&gt;
When you have a disk array and you want to format the drives as OSTs, you would be in a dilemma for the choice of zpool and OST configuration. What&amp;#039;s the actual differences between multiple VDEVs in the same pool and multiple pools with single vdev in each? This article will help you make the right choice based on the performance and reliability.&lt;br /&gt;
&lt;br /&gt;
=== Pool Configuration === &lt;br /&gt;
Let&amp;#039;s start with an actual example: when you have a disk array with 116 disks, you would choose to have 10 zpools and each zpool has a single VDEV with 9+2 RAIDZ2, or you could have a single zpool with 10 9+2 RAIDZ2 VDEVs. The former will have 10 OSTs exported but the latter will have only one OST. I will compare the above configurations and make a proposal in the conclusion.&lt;br /&gt;
&lt;br /&gt;
Single zpool would be easier to manage, especially when it comes to the hot spare disks management. For example, for the above disk array, you can assign all remaining disks into the zpool as hot spare disks and ZFS will take care of disk failure automatically. In this configuration, ZFS can tolerate to lose any 8 disks in the pool without data loss.  The other benefit is about ditto blocks. ZFS will store 3 copies for file system metadata and 2 copies for file metadata(indirect blocks). With more VDEVs in the pool, ZFS will be able to choose different VDEVs to write different ditto blocks, therefore improving the overall reliability.&lt;br /&gt;
&lt;br /&gt;
The configuration of multiple zpool has some benefits too:&lt;br /&gt;
# Better read performance. When osd-zfs is writing a bunch of data to DMU, in the single zpool configuration, DMU will use round robin policy to allocate blocks from each VDEVs, which will cause the problem that sequentially written blocks will be spread all around the pool. Then it will create some performance problems when reading them back;&lt;br /&gt;
# Consisten I/O performance. Since a TXG may spread many VDEVs in the single zpool configuration, the actual TXG sync time will be limited by the slowest VDEV. Therefore if there exists a VDEV in degrated mode, the overall I/O performance will be impacted, because DMU has to stall writing and wait for sync TXG to complete before it can cache more dirty data in memory;&lt;br /&gt;
# Having more OSTs will help client stream data better. Clients maintain dirty data and space grant per OSTs. With single pool configuration, even it has a super fast OST but the client won&amp;#039;t be able to use it efficently;&lt;br /&gt;
# There are also lock contention issues at the pool/lustre levels that make separate pools perform better, as well as improved failure isolation (e.g. degraded RAID, total pool failure/corruption, etc),  but need to be balanced with extra management effort for more OSTs, more fragmentation of free space and grant overhead.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
&lt;br /&gt;
All in all, it&amp;#039;s better to have separate zpool for performance reason but single zpool for reliabiltiy. For the example above, in order to balance the requirements of performance and reliability, it would be reasonable to have 5 zpools, and each zpool has a couple of 9+2 RAIDZ2 VDEVs. Also, each zpool will have single hot spare disk. You can probably sell the remaining disk for some beer.&lt;/div&gt;</summary>
		<author><name>Jxiong</name></author>
	</entry>
</feed>