前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NFS服务理解_什么才是最好的服务

NFS服务理解_什么才是最好的服务

作者头像
全栈程序员站长
发布2022-09-20 09:56:39
3070
发布2022-09-20 09:56:39
举报
文章被收录于专栏:全栈程序员必看

概念

NFS:Network File System 网络文件系统,基于内核的文件系统。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的 文件,基于RPC(Remote Procedure Call Protocol远程过程调用)实现。

RPC采用C/S模式。客户机请求程序调用进程发送一个有进程参数的调用信息 到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用 信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发 送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信 息,获得进程结果,然后调用执行继续进行。

通讯过程如下:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

NFS服务端口:2049(nfsd),但由于文件系统非常复杂,因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口由portmap(111)即RPC来分配

安装

软件包:nfs-utils,自需要此组件,核心包是由kernel包含在内的,Kernel支持:nfs.ko

使用yum或者rpm安装即可

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

另外,NFS还需要软件包:rpcbind(必须),tcp_wrappers支持。

配置使用

配置文件:/etc/exports,/etc/exports.d/*.exports

通过使用案例了解exports文件配置格式及参数含义(以下示例都是在CentOS7上):

  • 配置举例,对192.168.30.0/24网段主机共享nfsshare目录 [root@server 02:38:33 ~]#systemctl start nfs [root@server 02:39:10 ~]#mkdir /nfsshare [root@server 02:39:17 ~]#vim /etc/exports [root@server 02:40:57 ~]#cat /etc/exports /nfsshare 192.168.30.0/24 [root@server 02:41:14 ~]# 在客户端查看并挂载,但是发现不能写
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

这是因为在/etc/exports中只添加上面的内容 默认表示/nfsshare目录只读共享。 写需要添加如下参数:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

再到客户端测试:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

发现还是不能写文件,但是报错信息变了。这是因为如果客户端使用的是root账号访问,NFS服务端默认会将root账号映射成内置账号nfsnobody,但是nfsnobody是没有/nfsshare目录的写权限的! 给nfsnobody写权限,

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

或者也可以统一授予other用户写权限:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

再切换到客户端测试:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

使用其它普通账号来访问共享目录:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

服务端因为没有nfsuser这个用户,那么看到的文件属主是谁呢:

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

注意:如果服务端恰好有一个UID和GID恰好是1002的用户或组,那么这里就会显示其用户名和组名

  • exports文件格式详解 上面的示例简单的了解了NFS的使用。通过对exports文件的配置控制更为精细的共享权限和用法。 以下是exports文件完整格式:
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

参数值

内容说明

ro

只读权限(read-only),但最终能不能读还要看服务端文件系统是否授权

rw

读写权限(read-wirte)

all_squash

将远程访问的所有普通用户及所属组都压缩映射为匿名用户或用户组(nfsnobody)

no_all_squash

与all_squash取反,不压缩权限即用户和组(默认设置)

root_squash

将root用户及所属组都压缩映射为匿名用户或用户组(默认设置)

no_root_squash

与rootsquash取反,不压缩root用户

anonuid

将远程访问的所有用户都映射为并指定本地用户,可配合all_squash使用

anongid

将远程访问的所有用户组都映射为指定本地用户组账户,可配合all_squash使用

sync

将数据同步写入内存缓冲区与磁盘中,效率相对低,但可以保证数据的一致性

async

将数据先保存在内存缓冲区中,必要时才写入磁盘

关于可访问主机的指定格式:

指定ip地址的主机:192.168.0.200

指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0

指定域名的主机:nfs.allin.com

指定域中的所有主机:*.allin.com

所有主机:*

自动挂载问题

三种自动挂载方法:

  1. 开机自动挂载:/etc/fstab里添加 (不推荐)
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

这种方法不推荐,尝试过程中发现开机很慢,而且可能会因为网络服务原因导致挂载失败

  1. 开机自动挂载:在/etc/rc.d/rc.local文件中添加记录(不推荐) centos7中在/etc/rc.local中添加以下行: mount -t nfs -o nolock 192.168.30.23:/nfsshare /mnt 再给执行权限: chmod +x /etc/rc.d/rc.local
  2. 自动挂载autofs(推荐) 如果没有安装autofs,首先安装 yum install autofs 修改配置文件: /etc/auto.master
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

/etc/auto.nfs

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

在auto.nfs文件中,sharedir是在/opt/data下的”隐身目录”但是不需要去创建它。进入到/opt/data目录是,只需要再执行cd sharedir就会触发自动挂载

NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务
NFS服务理解_什么才是最好的服务

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168157.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档