Bug 736754

Summary: NFS over RDMA needs to be documented
Product: Red Hat Enterprise Linux 6 Reporter: Steve Dickson <steved>
Component: doc-Storage_Admin_GuideAssignee: Jacquelynn East <jeast>
Status: CLOSED CURRENTRELEASE QA Contact: ecs-bugs
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.3CC: dledford, jhradile, makc, rlandman, sprabhu
Target Milestone: rcKeywords: Documentation
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 798110 (view as bug list) Environment:
Last Closed: 2012-06-21 23:53:55 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 798110    
Deadline: 2012-03-05   

Description Steve Dickson 2011-09-08 15:52:43 UTC
Description of problem:
Currently there is no documentation stating RHEL6 supports
NFS over RDMA or how to set it up.

Comment 6 Max Matveev 2011-10-21 01:12:08 UTC
Jacquelynn,

are you looking for more info then covered below? If you're, I'd need
the details and I'll also need a couple of hosts to play with.

On the server:

1. install rdma rpm and its prereqs
2. chkconfig --add nfs-rdma (steved - is if yours of 
   ledford's to make it automagic?)
3. make sure NFSoRDMA_LOAD is set to yes in /etc/rdma/rdma.conf

On the client

1. install rdma rpm and its prereqs
2. use 'rdma' option when mounting, e.g.

   mount -t nfs -o rdma dumpy:/bitbucket /mnt/bits

Comment 7 Steve Dickson 2011-10-24 14:01:14 UTC
(In reply to comment #6)
> Jacquelynn,
> 
> are you looking for more info then covered below? If you're, I'd need
> the details and I'll also need a couple of hosts to play with.
> 
> On the server:
> 
> 1. install rdma rpm and its prereqs
> 2. chkconfig --add nfs-rdma (steved - is if yours of 
>    ledford's to make it automagic?)
> 3. make sure NFSoRDMA_LOAD is set to yes in /etc/rdma/rdma.conf
This all new to me... 

The "Check RDMA and NFS Setup' and 'NFS/RDMA Setup' sections in:
   http://kernel.org/doc/Documentation/filesystems/nfs/nfs-rdma.txt
are what I used to set up my NFSoRDMA testing on both the 

Doug, are those scripts supported, tested and or documented?
I see they rdma is also in Fedora, but have not been converted 
to uses systemd.

Comment 8 Steve Dickson 2011-10-24 14:32:13 UTC
Also note, to enable RDMA support on the server side and have all
the correct modules loaded, uncomment RDMA_PORT in /etc/sysconfig/nfs
I added this to the RHEL6.1 nfs-utils.

So it appears there is two ways to bring up the server... We
probably should consolidate this into one...  Thoughts?

Comment 9 Doug Ledford 2011-10-24 19:15:06 UTC
I'm going to be rebuilding the rdma package before snap4 user space deadline I think, so I can get any needed changes in.  However, all my startup script really does is enable the extra rdma port and load the rdma related transfer modules.  One thing I'm concerned about though is changing configuration methods mid stream.  People using one method or the other might get confused when it goes away unexpectedly.

Comment 10 Doug Ledford 2011-10-24 19:22:06 UTC
I forgot to answer Steve's question from comment #7.  As for any file in the rdma package, I own and am the upstream for that package and I support all those files.  Now, that's not to say I think my nfs-rdma script has to take precedence over anything else, I just added it because back when I added it, there wasn't another option to automatically bring up rdma support at each boot.

As for documentation, the nfs-rdma stuff has not been documented, although the /etc/rdma/rdma.conf file and its role in rdma system configuration has been documented on our knowledge base.  If people go poking around in that file looking at other options because of docs on the knowledge base, then they are likely to see the NFSoRDMA option and figure the rest out for themselves (although they might not get that they need to enable the initscript as well).

So, I would say partially documented and easy for people to put two and two together.

And they are tested, although as you point out in Fedora I have yet to convert them to systemd based services.

Comment 11 Max Matveev 2011-10-25 01:23:26 UTC
Pity that the left foot didn't know about the actions of the right hand.

To me Doug's script looks more polished and more likely to
make things work: to have NFS/RDMA server up and running one
would need rdma_cm and ipoib loaded - svcrdma has dependency on rmda_cm
but not on ipoib, Doug's nfs-rdma has dependency on $rdma which is loading
ipoib if configured which seems to be a more 'logical' approach.

I'd say we "de-emphasise" RDMA_PORT in /etc/sysconfig/nfs in preference
to nfs-rdma.

Comment 12 Steve Dickson 2011-10-25 09:58:59 UTC
(In reply to comment #11)
> Pity that the left foot didn't know about the actions of the right hand.
:-)

> 
> To me Doug's script looks more polished and more likely to
> make things work: to have NFS/RDMA server up and running one
> would need rdma_cm and ipoib loaded - svcrdma has dependency on rmda_cm
> but not on ipoib, Doug's nfs-rdma has dependency on $rdma which is loading
> ipoib if configured which seems to be a more 'logical' approach.
> 
> I'd say we "de-emphasise" RDMA_PORT in /etc/sysconfig/nfs in preference
> to nfs-rdma.
I agree for RHEL6 but I think these scripts should be rolled into
nfs-utils for RHEL7 since 1) everything changes with systemd anyways
2) Having to install/enable/start two packages just to get NFSoRDMA
support in the server is not ideal...

So Jacquelynn what is needed to move forward with this?

Comment 13 Doug Ledford 2011-10-25 16:28:44 UTC
Actually, I'd do it the other way around Steve (meaning instead of rolling the nfs-rdma script into nfs-utils, I'd leave it separate).  Here's my reasoning:

The rdma stack is not simple, and requires a rather complex script to bring up properly (see /etc/init.d/rdma).  It also has lots of options.  And most of it is totally unrelated to nfs, so there's no way rolling this into nfs-utils makes any sense.

The rdma portion of nfs depends on the rdma stack being up and in a usable condition in order for rdma support to actually work.  From a packaging standpoint, that means you really want the nfs-rdma support to have a requirement on the base rdma support.  But, for any non-rdma installation, the entire rdma stack is a waste of time.  So it would be best if we could install base nfs support without requiring the rdma stack, but if we *do* include nfs-rdma support, then we want a hard requirement on the rdma package.

What this means is that we really want the nfs-rdma support in its own package.  Whether it is built as a subpackage of nfs-utils and is called nfs-utils-rdma and Requires: rdma in just the nfs-utils-rdma portion of the spec file or whether it is in the rdma package directly doesn't matter to me.  But if it gets rolled into the base nfs-utils package then you need to also add a Requires: rdma to the base nfs-utils package and we *don't* want that.

So, personally, I think it being in the base rdma package makes perfect sense.  It means that nfs-utils doesn't have an unnecessary dependency on the rdma package, and it means that you will always have the rdma package installed when you enable nfs-rdma.  Really, the rdma support in nfs is a subcomponent of the overall nfs stack, and an only somewhat used one at that, so I would treat it as such instead of treating it as though it belongs in the base nfs implementation (analogous to the fact that ISDN is a subcomponent of dialup networking and is therefore separated out since only a select few users need it).

Comment 14 Steve Dickson 2011-10-27 16:11:00 UTC
(In reply to comment #13)
> Actually, I'd do it the other way around Steve (meaning instead of rolling the
> nfs-rdma script into nfs-utils, I'd leave it separate).  Here's my reasoning:
> 
> The rdma stack is not simple, and requires a rather complex script to bring up
> properly (see /etc/init.d/rdma).  It also has lots of options.  And most of it
> is totally unrelated to nfs, so there's no way rolling this into nfs-utils
> makes any sense.
Right.... I was just thinking about the nfs-rdma script so two
scripts do not have to be run to start the nfs server.

> 
> The rdma portion of nfs depends on the rdma stack being up and in a usable
> condition in order for rdma support to actually work.  From a packaging
> standpoint, that means you really want the nfs-rdma support to have a
> requirement on the base rdma support.  But, for any non-rdma installation, the
> entire rdma stack is a waste of time.  So it would be best if we could install
> base nfs support without requiring the rdma stack, but if we *do* include
> nfs-rdma support, then we want a hard requirement on the rdma package.
In the systemd world this will be take care with an "Requires" and "After" 
requirement.If foresee a systemd service called nfs-rdma-server.service.
In that service there would the following 2 line:
    Requires="rdma nfs-server.service" 
    After="rdma nfs-server.service" 
which would cause both the rdma and NFS server to be installed and
up and running.

 
> 
> What this means is that we really want the nfs-rdma support in its own package.
>  Whether it is built as a subpackage of nfs-utils and is called nfs-utils-rdma
> and Requires: rdma in just the nfs-utils-rdma portion of the spec file or
> whether it is in the rdma package directly doesn't matter to me. 
I guess I do see the wisdom of making it its own package. Plus
making it a sub package of nfs-utils would allow me to replace
the current RDMA support in /etc/sysconfig/nfs (which would be a 
good thing IMHO)... 

> But if it
> gets rolled into the base nfs-utils package then you need to also add a
> Requires: rdma to the base nfs-utils package and we *don't* want that.
You can could put a Requires: on a sub packages. Something similar to:

%package rdma
Summary: NFS over RDMA server support
Group:  System Environment/Base
Requires:   %{name} = %{version}-%{release}
Requires(rdma): rdma

> 
> So, personally, I think it being in the base rdma package makes perfect sense. 
> It means that nfs-utils doesn't have an unnecessary dependency on the rdma
> package, and it means that you will always have the rdma package installed when
> you enable nfs-rdma. 
The requirement of rdma  would be on the nfs-rdma-utils package not 
the normal nfs-utils package.
 
> Really, the rdma support in nfs is a subcomponent of the
> overall nfs stack, and an only somewhat used one at that, so I would treat it
> as such instead of treating it as though it belongs in the base nfs
> implementation (analogous to the fact that ISDN is a subcomponent of dialup
> networking and is therefore separated out since only a select few users need
> it).
From a support standpoint of view, I'm going to have to disagree... 
Have in that script part of the nfs-utils package will make it easier
for things to change. For example, the default port nfs-rdma is
different that the port used in the kernel doc (in Comment 7). Now
I agree this is a nit, but I think it proves my point. When the NFS
community makes changes in this area, it would be much easier for 
me to make the change if it was n nfs-utils then bothering you 
to make it.. 

So in summary, I think we both agree it the NFSoRDMA support should 
be its own package but we don't agree on which package should be a 
part of.... which we can hash out later... 

So Jacquelynn, what this means to you is, you need to document the
functionality of the /etc/rc.d/init.d/nfs-rdma init script since, 
regardless of who ones it, the functionality will not change...

Comment 15 Jacquelynn East 2011-11-03 23:15:23 UTC
*** Bug 730158 has been marked as a duplicate of this bug. ***