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

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

 



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. 

It is not surprising mountd and exportd are similar size since
they are using the same code to do the same thing. With the only
exception is exportd does not have any RPC code. It only handles 
upcalls from the kernel.

> 
>>>> The following options were ported:
>>>>     * multiple threads
>>>>     * state-directory-path option
>>>>     * junction support (not tested)
>>>>
>>>> The rest of the mountd options were v3 only options.
>>>
>>> There's also --manage-gids.
>> Right... a patch was posted... 
>>
>>>
>>> If you want nfsv4-only at runtime, you can always run rpc.mountd with
>>> -N2 -N3 to turn off the MOUNT protocol support.
>> The end game is not to run mountd at all... 
>>
>>>
>>> If you don't even want v2/f3 code on your system, then you may have to
>>> do something like this, but why is that important?
>> Container friendly... Not bring in all the extra daemons v3
>> needs is a good thing... esp rpcbind. 
> 
> Looking at the output of
> $ for f in $(rpm -ql nfs-utils); do if [ -f $f ]; then ls -ls $f; fi; done|sort -n
> 
> It looks like removing statd, sm-notify, showount and their man pages
> would free about another 170K.
And rpcbind and rpcinfo... But thanks for taking a look.

> 
> I think that's about how much we'd save by seperating out a separate
> documentation package.
hmm... interesting idea.

> 
> I don't know, what sort of gains are container folks asking for?
It is my understanding rpcbind and containers do not play nicely. 

Plus I don't think it is a bad idea to be able just install
and nfsv4 client or just install an nfsv4 server.
Maybe I'm wrong??

steved.

> 
> --b.
> 
>>
>> steved.
>>
>>>
>>> --b.
>>>
>>>>
>>>> V2:
>>>>   * Added two systemd services: nfsv4-exportd and nfsv4-server
>>>>   * nfsv4-server starts rpc.nfsd -N 3, so nfs.conf mod not needed.
>>>>
>>>> V3: Changed the name from exportd to nfsv4.exportd
>>>>
>>>> V4: Added compile flag that will compile in the NFSv4 only server
>>>>
>>>> Steve Dickson (7):
>>>>   exportd: the initial shell of the v4 export support
>>>>   exportd: Moved cache upcalls routines into libexport.a
>>>>   exportd: multiple threads
>>>>   exportd/exportfs: Add the state-directory-path option
>>>>   exportd: Enabled junction support
>>>>   exportd: systemd unit files
>>>>   exportd: Added config variable to compile in the NFSv4 only server.
>>>>
>>>>  .gitignore                                |   1 +
>>>>  configure.ac                              |  14 ++
>>>>  nfs.conf                                  |   4 +
>>>>  support/export/Makefile.am                |   3 +-
>>>>  {utils/mountd => support/export}/auth.c   |   4 +-
>>>>  {utils/mountd => support/export}/cache.c  |  46 +++-
>>>>  support/export/export.h                   |  34 +++
>>>>  {utils/mountd => support/export}/fsloc.c  |   0
>>>>  {utils/mountd => support/export}/v4root.c |   0
>>>>  {utils/mountd => support/include}/fsloc.h |   0
>>>>  systemd/Makefile.am                       |   6 +
>>>>  systemd/nfs.conf.man                      |  10 +
>>>>  systemd/nfsv4-exportd.service             |  12 +
>>>>  systemd/nfsv4-server.service              |  31 +++
>>>>  utils/Makefile.am                         |   4 +
>>>>  utils/exportd/Makefile.am                 |  65 +++++
>>>>  utils/exportd/exportd.c                   | 276 ++++++++++++++++++++++
>>>>  utils/exportd/exportd.man                 |  81 +++++++
>>>>  utils/exportfs/exportfs.c                 |  21 +-
>>>>  utils/exportfs/exportfs.man               |   7 +-
>>>>  utils/mountd/Makefile.am                  |   5 +-
>>>>  21 files changed, 606 insertions(+), 18 deletions(-)
>>>>  rename {utils/mountd => support/export}/auth.c (99%)
>>>>  rename {utils/mountd => support/export}/cache.c (98%)
>>>>  create mode 100644 support/export/export.h
>>>>  rename {utils/mountd => support/export}/fsloc.c (100%)
>>>>  rename {utils/mountd => support/export}/v4root.c (100%)
>>>>  rename {utils/mountd => support/include}/fsloc.h (100%)
>>>>  create mode 100644 systemd/nfsv4-exportd.service
>>>>  create mode 100644 systemd/nfsv4-server.service
>>>>  create mode 100644 utils/exportd/Makefile.am
>>>>  create mode 100644 utils/exportd/exportd.c
>>>>  create mode 100644 utils/exportd/exportd.man
>>>>
>>>> -- 
>>>> 2.29.2
>>>
> 




[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