📌

UbuntuTips10:Ubuntu挂载NFS

1. 简介

网络文件系统(network files system)简称NFS,是一种基于TCP传输协议的文件共享习通。 NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。
notion image

应用场景:

为web服务器作为视频,图片资源的服务器。域用户家目录服务器。内容文件存储服务器。

2. 安装

  • master服务端
  • node1客户端
  • node2客户端

2.1 服务端

master

2.1.1 下载

搭建NFS Server
安装NFS服务端:
sudo apt install nfs-kernel-server

2.1.2 检查

检查nfs-server是否已经启动:
sudo systemctl status nfs-server
 

2.1.3 创建NFS共享目录

创建一个NFS共享目录,所有客户端都可以访问该共享文件夹里面的内容,因此分配最高权限:
# 创建文件夹 sudo mkdir -p /nfs/data # 赋予权限 sudo chown nobody:nogroup /nfs/data sudo chmod 777 /nfs/data

2.1.4 编辑exports配置文件

通过编辑/etc/exports配置文件,来允许哪些客户端可以访问该共享。
# NFS主节点,暴露文件夹 echo "/nfs/data/ *(insecure,rw,sync,no_subtree_check,no_root_squash)" > /etc/exports
对于出口的基本选择:
选项
描述
rw
允许在NFS卷上进行读写请求。
ro
仅允许读取NFS卷上的请求。
anongid=GID
阅读以上内容(anonuid = UID)
anonuid=UID
这些选项显式设置匿名帐户的uid和gid。此选项主要对PC / NFS客户端有用,在PC / NFS客户端上,您可能希望所有请求看起来都来自一个用户。例如,请在下面的示例部分中考虑/ home / joe的导出条目,该条目将所有请求映射到uid 150。
no_all_squash
关闭所有壁球。(默认)
all_squash
将所有uid和gid映射到匿名用户。对于NFS导出的公共FTP目录,新闻假脱机目录等有用。
no_root_squash
关闭根挤压。此选项主要对无磁盘客户端有用。
root_squash
将请求从uid / gid 0映射到匿名uid / gid。请注意,这不适用于可能同样敏感的任何其他uid或gid,例如用户bin或组人员。
no_subtree_check
此选项禁用子树检查,这对安全性有轻微的影响,但在某些情况下可以提高可靠性。
subtree_check
此选项启用子树检查。(默认)
no_wdelay
如果还设置了异步,则此选项无效。如果NFS服务器怀疑另一个相关的写请求可能正在进行中或可能很快到达,则通常会稍稍延迟向磁盘提交写请求。这样一来,就可以将多个写入请求提交到磁盘,从而提高性能。如果NFS服务器主要接收小的无关请求,则此行为实际上可能会降低性能,因此no_wdelay可用于将其关闭。
wdelay
如果怀疑另一个相关的写请求可能正在进行中或可能很快到达,请稍稍延迟向磁盘提交写请求。(默认)
insecure
此选项接受所有端口。
secure
此选项要求请求源自小于IPPORT_RESERVED(1024)的Internet端口。(默认)
async
此选项允许NFS服务器违反NFS协议并在对该请求进行的任何更改提交到稳定存储之前答复该请求。
sync
仅在将更改提交到稳定存储后才回复请求。(默认)

2.1.5 export共享目录

将共享文件夹启用并生效:
sudo exportfs -a
使用showmount -e查看是否可以看到共享目录:
showmount -e 192.168.92.142
notion image

2.1.7 重启nfs-kernel-server:

sudo systemctl restart nfs-kernel-server

2.2 客户端

node2、node3
NFS Client配置

2.2.1 客户端安装

# 在Ubuntu20.04中安装客户端:nfs-common sudo apt install nfs-common

2.2.2 检查

showmount -e 192.168.92.142
notion image

2.2.3 创建目录

创建一个/nfs/data目录,将该目录挂载服务器上的NFS共享目录
# 创建目录 mkdir -p /nfs/data # mount 服务器IP:路径 客户端路径 mount 192.168.92.142:/nfs/data /nfs/data
开机自动挂载,在/etc/fstab里添加(如果是测试一次,可以不添加)
vim /etc/fstab
192.168.92.142:/nfs/data /nfs/data nfs rw 0 0
notion image

3. 测试

3.1 服务端

在服务端创建文件,写入文件。master
root@master:~# cd /nfs/data/ root@master:/nfs/data# ls root@master:/nfs/data# echo "Hello,Master_NFS" > a root@master:/nfs/data# cat a Hello,Master_NFS

3.2 客户端

node1、node2
# 查看master写入的内容 root@node2:~# cat /nfs/data/a Hello,Master_NFS # 切换到目录下,追加文件内容 root@node2:~# cd /nfs/data/ root@node2:/nfs/data# echo "Hello,Node1_NFS" >> a root@node2:/nfs/data# cat a Hello,Master_NFS Hello,Node1_NFS

3.1 服务端

master
在服务端查看客户端写入文件内容
root@master:/nfs/data# cat a Hello,Master_NFS Hello,Node1_NFS
 

4. 取消挂载

umount -v /nfs/data