NFS介绍

本文介绍了NFS(网络文件系统)的基本概念、原理,包括RPC远程过程调用机制,并详细演示了NFS服务的配置过程,包括安装、权限设置和实际应用场景。重点展示了如何手动部署NFS服务器,配置共享目录和权限,以及客户端挂载与访问操作。
摘要由CSDN通过智能技术生成

1. NFS介绍

网络文件系统(network files system)简称NFS是一种基于TCP传输协议的文件共享系统。
NFS本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。只要用到NFS的地方都需要启动RPC服务,不论是NFS的服务端还是客户端。 NFS和RPC的关系:可以理解为NFS是一个网络文件系统(比喻为租房的房主),而RPC是负责信息的传输(中介),客户端(相当于租房的租客)
NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件,把服务器中的共享文件挂载到客户端中。
应用场景:

  • 为web服务器作为视屏图片资源的服务器。域用户家目录服务器。内容文件存储服务器。
  • 多个机器共享一台CDROM(光驱)或其他设备。这对于在多台机器中安装软件来说更加便宜与方便
  • 在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录
  • 不同客户端可在NFS上观看影视文件,节省本地空间;在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下

nfs特点

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能
nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
nfs服务只能基于IP进行认证

2.NFS原理

在这里插入图片描述当NFS服务器设置好一个共享目录,且设置好授权ip以及权限后,有访问权的客户机就可以将此目录挂载到自己某个挂载点;永久挂载点在/etc/fstab/下

既然NS的客户及服务器是基于TCP会话建立访问的,那么两者能够互访的前提是知道互相的IP和程序的端口号。
对于IP,服务器是设置对某一IP网段授权的;客户机是设置挂载某个网络目录的。所以他们IP互知。
对于端口号。NFS的端口号大概位于2049,但是因为文件系统非常复杂,往往的情况是端口号不固定(2049+的形式),以及NFS需要启动额外的端口,这些端口是1024以下的随机端口。客户机通过rpcbind知道服务器的端口号。

3. RPC( 远程过程调用)机制介绍

rpc程序会随着nfs启用而自动开启,默认端口号为固定的111。
当nfs启动后,会随机占用一些端口。
然后nfs会找rpcbind进行注册,记录这些端口信息。
rpc的固定端口是111,当rpc记录到nfs的端口号后会沟通客户机的111端口,并且通知nfs的端口。
当客户端知道了rpc通知的nfs端口号,就可以不依靠rpc进行工作了。
在这里插入图片描述

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

4.配置NFS服务

NFS安装:
客户端和服务端都需要安装

root@nfs ~]# yum -y install nfs-utils.x86_64
[root@nfs ~]# systemctl start rpcbind.service nfs-utils
服务端启动服务的顺序是先启动rpcbind这个服务,再启动nfs-server这个服务
使用showmount命令测试NFS服务器的输出目录状态
-a 显示指定NFS服务器的所有客户端主机以及其连接的目录
-d 显示指定的NFS服务器中已被客户端连接的所有输出目录
-e 显示指定的NFS服务器上所有输出的共享目录

客户端挂载时可以使用的特殊选项:
rsize:其值是从服务器读取的字节数。默认为1024.若使用比较高的值,如8192,可以提高传输速度
wsize:其值是写入到服务器的字节数。默认为1024.若使用比较高的值,如2192,可以提高传输速度

exports 维护exports文件导出的文件系统表的专用工具
-a 输出/etc/exports文件中所设置的所有目录
-r 重新读取/etc/exports文件中的设置,并使器立即生效,无需重启服务
-v 在输出目录时将目录显示到屏幕上

5. 实验

手动部署一个nfs服务器需求

  1. 开放/nfs/shared目录,供所有用户查阅资料
  2. 开放/nfs/upload目录192.168.164.0/24网段的数据上传目录,并将所有用户及所属的用户都映射为nfs-upload,其UID与GID均为300
//这里我们的nfs1为服务端,nfs2为客户端,服务端IP为192.168.164.132,客户端IP为192.168.164.133
[root@nfs1~]# mkdir -p /nfs/shared
[root@nfs1~]# cat /etc/exports
/nfs/shared    *(ro)

[root@nfs2~]# showmount -e 192.168.164.132
Export list for 192.168.164.132:
/nfs/shared *
//永久挂载
[root@nfs2~]# tail -1 /etc/fstab 
192.168.164.132:/nfs/shared /mnt nfs defaults,_netdev 0 0
[root@nfs2~]# mount -a
//然后到服务端的/nfs/shared目录下创建一个文件用来测试
[root@nfs1 shared]# touch 123
[root@nfs1 shared]# pwd
/nfs/shared
//发现权限是只读
[root@nfs2 mnt]# ls
123
[root@nfs2 mnt]# ll
总用量 0
-rw-r--r-- 1 root root 0 9月  26 09:42 123
[root@nfs1 nfs]# pwd
/nfs
[root@nfs1nfs]# mkdir upload
//创建用户uid为300,gid为300
[root@nfs1 nfs]# useradd -u 300 nfs-upload
[root@nfs1 nfs]# groupmod -g 300 nfs-upload
//更改/nfs/upload的属主和属组
[root@nfs1 nfs]# cat /etc/exports
/nfs/shared *(ro)
/nfs/upload 192.168.164.0/24   (rw,anonuid=300,anongid=300)
//修改nfs-upload用户对upload的权限
[root@nfs1 nfs]# setfacl -m u:nfs-upload:rwx /nfs/upload

//永久挂载
[root@nfs2 mnt]# tail -2 /etc/fstab 
192.168.164.132:/nfs/shared /mnt nfs defaults,_netdev 0 0
192.168.164.132:/nfs/upload /hello nfs defaults,_netdev 0 0
[root@nfs2 mnt]# mount -a

[root@nfs1 upload]# ll
总用量 0
-rw-r--r-- 1 nfs-upload nfs-upload 0 9月  26 09:50 1
[root@nfs1 upload]# pwd
/nfs/upload
//创建一个文件进行测试
[root@nfs2 hello]# touch 1
[root@nfs2 hello]# ll
总用量 0
-rw-r--r-- 1 300 300 0 9月  26 09:51 1
[root@nfs2 hello]# pwd
/hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值