NFS4 automount using replicated servers doesn't work
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
autofs5 (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
module-init-tools (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
nfs-utils (Ubuntu) |
New
|
Medium
|
Unassigned | ||
Bug Description
module-init-tools in debian has 'alias nfs4 nfs' in /etc/modprobe.
Binary package hint: autofs5
[ updated description: mount -t nfs4 server:/mnt /mnt fails through oneiric with -ENODEV from mount.nfs4 ]
In lucid, using autofs5 version 5.0.4-3.1ubuntu5, we are having trouble using failover with NFS. Autofs allows you to specify multiple hosts with weighting in its configuration files and will fall back to a secondary host if the first host is not available at mount time. However, currently on our systems, the mount fails completely. This functionality does work with our RHEL 5 hosts (which use autofs 5.0.1). Automounting from a single host does work, but when we supply multiple hosts, an strace shows that it's trying to connect to the IP address '0.0.0.0', port 0, rather than any of the hosts we specify.
I have attached the full strace output, our /etc/auto.master file, and the relevant file from /etc/autofs.d including the multiple hosts.
Changed in autofs5 (Ubuntu): | |
importance: | Undecided → Medium |
Changed in autofs5 (Ubuntu): | |
assignee: | nobody → Serge Hallyn (serge-hallyn) |
description: | updated |
I'm having the same issue using autofs 5.0.4-3.1ubuntu5.1 on lucid.
When using NFS3 specifying replicated servers does work, when using NFS4 it doesn't. If I run automount manually with verbose and debugging enabled I see the
following output when trying to access /usr/local:
####### ####### ####### ####### ####### ####### ####### packet_ missing_ direct: token 296, name /usr/local, request pid nfs4,ro, nodev,nosuid, nonstrict, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft server1: /local/ ubuntu64 server2: /local/ ubuntu64 nfs4,ro, nodev,nosuid, nonstrict, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft server1: /local/ ubuntu64 server2: /local/ ubuntu64 nfs4,ro, nodev,nosuid, nonstrict, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft "server1: /local/ ubuntu64" ) -> /local/ ubuntu64 "server2: /local/ ubuntu64" ) -> /local/ ubuntu64 fstype= nfs4,ro, nodev,nosuid, nonstrict, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft, loc=server1: /local/ ubuntu64 server2: /local/ ubuntu64 /local/ ubuntu64 server2: /local/ ubuntu64, fstype nfs4, nosuid, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft /local/ ubuntu64 server2: /local/ ubuntu64, fstype=nfs4, ro,nodev, nosuid, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft "ro,nodev, nosuid, nodev,sync, _netdev, proto=tcp, retry=10, rsize=8192, wsize=8192, soft", nosymlink=0, ro=1 send_fail: token = 296 ####### ####### ####### ####### ####### ####### ###
handle_packet: type = 5
handle_
2887
attempting to mount entry /usr/local
lookup_mount: lookup(file): looking up /usr/local
lookup_mount: lookup(file): /usr/local ->
-fstype=
parse_mount: parse(sun): expanded entry:
-fstype=
parse_mount: parse(sun): gathered options:
fstype=
parse_mount: parse(sun): dequote(
server1:
parse_mount: parse(sun): dequote(
server2:
parse_mount: parse(sun): core of entry:
options=
sun_mount: parse(sun): mounting root /usr/local, mountpoint /usr/local,
what server1:
options
ro,nodev,
mount_mount: mount(nfs): root=/usr/local name=/usr/local
what=server1:
options=
mount_mount: mount(nfs): nfs
options=
get_nfs_info: called for host server2 proto tcp version 0x40
get_nfs_info: called for host server1 proto tcp version 0x40
mount(nfs): no hosts available
dev_ioctl_
failed to mount /usr/local
#######
'get_nfs_info' seems to fail.
I can also confirm it does work properly on CentOS 5.5 running autofs 5.0.1.