<?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=NFS_vs._Lustre</id>
	<title>NFS vs. Lustre - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=NFS_vs._Lustre"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=NFS_vs._Lustre&amp;action=history"/>
	<updated>2026-08-06T04:48:03Z</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=NFS_vs._Lustre&amp;diff=4755&amp;oldid=prev</id>
		<title>Adilger: Corrected comment that Lustre has its own on-disk format, which is incorrect</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=NFS_vs._Lustre&amp;diff=4755&amp;oldid=prev"/>
		<updated>2024-01-22T18:53:45Z</updated>

		<summary type="html">&lt;p&gt;Corrected comment that Lustre has its own on-disk format, which is incorrect&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:53, 22 January 2024&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-l124&quot;&gt;Line 124:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 124:&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;NFS4 addresses those by:  &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;NFS4 addresses those by:  &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;# Introducing state. (Lots of resiliency mechanisms introduced to offset the downside of this, too.) NFS4 implementations are able to handle Posix advisory locks, but unlike Lustre, they don&amp;#039;t support full Posix filesystem semantics. For example, NFS4 still follows the traditional NFS close-to-open cache consistency model whereas with Lustre, individual write()s are atomic and become immediately visible to all clients. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4 can&amp;#039;t handle O_APPEND, and has those close-to-open semantics. Those are the two large departures from POSIX in NFSv4. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4.1 also adds metadata/data separation and data distribution, much like Lustre, but with the same POSIX semantics departures mentioned above.  Also, NFSv4.1&amp;#039;s &amp;quot;pNFS&amp;quot; concept doesn&amp;#039;t have room for &amp;quot;capabilities&amp;quot; (in the distributed filesystem sense, not in the Linux capabilities sense), which means that OSSs and MDSs have to communicate to get permissions to be enforced.  There are also differences with respect to recovery, etcetera. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; One thing about NFS is that it&amp;#039;s meant to be neutral w.r.t. the type of filesystem it shares.  So NFSv4, for example, has features for dealing with filesystems that don&amp;#039;t have a notion of persistent inode number. Whereas Lustre &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;has its own &lt;/del&gt;on-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disk format &lt;/del&gt;and therefore can&amp;#039;t be used to share just any type of filesystem.&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;# Introducing state. (Lots of resiliency mechanisms introduced to offset the downside of this, too.) NFS4 implementations are able to handle Posix advisory locks, but unlike Lustre, they don&amp;#039;t support full Posix filesystem semantics. For example, NFS4 still follows the traditional NFS close-to-open cache consistency model whereas with Lustre, individual write()s are atomic and become immediately visible to all clients. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4 can&amp;#039;t handle O_APPEND, and has those close-to-open semantics. Those are the two large departures from POSIX in NFSv4. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4.1 also adds metadata/data separation and data distribution, much like Lustre, but with the same POSIX semantics departures mentioned above.  Also, NFSv4.1&amp;#039;s &amp;quot;pNFS&amp;quot; concept doesn&amp;#039;t have room for &amp;quot;capabilities&amp;quot; (in the distributed filesystem sense, not in the Linux capabilities sense), which means that OSSs and MDSs have to communicate to get permissions to be enforced.  There are also differences with respect to recovery, etcetera. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; One thing about NFS is that it&amp;#039;s meant to be neutral w.r.t. the type of filesystem it shares.  So NFSv4, for example, has features for dealing with filesystems that don&amp;#039;t have a notion of persistent inode number. Whereas Lustre &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;depends &lt;/ins&gt;on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;specific features in the back&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end filesystem and is tightly integrated at the kernel driver level &lt;/ins&gt;and therefore can&amp;#039;t be used to share just any type of filesystem.&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;# Formalizing and offering standardized authentication headers.  &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;# Formalizing and offering standardized authentication headers.  &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;# Introducing ACLs that map to equivalents in POSIX and Microsoft.  &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;# Introducing ACLs that map to equivalents in POSIX and Microsoft.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-1966:rev-4755 --&gt;
&lt;/table&gt;</summary>
		<author><name>Adilger</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=NFS_vs._Lustre&amp;diff=1966&amp;oldid=prev</id>
		<title>KenRawlings: initial page creation as part of accelerated wiki migration</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=NFS_vs._Lustre&amp;diff=1966&amp;oldid=prev"/>
		<updated>2016-10-13T14:23:39Z</updated>

		<summary type="html">&lt;p&gt;initial page creation as part of accelerated wiki migration&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| class=&amp;#039;wikitable&amp;#039;&lt;br /&gt;
|- &lt;br /&gt;
!Note: This page originated on the old Lustre wiki. It was identified as likely having value and was migrated to the new wiki. It is in the process of being reviewed/updated and may currently have content that is out of date.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;#039;&amp;#039;(Updated: Oct 2009)&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;#039;&amp;#039;DISCLAIMER - EXTERNAL CONTRIBUTOR CONTENT&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;#039;&amp;#039;This content was submitted by an external contributor. We provide this information as a resource for the Lustre™ open-source community, but we make no representation as to the accuracy, completeness or reliability of this information.&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The following is based on a post written by Lee Ward and posted on the Lustre-discuss mailing list and a couple of corrections supplied by Daniel Kobras and Nicolas Williams have been added. Further expansion and correction is welcome.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll begin by motivating both NFS and Lustre. Why do they exist? What &lt;br /&gt;
problems do they solve.&lt;br /&gt;
&lt;br /&gt;
==NFS==&lt;br /&gt;
&lt;br /&gt;
Way back in the day, ethernet and the concept of a workstation got &lt;br /&gt;
popular. There were many tools to copy files between machines but few &lt;br /&gt;
ways to share a name space; Have the directory hierarchy and it&amp;#039;s &lt;br /&gt;
content directly accessible to an application on a foreign machine. This &lt;br /&gt;
made file sharing awkward. The model was to copy the file or files to &lt;br /&gt;
the workstation where the work was going to be done, do the work, and &lt;br /&gt;
copy the results back to some, hopefully, well maintained central &lt;br /&gt;
machine. &lt;br /&gt;
&lt;br /&gt;
There &amp;#039;&amp;#039;were&amp;#039;&amp;#039; solutions to this at the time. I recall an attractive &lt;br /&gt;
alternative called RFS (I believe) from the Bell Labs folks, via some &lt;br /&gt;
place in England if I&amp;#039;m remembering right, it&amp;#039;s been a looong time after &lt;br /&gt;
all. It had issues though. The nastiest issue for me was that if a &lt;br /&gt;
client went down the service side would freeze, at least partially. &lt;br /&gt;
Since this could happen willy-nilly, depending on the users wishes and &lt;br /&gt;
how well the power button on his workstation was protected, together &lt;br /&gt;
with the power cord and ethernet connection, this freezing of service &lt;br /&gt;
for any amount of time was difficult to accept. This was so even in a &lt;br /&gt;
rather small collection of machines. &lt;br /&gt;
&lt;br /&gt;
The problem with RFS (?) and it&amp;#039;s cousins were that they were all &lt;br /&gt;
stateful. The service side depended on state that was held at the &lt;br /&gt;
client. If the client went down, the service side couldn&amp;#039;t continue &lt;br /&gt;
without a whole lot of recovery, timeouts, etc. It was a very *annoying* &lt;br /&gt;
problem. &lt;br /&gt;
&lt;br /&gt;
In the latter half of the 1980&amp;#039;s (am I remembering right?) SUN proposed &lt;br /&gt;
an open protocol called NFS. An implementation using this protocol could &lt;br /&gt;
do most everything RFS(?) could but it didn&amp;#039;t suffer the service-side &lt;br /&gt;
hangs. It couldn&amp;#039;t. It was stateless. If the client went down, the &lt;br /&gt;
server just didn&amp;#039;t care. If the server went down, the client had the &lt;br /&gt;
opportunity to either give up on the local operation, usually with an &lt;br /&gt;
error returned, or wait. It was always up to the user and for client &lt;br /&gt;
failures the annoyance was limited to the user(s) on that client.&lt;br /&gt;
&lt;br /&gt;
SUN, also, wisely desired the protocol to be ubiquitous. They published &lt;br /&gt;
it. They wanted *everyone* to adopt it. More, they would help &lt;br /&gt;
competitors. SUN held interoperability bake-a-thons to help with this. &lt;br /&gt;
It looks like they succeeded, all around :) &lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s sum up, then. The goals for NFS were: &lt;br /&gt;
&lt;br /&gt;
# Share a local file system name space across the network. &lt;br /&gt;
# Do it in a robust, resilient way. Pesky FS issues because some user kicked the cord out of his workstation was unacceptable. &lt;br /&gt;
# Make it ubiquitous. SUN was a workstation vendor. They sold servers but almost everyone had a VAX in their back pocket where they made the infrastructure investment. SUN needed the high-value machines to support this protocol. &lt;br /&gt;
&lt;br /&gt;
==Lustre==&lt;br /&gt;
&lt;br /&gt;
Lustre has a weird story and I&amp;#039;m not going to go into all of it. The &lt;br /&gt;
shortest, relevant, part is that while there was at least one solution &lt;br /&gt;
that DOE/NNSA felt acceptable, GPFS, it was not available on anything &lt;br /&gt;
other than an IBM platform and because DOE/NNSA had a semi-formal policy &lt;br /&gt;
of buying from different vendors at each of the three labs we were kind &lt;br /&gt;
of stuck. Other file systems, existing and imminent, at the time were &lt;br /&gt;
examined but they were all distributed file systems and we needed IO &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;bandwidth&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; . We needed lots, and lots of bandwidth. &lt;br /&gt;
&lt;br /&gt;
We also needed that ubiquitous thing that SUN had as one of their goals. &lt;br /&gt;
We didn&amp;#039;t want to pay millions of dollars for another GPFS. We felt that &lt;br /&gt;
would only be painting ourselves into a corner. Whatever we did, the &lt;br /&gt;
result &amp;#039;&amp;#039;had&amp;#039;&amp;#039; to be open. It also had to be attractive to smaller sites &lt;br /&gt;
as we wanted to turn loose of the ting at some point. If it was &lt;br /&gt;
attractive for smaller machines we felt we would win in the long term &lt;br /&gt;
as, eventually, the cost to further and maintain this thing was spread &lt;br /&gt;
across the community. &lt;br /&gt;
&lt;br /&gt;
As far as technical goals, I guess we just wanted GPFS, but open. More &lt;br /&gt;
though, we wanted it to survive in our platform roadmaps for at least a &lt;br /&gt;
decade. The actual technical requirements for the contract that DOE/NNSA &lt;br /&gt;
executed with HP, CFS was the sub-contractor responsible for &lt;br /&gt;
development, can be found here: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://www-cs-students.stanford.edu/~trj/SGS_PathForward_SOW.pdf&amp;gt; &lt;br /&gt;
&lt;br /&gt;
LLNL used to host this but it&amp;#039;s no longer there? Oh well, hopefully this &lt;br /&gt;
link will be good for a while, at least. &lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m just going to jump to the end and sum the goals up: &lt;br /&gt;
&lt;br /&gt;
# It must do &amp;#039;&amp;#039;everything&amp;#039;&amp;#039; NFS can. We relaxed the stateless thing though, see the next item for why. &lt;br /&gt;
# It must support full POSIX semantics; Last writer wins, POSIX locks, etc. &lt;br /&gt;
# It must support all of the transports we are interested in.&lt;br /&gt;
# It must be scalable, in that we can cheaply attach storage and both performance (reading *and* writing) and capacity within a single mounted file system increase in direct proportion.&lt;br /&gt;
# We wanted it to be easy, administratively. Our goal was that it be no harder than NFS to set up and maintain. We were involving too many folks with PhDs in the operation of our machines at the time. Before you yell &amp;#039;&amp;#039;&amp;#039;FAIL&amp;#039;&amp;#039;&amp;#039;, I&amp;#039;ll say we did try. I&amp;#039;ll also say we didn&amp;#039;t make CFS responsible for this part of the task. Don&amp;#039;t blame them overly much, OK?&lt;br /&gt;
# We recognized we were asking for a stateful system, we wanted to mitigate that by having some focus on resiliency. These were big machines and clients died all the time.&lt;br /&gt;
# While not in the SOW, we structured the contract to accomplish some future form of wide acceptance. We wanted it to be ubiquitous. &lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s a lot of goals! For the technical ones, the main ones are all &lt;br /&gt;
pretty much structured to ask two things of what became Lustre. First, &lt;br /&gt;
give us everything NFS functionally does but go far beyond it in &lt;br /&gt;
performance. Second, give us everything NFS functionally does but make &lt;br /&gt;
it completely equivalent to a local file system, semantically. &lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s a little more we have to consider. NFS4 is a different beast &lt;br /&gt;
than NFS2 or NFS3. NFS{2,3} had some serious issues that became more &lt;br /&gt;
prominent as time went by. First, security; It had none. Folks had &lt;br /&gt;
bandaged on some different things to try to cure this but they weren&amp;#039;t &lt;br /&gt;
standard across platforms. Second, it couldn&amp;#039;t do the full POSIX &lt;br /&gt;
required semantics. That was attacked with the NFS lock protocols but it &lt;br /&gt;
was such an after-thought it will always remain problematic. Third, new &lt;br /&gt;
authorization possibilities introduced by Microsoft and then POSIX, &lt;br /&gt;
called ACLs, had no way of being accomplished. &lt;br /&gt;
&lt;br /&gt;
NFS4 addresses those by: &lt;br /&gt;
&lt;br /&gt;
# Introducing state. (Lots of resiliency mechanisms introduced to offset the downside of this, too.) NFS4 implementations are able to handle Posix advisory locks, but unlike Lustre, they don&amp;#039;t support full Posix filesystem semantics. For example, NFS4 still follows the traditional NFS close-to-open cache consistency model whereas with Lustre, individual write()s are atomic and become immediately visible to all clients. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4 can&amp;#039;t handle O_APPEND, and has those close-to-open semantics. Those are the two large departures from POSIX in NFSv4. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; NFSv4.1 also adds metadata/data separation and data distribution, much like Lustre, but with the same POSIX semantics departures mentioned above.  Also, NFSv4.1&amp;#039;s &amp;quot;pNFS&amp;quot; concept doesn&amp;#039;t have room for &amp;quot;capabilities&amp;quot; (in the distributed filesystem sense, not in the Linux capabilities sense), which means that OSSs and MDSs have to communicate to get permissions to be enforced.  There are also differences with respect to recovery, etcetera. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; One thing about NFS is that it&amp;#039;s meant to be neutral w.r.t. the type of filesystem it shares.  So NFSv4, for example, has features for dealing with filesystems that don&amp;#039;t have a notion of persistent inode number. Whereas Lustre has its own on-disk format and therefore can&amp;#039;t be used to share just any type of filesystem.&lt;br /&gt;
# Formalizing and offering standardized authentication headers. &lt;br /&gt;
# Introducing ACLs that map to equivalents in POSIX and Microsoft. &lt;br /&gt;
&lt;br /&gt;
==Strengths and Weaknesses of the Two==&lt;br /&gt;
&lt;br /&gt;
NFS4 does most everything Lustre can with one very important exception, &lt;br /&gt;
IO bandwidth. &lt;br /&gt;
&lt;br /&gt;
Both seem able to deliver metadata performance at roughly the same &lt;br /&gt;
speeds. File create, delete, and stat rates are about the same. NetApp &lt;br /&gt;
seems to have a partial enhancement. They bought the Spinnaker goodies &lt;br /&gt;
some time back and have deployed that technology, and redirection &lt;br /&gt;
too(?), within their servers. The good about that is two users in &lt;br /&gt;
different directories *could* leverage two servers, independently, and, &lt;br /&gt;
so, scale metadata performance. It&amp;#039;s not guaranteed but at least there &lt;br /&gt;
is the possibility. If the two users are in the same directory, it&amp;#039;s not &lt;br /&gt;
much different, though, I&amp;#039;m thinking. Someone correct me if I&amp;#039;m wrong? &lt;br /&gt;
&lt;br /&gt;
Both can offer full POSIX now. It&amp;#039;s nasty in both cases but, yes, in &lt;br /&gt;
theory you can export mail directory hierarchies with locking. &lt;br /&gt;
&lt;br /&gt;
The NFS client and server are far easier to set up and maintain. The &lt;br /&gt;
tools to debug issues are advanced. While the Lustre folks have done &lt;br /&gt;
much to improve this area, NFS is just leaps and bounds ahead. It&amp;#039;s &lt;br /&gt;
easier to deal with NFS than Lustre. Just far, far easier, still.&lt;br /&gt;
 &lt;br /&gt;
NFS is just built in to everything. My TV has it, for heck&amp;#039;s sake. Lustre &lt;br /&gt;
is, seemingly, always an add-on. It&amp;#039;s also a moving target. We&amp;#039;re &lt;br /&gt;
constantly futzing with it, upgrading, and patching. Lustre might be &lt;br /&gt;
compilable most everywhere we care about but building it isn&amp;#039;t trivial. &lt;br /&gt;
The supplied modules are great but, still, moving targets in that we &lt;br /&gt;
wait for SUN to catch up to the vendor supplied changes that affect &lt;br /&gt;
Lustre. Given Lustre&amp;#039;s size and interaction with other components in the &lt;br /&gt;
OS, that happens far more frequently than desired. NFS just plain wins &lt;br /&gt;
the ubiquity argument at present. &lt;br /&gt;
&lt;br /&gt;
NFS IO performance does *not* scale. It&amp;#039;s still an in-band protocol. The &lt;br /&gt;
data is carried in the same message as the request and is, practically, &lt;br /&gt;
limited in size. Reads are more scalable in writes, a popular &lt;br /&gt;
file-segment can be satisfied from the cache on reads but develops &lt;br /&gt;
issues at some point. For writes, NFS3 and NFS4 help in that they &lt;br /&gt;
directly support write-behind so that a client doesn&amp;#039;t have to wait for &lt;br /&gt;
data to go to disk, but it&amp;#039;s just not enough. If one streams data &lt;br /&gt;
to/from the store, it can be larger than the cache. A client that might &lt;br /&gt;
read a file already made &amp;quot;hot&amp;quot; but at a very different rate just loses. &lt;br /&gt;
A client, writing, is always looking for free memory to buffer content. &lt;br /&gt;
Again, too many of these, simultaneously, and performance descends to &lt;br /&gt;
the native speed of the attached back-end store and that store can only &lt;br /&gt;
get so big. &lt;br /&gt;
&lt;br /&gt;
Lustre IO performance *does* scale. It uses a 3rd-party transfer. &lt;br /&gt;
Requests are made to the metadata server and IO moves directly between &lt;br /&gt;
the affected storage component(s) and the client. The more storage &lt;br /&gt;
components, the less possibility of contention between clients and the &lt;br /&gt;
more data can be accepted/supplied per unit time. &lt;br /&gt;
NFS4 has a proposed extension, called pNFS, to address this problem. It &lt;br /&gt;
just introduces the 3rd-party data transfers that Lustre enjoys. If and &lt;br /&gt;
when that is a standard, and is well supported by clients and vendors, &lt;br /&gt;
the really big technical difference will virtually disappear. It&amp;#039;s been &lt;br /&gt;
a long time coming, though. It&amp;#039;s still not there. Will it ever be, &lt;br /&gt;
really? &lt;br /&gt;
&lt;br /&gt;
The answer to the NFS vs. Lustre question comes down to the workload for &lt;br /&gt;
a given application then, since they do have overlap in their solution &lt;br /&gt;
space. If I were asked to look at a platform and recommend a solution I &lt;br /&gt;
would worry about IO bandwidth requirements. If the platform in question &lt;br /&gt;
were either read-mostly and, practically, never needed sustained read or &lt;br /&gt;
write bandwidth, NFS would be an easy choice. I&amp;#039;d even think hard about &lt;br /&gt;
NFS if the platform created many files but all were very small; Today&amp;#039;s &lt;br /&gt;
filers have very respectable IOPS rates. If it came down to IO &lt;br /&gt;
bandwidth, I&amp;#039;m still on the parallel file system bandwagon. NFS just &lt;br /&gt;
can&amp;#039;t deal with that at present and I do still have the folks, in house, &lt;br /&gt;
to manage the administrative burden. &lt;br /&gt;
&lt;br /&gt;
Done. That was useful for me. I think five years ago I might have opted &lt;br /&gt;
for Lustre in the &amp;quot;create many small files&amp;quot; case, where I would consider &lt;br /&gt;
NFS today, so re-examining the motivations, relative strengths, and &lt;br /&gt;
weaknesses of both was useful. As I said, I did this more as a &lt;br /&gt;
self-exercise than anything else but I hope you can find something &lt;br /&gt;
useful here, too.&lt;br /&gt;
&lt;br /&gt;
[[Category: NeedsReview]]&lt;/div&gt;</summary>
		<author><name>KenRawlings</name></author>
	</entry>
</feed>