[pve-devel] [PATCH storage] fix: check connection for nfs v4 only server
Alwin Antreich
a.antreich at proxmox.com
Wed Dec 16 15:00:36 CET 2020
On Wed, Dec 16, 2020 at 12:59:04PM +0100, Alwin Antreich wrote:
> the check_connection is done by querying the exports of the nfs server
> in question. With nfs v4 those exports aren't listed anymore since nfs
> v4 employs a pseudo-filesystem starting from root (/).
>
> rpcinfo allows to query the existence of an nfs v4 service.
>
> Signed-off-by: Alwin Antreich <a.antreich at proxmox.com>
> ---
> Note: scan_nfs will not work with nfs v4 only, since it also employs
> showmount. The path has to be provided manually.
>
> PVE/Storage/NFSPlugin.pm | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/PVE/Storage/NFSPlugin.pm b/PVE/Storage/NFSPlugin.pm
> index e8e27c0..72e06c2 100644
> --- a/PVE/Storage/NFSPlugin.pm
> +++ b/PVE/Storage/NFSPlugin.pm
> @@ -160,8 +160,16 @@ sub check_connection {
> my ($class, $storeid, $scfg) = @_;
>
> my $server = $scfg->{server};
> -
> - my $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server];
> + my $opts = $scfg->{options};
> +
> + my $cmd;
> + if (defined($opts) && $opts =~ /vers=4.*/) {
> + # nfsv4 uses a pseudo-filesystem always beginning with /
> + # no exports are listed
> + $cmd = ['/usr/sbin/rpcinfo', '-t', $server, 'nfs', '4'];
> + } else {
> + $cmd = ['/sbin/showmount', '--no-headers', '--exports', $server];
> + }
>
> eval { run_command($cmd, timeout => 10, outfunc => sub {}, errfunc => sub {}) };
> if (my $err = $@) {
> --
> 2.27.0
>
In addition, the rpcbind service needs to run. Otherwise there is no
easy way to do the connection check.
See the troubleshooting on the forum.
https://forum.proxmox.com/threads/unable-to-mount-nfs-storage.80694/#post-357062
--
Cheers,
Alwin
More information about the pve-devel
mailing list