文件共享服务之NFS的配置与应用

简介:
NFS  service  是使不同的计算机之间能通过网络进行文件共享的一种网络协议,多用于UNIX/linux网络系统中。
由SUN公司于1984年开发,目的让不同的计算机,不同操作系统彼此可以共享文件。
NFS采用客户/服务器工作模式,在NFS服务器上将/nfs/public目录设置为输出目录(共享目录),其他的客户端就可以挂载到自己系统中的某个目录下,这个目录可以与服务器上的输出目录和其他客户机中的目录不相同。
NFS协议本身没有提供数据传输的功能,必须借助于远程过程调用(RPC)协议来实现数据的传输。
三个系统守护进程:
rpc.nfsd :基本的NFS守护进程,主要功能管理客户端能否登入服务器。
rpc.mountd: RPC安装守护进程,主要管理NFS的文件系统。当客户端顺利通过rpc.nfsd登录NFS服务器之后,在使用NFS服务器所提供的文件前,还必须通过文件使用权限的验证,rpc.mountd会读取NFS的配置文件/etc/exports来对比客户端的权限
portmap:进行端口映射,当客户端尝试连接并使用RPC服务器提供的服务时,portmap会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过该端口向服务器请求服务。
其他相关进程(线程):
rpc.statd:实现文件加锁
lockd : 内核线程,实现文件锁的一个线程
rpc.quotad:结合真正文件系统上的文件磁盘配额信息来实现当某用户基于网络访问的时候也能实现磁盘配额的功能。
安装包:nfs-util(仅仅是一个工具组件)
启动脚本:/etc/init.d/nfs  (nfsd,rcp.mountd,rpc.quotad)
          /etc/init.d/nfslock (rpc.startd,lockd)
监听端口:2049/tcp  2049/udp (nfsd)
       半随机端口(通过portmap 111/tcp  111/udp)   
配置文件:/etc/exports  /etc/sysconfig/nfs (提供额外功能)
检查NFS运行是否正常:
[root@station39 ~]# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    666  status
    100024    1   tcp    669  status
export文件格式
<输出目录>  [客户端1 (选项1,选项2,……)]  [客户端2(选项1,选项2,……)]
PS:输出目录和客户端之间,客户端和客户端之间都使用空格分隔,但是客户端和选项之间不能有空格。
客户端列表:
单台主机:FQDN,或IP 地址
网络组 :@group
通配符:* ? .  Example:*.example.com
IP 地址: Example:192.168.0.1/255.255.255.0  192.168.0.1/24
常用选项:
ro   只读
rw  读写
async 异步写入
sync 同步写入
root_squash  将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash 不将root用户及所属用户组都映射为匿名用户或用户组
all_squash 将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(一般为nfsnobody)
no_all_squash 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(默认设置)
anonuid=xxx  将远程访问的所有用户都映射为匿名用户,并指定该匿名用户账户为本地用户账号(UID=xxx)
anongid=xxx  将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账号(GID=xxx)
Example:编辑/etc/exports 文件,添加一个共享目录
/share 192.168.0.1/24(ro)
[root@station39 ~]# service nfs start
查看某一服务器是否有共享目录:
[root@station39 share]# showmount -e 192.168.0.39
Export list for 192.168.0.39:
/share 192.168.0.1/24
客户端挂载:
mount -t  nfs 192.168.0.39:/share  /nfs
PS :NFS根据ID号来确认用户身份,NFS协议的致命缺陷。
exportfs 命令: 修改/etc/exports文件内容后,不需重启NFS服务,直接使修改生效。
-a 输出在/etc/exports文件中所设置的所有目录;
-r  重新读取/etc/exports文件中的设置,并使设置立即生效,不需重启NFS服务
一般 -ar 结合使用。
-u 停止输出某一目录
-v  在输出目录时将目录显示到屏幕上
showmount
-e 客户端  显示某一服务器所有的共享目录
-a 服务器端 显示自己的共享文件系统里边哪一个文件系统正在被访问
[root@station39 ~]# showmount -a
All mount points on station39.example.com:
192.168.0.127: /share
-d 服务器端  显示指定的NFS服务器中哪些共享目录正在被客户端连接访问。
[root@station39 ~]# showmount -d
Directories on station39.example.com:
/share
客户端挂载方式:
/etc/fstab  开机自动挂载
192.168.0.23/:share        /nfs            nfs      defaults   0  0  
/etc/init.d/netfs  (脚本) 可以开机挂载任意设置为开机自动挂在的文件系统
autofs 可以根据需要自动挂载或卸载
手动挂载
NFS工作流程:
1 客户端向服务器端发起连接请求,服务器端通过portmap服务来找到rpc.mounted 所使用的端口并返回给客户端;
2 rpc.mountd服务根据来源地址或者主机名称验证客户端是否允许来访问共享目录。
3 如果允许,rpc.mountd给客户端返回一个文件句柄;
4 客户端使用rpc.mountd返回的文件句柄通过nfsd进程提供的基于TCP或UDP 2049端口的服务来访问或者改变文件系统;
5 lockd 和 rpc.statd服务管理文件锁。
如果要使用固定端口,可以编辑/etc/sysconfig/nfs文件
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"
MOUNTD_PORT="4002"
STATD_PORT="4003"
RQUOTAD_PORT="4005"
STATD_OUTGOING_PORT="4006"









本文转自 490999122 51CTO博客,原文链接:http://blog.51cto.com/lyp0909/535746,如需转载请自行联系原作者
目录
相关文章
|
25天前
|
Ubuntu
ubuntu搭建NFS服务 磁盘共享 nfs 搭建
ubuntu搭建NFS服务 磁盘共享 nfs 搭建
21 2
|
2月前
|
存储 网络协议 Linux
NFS(Network File System 网络文件服务)
NFS(Network File System 网络文件服务)
|
2月前
|
存储 Kubernetes 应用服务中间件
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
237 0
|
2月前
|
Unix
AIX 配置NFS记要
AIX 配置NFS记要
18 0
|
2月前
|
存储 Kubernetes 数据安全/隐私保护
|
2月前
|
存储 Linux 块存储
DRBD+Heratbeat+NFS高可用文件共享存储
DRBD+Heratbeat+NFS高可用文件共享存储
|
2月前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
58 0
|
2月前
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
61 0
|
2月前
|
Ubuntu 网络协议 Unix
【Linux】新唐NUC977挂载NFS实现网络文件传输
【Linux】新唐NUC977挂载NFS实现网络文件传输
|
2月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
197 0