文档

NFS文件系统常见挂载错误处理

更新时间:

本文为您介绍Alibaba Cloud Linux 2和Alibaba Cloud Linux 3系统中挂载NFS文件系统时常见的错误原因和解决方案。

mount.nfs: command not found

问题现象

  • 通过mount.nfs方式挂载NFS文件系统(server_ip需替换为对应实例的公网ip地址):

    sudo mount.nfs server_ip:/directory /mnt

    报错信息如下:

    -bash: mount.nfs: command not found
  • 通过mount -t nfs方式挂载NFS文件系统(server_ip需替换为对应实例的公网IP地址):

    sudo mount -t nfs server_ip:/directory /mnt

    报错信息如下:

    mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.

问题原因

系统缺少nfs-utils包或者没有安装相关的rpcbind组件。

解决方案

  1. 安装nfs-utils包和 rpcbind组件:

    sudo yum install -y nfs-utils rpcbind
  2. 查看nfs-utils包和 rpcbind组件安装是否成功:

    sudo yum list installed | grep nfs-utils

mount: /nfs/testdir: mount point does not exist

问题现象

挂载NFS时的命令如下(server_ip需替换为对应实例的公网ip地址):

sudo mount -t nfs -o vers=3 server_ip:/export/fs/dir /nfs/testdir

报错信息为:

mount: /nfs/testdir: mount point does not exist.

问题原因

本地挂载点不存在。

解决方案

创建本地挂载点,本文以创建/nfs/testdir挂载点为例:

sudo mkdir -p /nfs/testdir

挂载后读写文件提示权限不足“Operation not permitted”

说明

该问题仅在NFSv4及以上版本可能发生,NFSv3不会出现类似问题。

问题现象

挂载NFS文件系统后,某子文件夹的目录所属用户为root。即使当前本地用户为root,依然无法在目录下新建文件,提示“Operation not permitted”。

  1. 例如,当前远程文件夹通过NFS挂载到的本地文件夹为/nfs/testdir,目录情况如下:

    cd /nfs/testdir & ls -lh

    返回信息如下所示:

    total 20K
    drwxr-xr-x 2 root root 4.0K Sep 5 13:08 subdir
    drwx------ 2 root root 16K Sep 5 13:07 lost+found
  2. 进入子目录并创建文件:

    cd subdir & touch testfile

    报错信息如下:

    touch: cannot touch 'testfile': Permission denied

问题原因

远程的服务器端对应的文件夹未开启“no_root_squash”。注意到,subdir的所属用户和用户组都为root,但这里指代的是服务器端的root用户。在未开启这一配置项时,客户端的root用户会被映射为服务器端的一个匿名用户,因此在NFS共享目录上,root用户只能操作普通用户拥有权限的文件,无法进行一些需要超级权限的操作。配置了no_root_squash后,客户端的root用户就拥有了该共享目录的全部权限。

解决方案

  1. 在服务器端检查并编辑/etc/exports文件:

    sudo vim /etc/exports
  2. i键进入编辑模式,添加以下内容:

    /export/fs/vdc *(rw,no_subtree_check,no_root_squash)
  3. Esc键,输入:wq后按Enter键,保存配置。

  4. 保存文件并退出,在服务器端更新共享文件的配置:

    sudo exportfs -r