NFS 是 Network FileSystem 的缩写,
网络文件存储系统
它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。
————————————————
版权声明:本文为CSDN博主「哎_小羊_168」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aixiaoyang168/article/details/83782336
参考教程:https://www.cnblogs.com/xiaoL/p/13384640.html
NFS服务器环境:ubuntu20.04 PC
NFS客户端环境:Linux 5.4 ARM9开发板
sudo apt install nfs-kernel-server
sudo apt install nfs-common
服务器上不可以随意共享目录,如果需要共享某一个目录则需要对该文件进行配置
这里我在ubuntu上设置的共享目录为用户目录下自己建立的mnt目录
cd #回到家目录
mkdir mnt #在该目录下建立mnt共享文件夹
chmode 666 mnt #增加mnt目录的所有用户都有文件读、写权限。这条可以不运行,因为这里建立的目录在用户个人目录以下
这里需要使用超级用户更改配置文件的内容,一般情况下只需要在文件末尾增加权限即可
sudo vim /etc/exports
打开export文件后添加以下设置在文尾:
/home/tianxiaohua/mnt 192.168.1.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
/home/tianxiaohua/mnt *(rw,sync,insecure,no_subtree_check,no_root_squash)
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async nfs 在写入数据前可以响应请求
secure nfs 通过 1024 以下的安全 TCP/IP 端口发送
insecure nfs 通过 1024 以上的端口发送
wdelay 如果多个用户要写入 nfs 目录,则归组写入(默认)
no_wdelay 如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置
hide 在 nfs 共享目录中不共享其子目录
no_hide 共享 nfs 目录的子目录
subtree_check 如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
no_subtree_check 不检查父目录权限
all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
no_all_squash 保留共享文件的 UID 和 GID(默认)
root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squash root 用户具有根目录的完全管理访问权限
anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID
最后保存export文件,完成设置
service rpcbind start
或者使用:
/bin/systemctl start rpcbind.service
查看 NFS 服务项 rpc 服务器注册的端口列表
rpcinfo -p localhost
可以得到类似如下输出:
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 33562 mountd
100005 1 tcp 47385 mountd
100005 2 udp 36412 mountd
100005 2 tcp 51027 mountd
100005 3 udp 60876 mountd
100005 3 tcp 43621 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049
100003 3 udp 2049 nfs
100227 3 udp 2049
100021 1 udp 46848 nlockmgr
100021 3 udp 46848 nlockmgr
100021 4 udp 46848 nlockmgr
100021 1 tcp 39799 nlockmgr
100021 3 tcp 39799 nlockmgr
100021 4 tcp 39799 nlockmgr
sudo service nfs-server start #启动服务
sudo service nfs-server status #查看服务状态
测试:
此时NFS服务已经启动完成,可以通过查看本机挂载的状态来判断是不是已经开启了NFS
showmount -e localhost #查看本级NFS服务
当出现以下提示的时候表示NFS已经配置完成
Export list for localhost:
/home/tianxiaohua/mnt 192.168.1.0/24
需要在客户端上建立mnt目录,这里使用的是linux5.4的ARM9嵌入式开发板作为客户端挂载服务器的代码。
mount 192.168.1.6:/home/tianxiaohua/mnt /mnt #挂载
df -h | grep 192.168.1.6 #查看服务器状态
可以看到使用情况:
Filesystem
Size Used Avail Use% Mounted on 10.222.77.86:/data/share 27G 11G 17G 40% /share
为了提高 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令可使用如下命令:
mount 192.168.1.6::/home/tianxiaohua/mnt /mnt -o proto=tcp -o nolock
取消挂载
umount /mnt