1. 简介应用场景:2. 安装2.1 服务端2.1.1 下载2.1.2 检查2.1.3 创建NFS共享目录2.1.4 编辑exports配置文件2.1.5 export共享目录2.1.7 重启nfs-kernel-server:2.2 客户端2.2.1 客户端安装2.2.2 检查2.2.3 创建目录3. 测试3.1 服务端3.2 客户端3.1 服务端4. 取消挂载
1. 简介
网络文件系统(network files system)简称NFS,是一种基于TCP传输协议的文件共享习通。
NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。
应用场景:
为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
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
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
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