From owner-freebsd-fs@FreeBSD.ORG Sat Apr 16 00:57:02 2011 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F154106564A for ; Sat, 16 Apr 2011 00:57:02 +0000 (UTC) (envelope-from rmacklem@uoguelph.ca) Received: from esa-annu.mail.uoguelph.ca (esa-annu.mail.uoguelph.ca [131.104.91.36]) by mx1.freebsd.org (Postfix) with ESMTP id AAFCB8FC08 for ; Sat, 16 Apr 2011 00:57:01 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApwEAL7oqE2DaFvO/2dsb2JhbACET6I1iG+qL5E9gSmDTXgEjXo X-IronPort-AV: E=Sophos;i="4.64,222,1301889600"; d="scan'208";a="117601634" Received: from erie.cs.uoguelph.ca (HELO zcs3.mail.uoguelph.ca) ([131.104.91.206]) by esa-annu-pri.mail.uoguelph.ca with ESMTP; 15 Apr 2011 20:57:00 -0400 Received: from zcs3.mail.uoguelph.ca (localhost.localdomain [127.0.0.1]) by zcs3.mail.uoguelph.ca (Postfix) with ESMTP id C5A25B3F5B; Fri, 15 Apr 2011 20:57:00 -0400 (EDT) Date: Fri, 15 Apr 2011 20:57:00 -0400 (EDT) From: Rick Macklem To: Jeremy Chadwick Message-ID: <1924310048.124584.1302915420741.JavaMail.root@erie.cs.uoguelph.ca> In-Reply-To: <20110415140435.GA4278@icarus.home.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [172.17.91.203] X-Mailer: Zimbra 6.0.10_GA_2692 (ZimbraWebClient - IE7 (Win)/6.0.10_GA_2692) Cc: freebsd-fs@freebsd.org Subject: Re: RFC: make the experimental NFS subsystem the default one X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Apr 2011 00:57:02 -0000 > > I can't speak for others, but I would feel much more comfortable if a > well-written and verbose document/web page was put up somewhere with a > full, concise list of what the changes are. Well, if you mean source code changes, I can't think of how I could come up with this. The experimental NFS implementation is based on work I started in 2003 and is a separate implementation from the other one in FreeBSD, so I can't produce any kind of "log" of changes for it. (I started from the code in OpenBSD2.6, but there would be very little of that code left at this point.) I can tell you that, as far as I know, it supports NFSv2 and NFSv3 in the same way the other/regular server does. (There might be an obscure case where it returns a different errno for some failure or similar, but nothing that I am aware of.) I ran it in production mode for a few years, where the clients were mostly Linux 2.4 and 2.6 systems, plus a FreeBSD4.6 system and didn't see issues when they used NFSv3 mounts. I would like to think that folks won't notice anything when they switch over, but I am not nieve(sp?) enough to believe no one will find problems with it. The one area that is different is what nfsstat reports, since the "-e" version includes extra information. If that causes difficulties for folks, it should be possible to implement a "old nfsstat -s" compatible output that just reports the same information as "nfsstat -s" does now. > Additionally, > documentation > stating *exactly* what to do / provide you in the case something > starts > acting wonky would be highly beneficial (commands, kernel stuff, > whatever would help you in troubleshooting). > I can't think of a good answer for this, either, because it depends upon what "wonky" means. I don't think it's much different than any other issue that shows up in freebsd-current (or freebsd-stable or freebsd-fs) or a PR? (Then add the "-o" option to flip back to the old server until the problem gets resolved.) > NFS, as I'm sure you know, is one of those things where if you break > it > people get *very* (rightfully) upset. NFS breakage is one of the > reasons I moved away from Linux back in the mid-to-late-90s (true). > The > last thing I need is to upgrade our FreeBSD-based filer to find that > while I'm sleeping NFS suddenly behaves oddly or breaking (either on > our > clients or the server). > > The reason I haven't tried the experimental NFS server is simply > because > I have absolutely no idea what the improvements are; no documentation > + > no incentive = no try. :-) The man page for nfsd(8)'s -e flag tells me > nothing more than it's "experimental code" and adds NFSv4 support (the > latter does not interest me). > Well, about the only improvement is NFSv4, so for you there is no incentive at this time. Hopefully you may find the better file locking, ACLs etc that NFSv4 offsers useful improvements someday. It does have a rather novel DRC (duplicate request cache), which I believe works better, particularily when clients use TCP, but I can't say that you'll see a noticible change because of this. (Maybe less mbuf hungry compared to the generic one in the FreeBSD8 krpc.) > Stuff that concerns me the most (for our environment): > > - Works properly when used with PXE booting and an NFS-based install > (e.g. a new 8.2-RELEASE box is being built/installed via serial > console and PXE that mounts an NFS filesystem for installation data; > will this work if the NFS server is running this experimental > code?). I remember you mentioning something to me a long time ago, > and I'm almost certainly remembering it wrong, about how the PXE boot > client (/boot/pxeboot) on FreeBSD uses a very old version of the NFS > protocol. > Well, I've PXE booted from it using the old pxeboot code that used NFSv2 and the recent code that I modified to use NFSv3. I don't see why there would be a problem, but obviously I can't guarantee that. > - Works properly when used with *very* old FreeBSD clients. How old? > I'm talking 6.4-STABLE old. Yes, we do in fact have boxes that old > that are in production. > As noted above, I have used it with a FreeBSD4.6 client, but I don't have any old FreeBSD systems to test against any more. > - Works exactly the same, configuration and performance-wise, as the > existing (non-experimental) code. Focusing on NFSv2 and NFSv3 here, > specifically UDP (the default). NFSv4 does not matter to us in any > way shape or form. > I believe it will, but can't say it will. > - Has the experimental code been stress-tested? If so, how? I've heard > of people doing silly things like testing with filesystem benchmark > utilities -- which pass/work fine, but the instant someone tries > using something like rsnapshot (like we do), the thing falls apart. > > I'm concerned greatly about things like the kernel "deadlocking" > (alive > but isn't actually responsive to a lot of things), unkillable > processes, > processes stuck in bad states due to NFS oddities, or abysmal > performance. > Well, all I have access to these days are two laptops and one old desktop system. Someone was going to look at trying it in FreeBSD's network perf cluster, but I don't know if that has happened. I have heard some positive reports from others, but... As noted above, I did run an earlier version of the server in production mode when I first ported it to FreeBSD and it handled the loads we had well, but that's a long time ago. One of the reasons that I was encouraged to suggest this is to get it more widely tested. I can only do so much in this regard and that has already happened. If others aren't willing to try and run it, it can't progress beyond where it is now. Maybe someone from Isilon could chime in with some information on what testing they've put it through, recognizing that their system is significantly different and without giving out any information that they would consider proprietary? Again, I can't guarantee there won't be a regression, but until others try to run it, I/we won't know. > My intent here is not to sound overly critical, but critical enough to > make sure you triple-check all your ducks are in a row. :-) > Well, I can't think of more that I can do than answer, as above.