一、NFS基础理论

1.1简介

Linux和Windows之间可以通过Samba共享文件,Linux和Linux之间进行资源共享就要用到网络文件系统(Network File System,NFS),它最早是NUIX操作系统之间共享文件和操作系统的一种方法,后来被Linux操作系统完美继承。NFS与Windows下的“网上邻居”十分相似,它允许用户连接到一个共享位置,然后像对待本地硬盘一样操作。

NFS最早是由Sun公司与1984年开发出来的,其目的就是让不同计算机,不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数UNIX/Linux系统的支持,而且被IETE(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准。

1.2工作流程

常规的NFS服务是按照如下流程进行的:

  1. NFS启动时,自动选择工作端口小于1024的1011端口,并向RPC(工作于111端口)汇报,RPC记录在案。
  2. 客户端需要NFS提供服务时,首先向111端口的RPC查询NFS工作在哪个端口。
  3. RPC回答客户端,它工作在1011端口。
  4. 于是,客户端直接访问NFS服务器的1011端口,请求服务。
  5. NFS服务经过权限认证,允许客户端访问自己的数据。

(因为NFS需要向RPC服务器注册,所以RPC服务必须优先NFS服务启用,并且RPC服务重新启动后,需要重新启动NFS服务,让它重新想RPC服务注册,这样NFS服务才能正常工作)

1.3优点

  1. 本地工作站可以使用更少的磁盘空间,因为通常的数据可以存放在一台机器上,而且可以通过网络访问到。
  2. 用户不必在网络上的每个机器中都设一个home目录,home目录可以被放在NFS服务器上,并且在网络上处处可用。
  3. 诸如CD-ROM、DVD-ROM之类的储存设备可以在网络上被其他机器使用。这可以减少整个网络上可移动介质设备的数量。

二、项目实训

2.1目的

配置NFS服务,使得文件共享,并且掌握相关权限问题

2.2准备工作

Linux服务器RHEL7.4(IP:192.168.1.2/24)

Linux客户端RHEL7.4(IP:192.168.1.3/24)

所有主机在同一局域网内,并保证网络连通性

2.3实操

2.3.1安装NFS服务

NFS服务所需要的套件:

1、Rpcbind

NFS要正常运行,就必须借助RPC服务的帮助,做好端口映射工作,而这个工作就是由rpcbind负责的。

2、nfs-utils

nfs-utils是提供rpc.nfsd和rpc.mounted这两个守护进程与其他相关文档、执行文件的套件。这是NFS服务的主要套件。

检测是否安装了NFS相关软件

server操作:

client操作:

RHEL 7中,在默认情况下,NFS服务会自动安装到计算机中

如果没有安装可以使用yum命令进行安装

2.3.2启动NFS服务

server操作:

client操作:

2.3.3防火墙放行NFS服务

要通过两个服务:nfs、rpc-bind、和一个端口号:20048/udp

server操作:

client操作:

2.3.4在server服务器上配置NFS服务
2.3.4.1先在服务器创建两个用来共享的目录:/tmp1/tmp2。并设置他们权限为777

在/tmp1里创建一个名为one的文件,写入“hello!”

在/tmp2里创建一个名为two的文件,写入“hi!”

2.3.4.2NFS的配置文件一般都要手动创建:

vim /etc/exports),进入插入模式编辑(i)

保存退出后重新加载NFS服务,使配置文件生效

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

例如:

这个文件的配置很简单,每一行最前面是要共享出来的目录,然后这个目录可以按照不同权限共享给不同主机

注意:

1、/tmp2分别共享给3个不同的主机或域。

2、主机后面以小括号设置权限参数,若参数不止一个则以逗号分开,而且主机名与小括号是连在一起的。

3、在设置/etc/exports文件时需要注意空格的使用,因为在此配置文件中,除了分开共享目录和共享主机以及分隔多台共享主机外,在其余的情形下都不可以使用空格。

用于配置NFS服务程序配置文件的参数:

参数

作用

ro

只读

rw

读写

root_squash

当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户

no_root_squash

当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员

all_squash

无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户

sync

同时将数据写入到内存与硬盘中,保证不丢失数据

async

优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

2.3.4.3 在client客户端挂载NFS文件系统

识别要访问的远程共享:

showmount  -e  NFS服务器IP

showmount命令的用法:

参数

作用

-e

显示服务器上所有的输出目录(共享资源)

-a

显示本机挂载的文件资源的情况NFS资源的使用情况

-d

只显示被客户端使用的输出目录信息

-v

显示版本号

在客户端加载NFS服务器共享目录:

首先在客户端创建两个本地目录,用来加载NFS服务器上的输出目录

再使用mount命令对服务器两个共享目录进行挂载

mount  -t  nfs  服务器地址:输出目录  挂载目录 (如果要卸载可以使用“umount /mnt/tmp1”)

 

检查挂载情况(df -h) 

 

2.3.4.4测试:

        跳转到客户端的/mnt/tmp1目录下,查看文件one

在/tmp1里创建一个文件1 

由此可见:/tmp1是只读的,对应前面设置的权限(ro

         跳转到客户端的/mnt/tmp2目录下,查看文件two

在/tmp2里创建一个文件2 

由此可见:/tmp2是可读可写,对应前面设置的权限(rw) 

 2.3.5拓展

在上文2.3.4.3讲到的挂载操作每次关机开机后都要进行挂在一次,比较繁琐,推荐以下方法:

在客户端进行永久自动挂载NFS服务器

RHEL 7 下的自动加载文件系统都是在/etc/fstab中定义的,NFS文件系统也支持自动加载

编辑fstab,vim /etc/fstab

添加如下两行

保存退出,使设置生效

保存退出后使用mount -a 重新挂载

然后可以使用df -h再次进行查看是否成功挂载 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐