Jay

Ubuntu下配置NFS

什么是NFS

NFS(Network FileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS组成

NFS有一个服务端和若干个客户端组成

NFS作用

  1. 可以将一些文件放到远程,节省本地存储空间
  2. 在其他服务器上也能访问相同的文件,可解决负载均衡中,文件同步问题
  3. 文件便于集中管理,备份

服务端安装及配置

// 安装服务端
sudo apt install nfs-kernel-server
// 修改配置
sudo vi /etc/exports
// 重启
sudo service nfs-kernel-server restart

配置说明

// ip不限
/var/data *(rw,sync,no_root_squash)
//目录 ip(权限) ip(权限)
/var/data 127.0.0(rw,sync,no_root_squash) 127.0.0(rw,sync,no_root_squash)

rw 可读写的权限
ro 只读的权限
no_root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个参数『极不安全』,不建议使用
all_squash 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
anonuid 可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中
anongid 同anonuid,但是变成groupID就是了
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问

配置生效,无需重启

sudo exportfs -rv

exportfs命令
常用选项
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录

showmount

// 显示NFS服务器上所有的共享目录
showmount -e
// 仅显示已被NFS客户端加载的目录
showmount -a

原文地址 https://www.unix.com/man-page/all/1m/showmount/

固定mountd端口

系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768—65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口

# vi /etc/services

在末尾添加
mountd 端口号/udp
mountd 端口号/tcp

NFS的守护进程

rpc.nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器

rpc.mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过rpc.nfsd登录NFS服务后,在使用NFS服务所提供的文凭前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

portmap:portmap的主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

查看 rpc进程

rpcinfo -p

防火墙配置

阿里云有虚拟防火墙,需要配置安全组,如图

客户端配置

安装

apt-get install nfs-common

挂载

showmount -e 服务端ip
// 查看服务端共享目录,若超时了,可能防火墙有问题,需要开放相应端口
mount -t nfs 服务端ip:共享目录 挂载目录

挂载命令详细说明

查看所有挂载

df -h