nfs文件管理系统

简介

特点

  • NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
  • nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能
  • nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
  • nfs服务只能基于IP进行认证
  • NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。
  • NFS一般用来存储共享视频,图片等静态数据
     

应用场景

nfs有很多实际应用场景,以下是一些常用的场景:

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


nfs挂载原理

nfs至少有两个主要部分:

  • 一台nfs服务器
  • 若干台客户机

nfs工作机制

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

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

注意:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

 

  • 客户端发起查看file信息的指令(ls file)给内核,内核通过NFS模块得知此文件并不是本地文件系统中的文件,而是在远程NFS主机上的一个文件
  • 客户端主机的内核通过RPC协议把查看file信息的指令(系统调用)封装成rpc请求通过TCP的111端口发送给NFS服务端主机的portmapper
  • NFS服务端主机的portmapper(RPC服务进程)告诉客户端说NFS服务端的mountd服务在某某端口上,你去找它验证

部署nfs

安装

//两台主机都要装
[root@node1 ~]#  yum -y install nfs-utils

[root@node2 ~]#  yum -y install nfs-utils

在服务端设置开机自启

[root@node1 ~]# systemctl enable --now nfs-server

 

创建共享目录,编辑配置文件

[root@node1 ~]# ls /
bin   dev  home  lib64  mnt  proc  run   scripts  sys  usr  yang
boot  etc  lib   media  opt  root  sbin  srv      tmp  var
[root@node1 ~]# cat /etc/exports
/yang

配置文件说明:
格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)

如上,共享目录为/public , 允许访问的客户端为192.168.58.0/24网络用户,权限为只读。

请注意,NFS客户端地址与权限之间没有空格。

NFS输出保护需要用到kerberos加密(none,sys,krb5,krb5i,krb5p),格式sec=XXX

none:以匿名身份访问,如果要允许写操作,要映射到nfsnobody用户,同时布尔值开关要打开,setsebool nfsd_anon_write 1

sys:文件的访问是基于标准的文件访问,如果没有指定,默认就是sys, 信任任何发送过来用户名

krb5:客户端必须提供标识,客户端的表示也必须是krb5,基于域环境的认证

krb5i:在krb5的基础上做了加密的操作,对用户的密码做了加密,但是传输的数据没有加密

krb5p:所有的数据都加密
用于配置NFS服务程序配置文件的参数:

参数作用
ro只读
rw读写
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

查看

[root@node1 ~]# showmount -e 192.168.75.142
Export list for 192.168.72.131:
/yang *

实例


1.手动搭建一个nfs服务器
开放/nfs/shared目录,供所有用户查阅资料
开放/nfs/upload目录为192.168.75.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300

安装

[root@node1 ~]# yum install -y nfs-utils
[root@node1 ~]# systemctl enable --now nfs-server 

编辑配置文件和共享目录

 

[root@node1 ~]# cat /etc/exports
/nfs/shared *(ro,sync)

客户端安装nfs

 

[root@node2 ~]# yum install -y nfs-utils 
[root@node2 ~]# systemctl enable --now nfs-server 

在客户端查看共享目录

 

[root@node2 ~]# showmount -e 192.168.75.142
Export list for 192.168.72.131:
/nfs/shared *

创建挂载目录挂载

 

2.开放/nfs/upload目录为172.16.12.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300
创建共享目录

[root@node1 ~]# mkdir /nfs/upload
[root@node1 ~]# useradd -r -u 300 nfs-upload
[root@node1 ~]# vim /etc/exports
[root@node1 ~]# tail -1 /etc/exports
/nfs/upload 192.168.75.0/24(rw,anonuid=300,anongid=300,sync)
[root@node1 ~]# 
[root@node1 ~]# exportfs -r

在客户端查看共享目录

[root@node1 ~]# showmount -e 192.168.75.142
Export list for 192.168.75.142:
/nfs/shared *
/nfs/upload 192.168.75.0/24


创建挂载点目录挂载

[root@node1 ~]# mkdir ang
[root@node1 ~]# mount -t nfs 192.168.75.143:/nfs/upload ang

在服务器端设置属主和属组

[root@node1 ~]# chown nfs-upload.nfs-upload /nfs/upload
[root@node1 ~]# ll /nfs/
总用量 0
drwxr-xr-x. 2 root       root       6 9月  25 02:05 shared
drwxr-xr-x. 2 nfs-upload nfs-upload 6 9月  25 02:11 upload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值