After some more tinkering, I have still not gotten any progress.
The goal for me is to use Docker Swarm volume mounting with the NFS driver for persistent and reliable storage for containers.
There are gluster drivers for the volume mount that exist but I’m not 100% on trusting that.
So I need to use NFS and Gluster simultaneously. When attempting to setup nfs-ganesha
, this is the error I get when starting the service:
Sep 10 10:56:28 node1.domain.com systemd[1]: nfs-ganesha.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Sep 10 10:56:28 node1.domain.com bash[28492]: prlimit: failed to set the NOFILE resource limit: No such process
Sep 10 10:56:30 node1.domain.com systemd[1]: Failed to start NFS-Ganesha file server.
-- Subject: Unit nfs-ganesha.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit nfs-ganesha.service has failed.
--
-- The result is failed.
Sep 10 10:56:30 node1.domain.com systemd[1]: Unit nfs-ganesha.service entered failed state.
Sep 10 10:56:30 node1.domain.com systemd[1]: nfs-ganesha.service failed.
Sep 10 10:56:30 node1.domain.com polkitd[704]: Unregistered Authentication Agent for unix-process:28474:51463736 (system bus name :1.437, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
This only happens after I add this to the /etc/ganesha/ganesha.conf
file:
%include "/etc/ganesha/export.conf"
If I remove this line, the service starts up but obviously without any exports.
Looking here: https://github.com/nfs-ganesha/nfs-ganesha/wiki/Configurationfile
I see this:
Another configuration file can be included by:
%include " a/path/in/the/filesystem "'
Which appears to be what I did. My path to the export file is just /etc/ganesha/export.conf
, and it is this:
# cat /etc/ganesha/export.conf
EXPORT{
Export_Id = 1 ; # Export ID unique to each export
Path = "/bricks/Brick01/replicated"; # Path of the volume to be exported. Eg: "/test_volume"
FSAL {
name = replication;
hostname = "192.168.50.65"; # IP of one of the nodes in the trusted pool
volume = "replication"; # Volume name. Eg: "test_volume"
}
Access_type = RW; # Access permissions
Squash = No_root_squash; # To enable/disable root squashing
Disable_ACL = TRUE; # To enable/disable ACL
Pseudo = "/bricks/Brick01/replicated"; # NFSv4 pseudo path for this export. Eg: "/test_volume_pseudo"
Protocols = "3","4" ; # NFS protocols supported
Transports = "UDP","TCP" ; # Transport protocols supported
SecType = "sys"; # Security flavors supported
}
EXPORT{
Export_Id = 2 ; # Export ID unique to each export
Path = "/bricks/Brick01/replicated"; # Path of the volume to be exported. Eg: "/test_volume"
FSAL {
name = alternate-replication;
hostname = "192.168.50.55"; # IP of one of the nodes in the trusted pool
volume = "alternate-replication"; # Volume name. Eg: "test_volume"
}
Access_type = RW; # Access permissions
Squash = No_root_squash; # To enable/disable root squashing
Disable_ACL = TRUE; # To enable/disable ACL
Pseudo = "/bricks/Brick01/replicated"; # NFSv4 pseudo path for this export. Eg: "/test_volume_pseudo"
Protocols = "3","4" ; # NFS protocols supported
Transports = "UDP","TCP" ; # Transport protocols supported
SecType = "sys"; # Security flavors supported
}