Re: [PATCH 0/7 V4] The NFSv4 only mounting daemon.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 3/4/21 8:01 AM, J. Bruce Fields wrote:
On Thu, Mar 04, 2021 at 08:42:24AM -0500, Steve Dickson wrote:


On 3/3/21 4:54 PM, J. Bruce Fields wrote:
On Wed, Mar 03, 2021 at 04:22:28PM -0500, Steve Dickson wrote:
Hey!

On 3/3/21 10:23 AM, J. Bruce Fields wrote:
On Tue, Mar 02, 2021 at 05:33:23PM -0500, Steve Dickson wrote:


On 2/24/21 3:30 PM, J. Bruce Fields wrote:
On Fri, Feb 19, 2021 at 03:08:08PM -0500, Steve Dickson wrote:
nfsv4.exportd is a daemon that will listen for only v4 mount upcalls.
The idea is to allow distros to build a v4 only package
which will have a much smaller footprint than the
entire nfs-utils package.

exportd uses no RPC code, which means none of the
code or arguments that deal with v3 was ported,
this again, makes the footprint much smaller.

How much smaller?
Will a bit smaller... but a number of daemons like nfsd[cld,clddb,cldnts]
need to also come a long.

Could we get some numbers?

Looks like nfs-utils in F33 is about 1.2M:

$ rpm -qi nfs-utils|grep ^Size
Size        : 1243512

$ strip utils/mountd/mountd
$ ls -lh utils/mountd/mountd
-rwxrwxr-x. 1 bfields bfields 128K Mar  3 10:12 utils/mountd/mountd
$ strip utils/exportd/exportd
$ ls -lh utils/exportd/exportd
-rwxrwxr-x. 1 bfields bfields 106K Mar  3 10:12 utils/exportd/exportd

So replacing mountd by exportd saves us about 20K out of 1.2M.  Is it
worth it?
In smaller foot print I guess I meant no v3 daemons, esp rpcbind.

The rpcbind rpm is 120K installed, so if the new v4-only rpm has no
dependency on rpcbind then we save 120K.
The point with rpcbind is it not going to be started which means
it not opening up listening connection that may never be used.
This has pissed of people for years! :-)

OK, but we can do that without replacing mountd and changing the way
everyone installs nfs-utils and runs the nfs server.

>
> --b.
>

Yes, but then people get involved. The announcement of exportd was the tech highlight of my week. It's not about the size, it's about how distros package the tools, documentation, and configuration complexity. Taking these one at a time:

If it were up to me, everyone would run Arch linux with NFS systemd service files I wrote myself. These service files would pretend that NFS v.3 was long forgotten. Unfortunately, I work in a large organization with other people and don't get to make those calls. We run Ubuntu and RHEL/CentOS, and the systemd service files are configured to launch rpcbind as a dependent service. That's a problem because the local Information Security Office sees rpcbind as a dangerous cancer and will automatically quarantine any machine advertising this service. I've worked through the spaghetti ensemble of service units provided by Canonical which launch NFS services in order to attempt to undo the rpcbind dependency, but it's a pain in the ass. If NFS v.3 isn't an option, the distro supplied service files will necessarily be required to behave, too.

If the NFS documentation were superlative, this might be less of a problem, but the current instantiation of NFS is saddled with decades of technical debt, out of date documentation and some new features aren't even documented (we've even discussed this on this list). I'm still trying to figure out how people know how to set up pNFS, for example. NFS v4 is sufficiently different from v3 that the preponderance of old information on the Internet is confusing and contradictory. If the daemon name is different, that's an immediate and obvious tip off that you're looking at out of date information. The people referencing exportd are the ones to pay attention to.

Looking at one of my Ubuntu 18.04 server installs, there's configuration information in the systemd unit files, there's configuration information in /etc/default, and elsewhere. If I set

  RPCMOUNTDOPTS="--manage-gids -N 2 -N 3 -u"

in /etc/default/nfs-kernel-server, does that actually do anything? Who knows? (Actually, if you dig through everything related in /lib/systemd/system, it does at least read this file.) Runing tcpdump and tracing the packets should not be the solution to every configuration question. Any simplification of this is welcome, even if the resulting code is 128K *larger*.

Also, I'm guessing NFS would see wider adoption if there were a simplified v.4 only packaging option. Just sayin'.




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux