NFS网络文件共享服务

##简介
网络文件系统(Network File System,缩写作 NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。
通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。

##NFS挂载原理

NFS服务传输数据的时候没有很特别固定的端口,由于没有特定的端口,客户端没办法连接服务,所以这时候就需要RPC服务(remote procedure call) 远程调用协议
RPC服务最主要的功能就是记录每个NFS功能所对应的的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接正确的NFS端口上去,达到实现数据传输交互数据的目的。
在数据传输过程中rpc还提供了几个辅助的服务,保证了数据传输中一定的安全可靠

  • rpc.mountd:认证; 主要用来对用户进行认证的
  • rpc.lockd:加锁; 多个客户端同时读写一个文件的时候,需要加锁。
  • rpc.statd:状态; 网络抖动可能造成断开,这个是保存状态用的

###数据传输具体过程

  1. 首先服务器端启动RPC服务,并开启111端口
  2. 启动NFS服务,并向RPC注册端口信息
  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

这里写图片描述

##安装
安装nfs相关的工具

yum install  nfs-utils -y

实验环境
系统:CentOS7
服务端IP:192.168.253.128
客户端IP:192.168.253.129
假设我们现在有一个目录/data/要共享出去
服务端:先修改配置文件/etc/exprots,添加一条记录

/data 192.168.253.0/24(rw,all_squash)  ##表示允许192.168.253.0网段内主机挂载,可读可写,并且所有用户都压缩成nfsnobody

创建共享的目录/data
mkdir -pv /data

启动方式

systemctl  start nfs

可以看一下是不是启动了111端口(rpc默认监听端口)
这里写图片描述

客户端:为了标准化,我们在客户端也创建个相同的目录来挂载

mkdir -pv /data

我们在客户端看一下是否128主机已经共享了
先下载一下nfs工具包

yum install -y nfs-utils

这里写图片描述
可以看出128主机共享出来了。现在我们挂载一下

mount -t nfs 192.168.253.128:/data /data

客户端,在/data/目录下创建一个文件。
这里写图片描述
这里说权限拒绝了,这是因为nfs里面的权限判定有2层,第一层是文件系统本身的权限,第二层是nfs允许的权限。这里我们在服务端创建/data的时候属主和属组都是root,而客户端的用户被压缩成nfsbody,所以会拒绝,在文件系统这一层就不被许可了。所以显示权限不够,解决办法,我们可以在服务端修改属主和属组为nfsnobody,
然后再创建试一下

chown -R nfsnobody.nfsnobody /data ##服务端执行

我们再客户端再次创建
这里写图片描述
我们再来服务端看看是否真的有这个文件
这里写图片描述

配置文件详解

/etc/exports这个文件默认是空的
编写的格式为
<共享目录> 客户端1(选项) [客户端2(选项) …]

  • 共享目录:NFS共享给客户机的目录

  • 客户端:网络中可以访问此目录的主机。多个客户端以空格分隔。

    • 类别:
      • single host:ipv4, ipv6, FQDN;
      • network:address/netmask, 支持长短格式的掩码;
      • wildcards:主机名通配,例如:*.magedu.com;
      • netgroups:NIS域内的主机组;@group_name;
      • anonymous:使用*通配所有主机;
  • 选项:设置目录的访问权限、用户映射等,多个选项以逗号分隔

    • 常用的选项如下
      • ro:共享目录只读;
      • rw:共享目录可读可写;
      • all_squash:所有访问用户都映射为匿名用户或用户组 ;
      • no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
      • root_squash(默认):将来访的root用户映射为匿名用户或用户组;
      • no_root_squash:来访的root用户保持root帐号权限;
      • anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
      • anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
      • secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
      • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
      • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
      • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
      • wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
      • no_wdelay:若有写操作则立即执行,应与sync配合使用;
      • subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
      • no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

##相关的命令
####exportfs NFS服务管理命令
常用选项

  • -a 全部挂载或卸载 /etc/exports中的内容
  • -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  • -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  • -v 在export的时候,将详细的信息输出到屏幕上
  • -o 指定参数

例如
所有用户均可访问对该目录但只有只读权限,且允许匿名访问
exportfs -o async *:/home/snail/share/gtk_1

showmount 查看NFS服务端信息

常见用法

showmount -e NFS_SERVER_IP #查看指定的nfs server上导出的所有文件系统; 
showmount -a #在nfs server上查看nfs服务的所有客户端列表;
rpcinfo 查看rpc信息

常用选项

  • -p [主机]
  • -b 性序号 版本号

####cat /var/lib/nfs/etab 查看NFS配置文件的完整参数设定文件

##注意点
第一:NFS权限认证有2层,服务端的本地文件系统权限是第一层,第二层是NFS服务允许你的权限,所以如果本地文件系统不允许你读写,就算NFS服务允许你读写也没有用
第二:举个例子。如果客户端有一个用户ice ,UID为500,服务端UID为500 也有一个用户cube,这时候如果我们挂载选项没有设置吧所有用户都压缩到nfsnobody,则客户端ice用户创建的文件,在服务端看来,这个用户的属组和属主都是cube,解决这个问题有2种方法。第一让他们都压缩成nfsnoby或者压缩成某个固定用户,第二,可以让两台主机用户进行同步,标准化,这样就可以保证都是同一个用户
第三:NFS挂载可以在/etc/fstab 文件中设置开机自动挂载

报错

#输入showmount,显示下面错误
clnt_create: RPC: Unknown host

解决:

systemctl restart rpcbind
systemctl restart nfs-server

参考的链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值