NFS服务介绍和搭建

1 什么是NFS

简单来说nfs是网络文件系统他可以实现通过网络让不同主机之间共享文件

2 NFS的优缺点

优点

1.实现所有服务器文件数据一致
2.节省磁盘资源
3.节省带宽资源

缺点

1.容易发生单点故障。nfs server端挂掉,所有的机器都不能访问
2.高并发场景下nfs的效率和性能有限
3.nfs的数据传输都是明文的,对数据的完整性不做校验
4.多台机器挂载nfs,连接管理时比较麻烦

3 NFS的原理工作流程

NFS挂载原理图NFS工作流程图
1.启动rpc服务
2.启动nfs服务-------向rpc注册启动的端口
3.客户向rpc请求nfs服务
4.返回端口到客户端
5.拿着地址和端口请求传输数据

首先当NFS启动后,就会随机的使用一些端口(1024-65535),然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了

那可能就有小伙伴问了,为什么要向rpcbind注册端口信息???

我们前边说过当NFS启动后,就会随机的使用一些端口(1024-65535),由于nfs启动端口不确定性,所以我们没有办法去确定这个服务的端口号是多少,rpc服务就是用来管理在这些端口号的,rpc对外统一端口号111,客户端先向rpc服务请求nfs的端口号,然后在拿着这个端口号去访问nfs

4 NFS服务端部署过程

4.1 检查软件是否安装

默认是没有安装的
yum -y install rpcbind nfs-utils
检查
[root@nfs01 ~]# rpm -qa|egrep "rpcbind|nfs-utils"
rpcbind-0.2.0-48.el7.x86_64
nfs-utils-1.3.0-0.65.el7.x86_64

4.2 编写服务端的配置文件

[root@nfs01 ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 Jun  7  2013 /etc/exports
[root@nfs01 ~]# vim /etc/exports 
/date   172.16.1.0/24(rw,sync)
共享的目录   允许访问的网段(权限)
实例:/data 172.16.1.0/24(rw,sync)
权限描述
rw表示可读写权限
roread-only,只读;
sync文件同时写入硬盘和内存;
async文件暂存于内存,而不是直接写入磁盘 ;
no_root_squashNFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squashNFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid匿名用户的GID值。
如果修改uid和gid,客户端服务端两边的uid必须一致
/etc/exports                         NFS服务的主要配置文件
/usr/sbin/exportfs               	 NFS服务的管理命令
/usr/sbin/showmount           		 客户端的查看命令
/var/lib/nfs/etab                    记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab                    记录曾经登录过的客户端信息

4.3 企业案例

案例1
rw,sync

读写,并且数据同步写入到服务器的磁盘里

案例2
rw,sync,all_squash,anounid=2000,anongid=2000

读写,数据同步写入到磁盘,所有用户过来都匿名用户的权限,指定客户端的用户uid和gid

案例3
ro

只读,开发人员先查看生产服务器的日志的需求

4.4 创建共享目录并授权

[root@nfs01 ~]# mkdir /date
[root@nfs01 ~]# chown  nfsnobody:nfsnobody /date

4.5 启动服务

1.先启动rpcbind服务,在启动nfs服务

[root@nfs01 ~]# systemctl start rpcbind
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# ps -ef | egrep  "nfs|rpcbind"
rpc        7824      1  0 15:13 ?        00:00:00 /sbin/rpcbin -w
root       7873      2  0 15:13 ?        00:00:00 [nfsd4_callbacks]
root       7879      2  0 15:13 ?        00:00:00 [nfsd]
root       7880      2  0 15:13 ?        00:00:00 [nfsd]
root       7881      2  0 15:13 ?        00:00:00 [nfsd]
root       7882      2  0 15:13 ?        00:00:00 [nfsd]
root       7883      2  0 15:13 ?        00:00:00 [nfsd]
root       7884      2  0 15:13 ?        00:00:00 [nfsd]
root       7885      2  0 15:13 ?        00:00:00 [nfsd]
root       7886      2  0 15:13 ?        00:00:00 [nfsd]

4.6 检查服务启动

[root@nfs01 ~]# rpcinfo -p 127.0.0.1
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   4285  status
    100024    1   tcp  25908  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  26225  nlockmgr
    100021    3   udp  26225  nlockmgr
    100021    4   udp  26225  nlockmgr
    100021    1   tcp   8408  nlockmgr
    100021    3   tcp   8408  nlockmgr
100021    4   tcp   8408  nlockmgr
[root@nfs01 ~]# showmount -e
Export list for nfs01:
/date 172.16.1.0/24

5 客户端配置

5.1 软件安装

yum -y install rpcbind nfs-utils

5.2 检查共享目录并挂载

[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/date 172.16.1.0/24
挂载
[root@web01 ~]# mount.nfs 172.16.1.31:/date /mnt/
[root@web01 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           476M     0  476M   0% /dev
tmpfs              487M     0  487M   0% /dev/shm
tmpfs              487M  7.7M  479M   2% /run
tmpfs              487M     0  487M   0% /sys/fs/cgroup
/dev/sda3           19G  2.7G   16G  15% /
/dev/sda1          197M  109M   89M  56% /boot
tmpfs               98M     0   98M   0% /run/user/0
172.16.1.31:/date   19G  2.6G   16G  15% /mnt

5.3 挂载的参数

参数含义
fg与bg当客户机进行挂载的可以选择前台(fg)还是后台(bg),如果在前台执行mount会持续进行挂载,如果在后台执行,则mount会在后台持续进行多次挂载不会影响前台其他操作,网络不稳定建议bg
soft和hardsoft软挂载,持续几次就timeout后显示终止,Hard硬挂载,一直持续,直到卸载,此时无法mount和kill,通常与intr使用
intr当使用hard挂载的资源timeout后,如果指定intr参数,可以再timeout后终断掉
rsize与wsize一次读出(rsize)和写入(wsize)的区块大小,这个设置可以影响客户端与服务器端传输的缓冲区数量

proto 指定的协议udp或者tcp

实例:mount -t nfs -o fg,hard,intr  ip:/path
suid和nosuid:当挂载文件系统上有任何suid的程序时,只要使用nosuid就能取消suid的功能,任何根suid有关的都不能用
		rw和ro:可读可写(rw),只读(ro)
		dev和nodev:设置是否保留装置的特功能,一般不需要
		exrc和noexec:是否让文件具有可执行的权限
		user和nouser:是否允许用户进行文件的挂载与卸载功能,最好不要
		auto与noauto:这个是指mount -a时会不会被挂载

5.4 服务启动进程详解

rpc        7824      1  0 15:13 ?        00:00:00 /sbin/rpcbind -w
rpcuser    7841      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.statd    <---检查数据一致性
root       7843      2  0 15:13 ?        00:00:00 [rpciod]
root       7850      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.idmapd  <---用户压缩/映射
root       7868      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.mountd  <---权限管理验证
root       7873      2  0 15:13 ?        00:00:00 [nfsd4_callbacks]
root       7879      2  0 15:13 ?        00:00:00 [nfsd]      <---NFS主进程
root       7880      2  0 15:13 ?        00:00:00 [nfsd]      <---NFS主进程
root       7881      2  0 15:13 ?        00:00:00 [nfsd]
root       7882      2  0 15:13 ?        00:00:00 [nfsd]
root       7883      2  0 15:13 ?        00:00:00 [nfsd]
root       7884      2  0 15:13 ?        00:00:00 [nfsd]
root       7885      2  0 15:13 ?        00:00:00 [nfsd]
root       7886      2  0 15:13 ?        00:00:00 [nfsd]      <---NFS主进程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值