概述
NFS(NetworkFileSystem)即网络文件系统,是Linux/Unix支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。是在类Unix系统间实现磁盘文件共享的一种方法。一般用来存储共享图片、视频等静态数据。
工作原理
NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口,之后利用这些端口进行数据传输。
客户端与服务端通讯过程过程:
首先RPC启运后要开启111端口,再启动NFS服务时会随机生成一些端口,RPC将记录NFS的这些端口号,在有客户端访问NFS服务器时,RPC将记录的端口号推送给客户端,客户端然后用得到的端口号向NSF服务器进行文件的传输
安装NFS及RPC(默认已安装)
yum -y insatll rpcbind
yum -y install nfs-utils
设置开机自启
systemctl enable rpcbind
systemctl enable nfs-server
启动NSF,先启动RPC服务
systemctl start rpcbind
systemctl start nfs-server
配置
NFS服务的配置文件是:/etc/exports 如果没有则自己创建
文件内容格式: 共享目录 客户端(访问权限,用户映射,其他) 客户端2 (访问权限,用户映射,其他)
a 共享目录:是指NFS服务器共享给客户机使用的目录
b 客户端:客户端是指网络中可以访问这个NFS共享目录的计算机
客户端常用的指定方式:
指定IP地址的主机:192.168.1.100
指定子网中的所有主机:192.168.1.0 或192.168.1.*
指定域名的主机:www.aaa.com
指定域中的所有主机:*.aaa.com
所有主机:*
设置输出目录的访问权限、用户映射等
访问权限选项:
只读:ro 读写:rw
用户映射选项:
root_squash:将root用户的访问映射为匿名(nfsnobody) 用户uid和gid;(默认生效)
no_root_squash:保留管理员权限,以服务器管理员的权限管理
all_squash: 将远程访问的用户及所属组都映射为指定的uid、gid的匿名用户
anonuid=xxx: 将远程访问的所有用户都指定为uid的匿名用户
anongid=xxx: 将远程访问的所有用户都指定为gid的匿名组账户
其它选项:
sync: 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一至性(同步)
async:将数据先保存在内存缓冲区中,必要时才写入磁盘(异步)
相关命令
重新读取配置文件
service nsf reload
查看共享资源
rpcinfo -p 192.168.85.20 查看在服务器192.168.85.20中,rpc服务管理了哪些端口及程序
showmount -e 本机IP NFS服务器端查看有哪些共享的资源
showmount -e 192.168.85.20 客户端查看NFS服务器192.168.85.20有哪些共享资源
卸载:
1、卸载客户端的挂载目录
umount 挂载点
2、停止服务器端的共享
exportfs -au
挂载:
自动挂载
#vi /etc/fstab
格式:<server>:</remote/export> </local/directory> nfs <options> 0 0
# 192.168.85.22:/testnfs /testnfs nfs defaults,vers=3 0 0
#mount -a
exportfs
格式:exportfs [-aruv]
-a 全部挂载或卸载 /etc/export 中的内容
-r 重新读取/etc/export中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸装单一目录(和-a一起使用为卸载所有/etc/export文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上
例:
#exportfs -au 卸载所有共享目录
#exportfs -rav 重新共享所有目录并输出详细信息
配置实例,NFS ip为192.168.85.22为例
将NFS服务器的/testnfs共享给192.168.85.33客户端 rw权限
- 创建testnfs目录
# mkdir /testnfs
#chmod o+w /testnfs - b、修改exports文件
# vi /etc/exports
#将根目录下的testnsf共享给ip为192.168.85.33的主机可读写访问
配置1:/testnfs 192.168.85.33(rw) 默认为root_squash
配置2:/testnfs 192.168.85.33(rw,no_root_squash) 操作文件时,都以root的身份来操作
配置3:/testnfs 192.168.85.33(rw,all_squash,anonuid=1000,anongid=1000) 所有客户端操作文件时,都以用户id为1000、组id为1000的身份来操作,服务器事先指定一个id号来创建用户,useradd -u 1000 - c 、重启nfs服务
#systemctl restart nfs-server 或 service nfs reload - d、在客户端,创建一个目录,并挂nfs共享目录
#mkdir /testnfs
#mount 192.168.85.22:/testnfs -t nfs -o vers=3
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/71241.html