NFS共享存储服务

目录

一、NFS概述

二、NFS工作原理

三、部署NFS服务

1.安装nfs-utils和rpcbind软件

2.设置共享目录

2.1配置服务端的共享目录

2.2客户端挂载共享目录

 3.客户端写入文件

4.指定写入共享目录文件属主属组


一、NFS概述

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS共享文件为明文传输,因此只能在内网中使用。

NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了.RPC服务(portmap 或rpcbind服务) 

RPC(Remote Procedure Call)即远程过程调用(端口为111)。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去。

二、NFS工作原理

在启动NFS SERVER之前,首先要启动RPC服务,否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。

特别注意:一般修改NFS主配置文件后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs  reload或exportfs –rv即可使修改的/etc/exports生效。具体往下看,后面有操作演示。


1)首先服务器端启动RPC服务,并开启111端口

2)服务器端启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
 

三、部署NFS服务

1.安装nfs-utils和rpcbind软件

rpm -q rpcbind nfs-utils     #查询是否安装
yum install -y nfs-utils rpcbind   #安装nfs和rpc的软件包
systemctl start rpcbind         #先开启rpc服务
systemctl start nfs-utils       #后开启nfs服务

2.设置共享目录

NFS服务的配置文件:/etc/exports

记录格式:共享的目录位置   客户机地址(权限选项)

客户机地址:可以为主机,网段,IP地址;可以通配符  *  和   ?。

常见的权限选项:

rw允许读写
ro只读
sync同步写入到内存与硬盘中
async将数据先保存在内存缓冲区中,必要时才写入磁盘
no_root_squash当客户机以root身份访问时赋予本地root权限
root_squash客户机用root用户访问该共享目录时,将root用户映射成匿名用户(默认选项)
all_squash所有访问用户都映射为匿名用户或用户组
subtree_check若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认)
no_subtree_check输出目录是一个子目录,nfs服务器不检查,这样可以提高效率
anonuid=xxx指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx指定nfs服务器/etc/group文件中匿名用户的GID

2.1配置服务端的共享目录

[root@7-2 opt]# vim /etc/exports         #配置共享目录
[root@7-2 opt]# systemctl restart nfs 
[root@7-2 opt]# showmount -e             #查看共享目录详情

2.2客户端挂载共享目录

临时挂载

[root@7-3 ~]# mkdir /data              #创建目录
[root@7-3 ~]# mount 192.168.88.30:/opt /data 
#将共享目录挂载到本地/data目录  

永久挂载 

umount -lf                   #强制解挂

vim /etc/fstab

共享目录      挂载目录     nfs   defaults,_netdev  0   0

 

 3.客户端写入文件

服务端共享目录允许客户端写入,但客户端root用户无法写入。

因为共享目录默认使用root_squash,客户端root被降权。

客户端想写入共享目录

##1.在服务端给共享目录提权

chmod   777   /opt

##2.直接设置共享目录no_root_squash

vim /etc/exports

/opt  192.168.88.20/24(rw,no_root_squash)

 

4.指定写入共享目录文件属主属组

vim  /etc/exports

/opt 192.168.88.20/24(rw,all_squash,anonuid=1001,anongid=1001)
all_squash:指定文件映射为匿名用户和组

anonuid:指定uid

anongid:指定gid

##修改共享目录后,如果重新开启nfs,客户端仍挂载共享目录,客户端容易卡死。

exportfs -arv      #重新发布共享目录,不会影响客户端使用

##客户端卡死,强行解挂

umount -lf  挂载目录

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值