一、NFS简介

NFS就是Network FileSystem的缩写,最早之前是由Sun公司所发展出来的。他最大的功能就是可以透过网络,让不同的机器、不同的操作系统可以彼此分享个别档案(share file)。这个NFS Server可以让你的PC来讲网络远程的NFS主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分割操一样。说白了,就相当于Windows下面的文件共享一样.....

NFS使用的协议是RPC(远程过程调用)协议来协助NFS本身的运作! NFS本省的服务并没有提供数据传输的协议,但是NFS却能够让我们进行档案的分享,这其中的原因就是NFS使用到一些其它相关的传输协议!而这些传输的协议,就是使用到这个所谓的RPC的功能!这也就是说,NFS本身就是使用RPC的一个程序了,NFS可以视作一个RPC server,NFS管理主要管理分享出来的目录,而至于数据的传输,就直接丢给RPC协议来运作!

NFS Server总过需要启动至少两个进程(rpc.nfsd和rpc.mountd),一个管理Client是否可以登入的问题,另一个管理登入主机后的用户是否能够使用的档案权限!nfsd这个进程主要在管理客户端是否能够登入主机的权限,mountd这个进程则在管理NFS的档案系统,当客户端顺利通过nfsd后,登入到主机之后,在他使用可以NFS Server分享的档案之前,还会经过档案使用权限的认证程序!只有通过这一关之后,Client才能够使用NFS服务所分享的档案。

当客户端尝试使用RPC Server所提供的服务时,由于Client需要取得一个可以连接的端口(port)才能够使用RPC Server所提供的服务,因此,客户端首先去请求rpcbind(旧版本是portmp),然后,rpcbind将自己管理的端口映射告知客户端,好让客户端可以连接上服务,因此:启动NFS之前,一定要先启动rpcbind

总结一下安装NFS都需要什么,首先需要rpcbind,将端口告知客户端。其次需要nfs-utils,提供nfsd进程和mountd这两个NFS进程。

二、安装环境

这里我们提供两台主机,一台用来安装NFS服务器,一台用来挂载服务器分享的目录,操作系统全部采用的是centOS6.4,下载地址我的博文《Hadoop完全分布式模式搭建》中有,如果,对Hadoop感兴趣的话,可以看看:http://blog.sina.com.cn/s/blog_c09822a40102v9ja.html

主机名                                               IP地址                                        分享目录/挂载目录

centosDateNode3                      192.168.10.71                                    /home/roboson

centosNameNode                      192.168.10.66                                    /home/roboson1

三、大致流程

<1>.安装NFS Server

<2>.启动服务

<3>.设定分享的目录

<4>.分享目录的范围详解(给哪些客户端分享)

<5>.分享目录的权限详解(客户端能对分享的目录进行哪些操作)

<6>.服务器分享目录

<7>.服务器对分享目录的操作(卸掉,修改后重新分享使生效等)

<8>.服务器和客户端如何查看分享的目录

<9>.客户端挂载目录

<10>.客户端卸载目录

<11>.NFS Server如何设置开机自动启动

<12>.客户端如何设置开机自动挂载分享目录

四、开工

<1>.安装NFS Server

首先查看NFS Server是否已经安装,其实在默认情况下,NFS Server已经安装好了,下面查看是否安装了NFS Server,打开命令行,输入以下指令:

rpm -qa|grep nfs #前面的博文中这个指令用过好多次了

前面也说过,在运行NFS Server之前,一定要先启动rpcbind,所以,用相同的方法,查看是否安装

了rpcbind,在命令行下输入以下指令:

rpm -qa|grep rpcbind

如上图所示,说明系统已经安装了NFS Server和rpcbind,如果没有安装,也无所谓,centos操作系统中自带有安装包,打开系统挂载的地方,然后,进行安装!打开命令行,输入以下指令:

cd /media/CentOS_6.4_Final/Packages          #切换到挂载光驱的位置           

ls rpcbind*                                  #列出所有以rpcbind开头的包  

rpm -ivh  rpcbind-0.2.0-11.el6.x86_64.rpm    #安装列出的软件包(一个) 

如上图所示,安装成功,那么下来,就是安装NFS Service,同上面一样,先进入软件安装包中,然后,在命令行中输入以下指令:

cd /media/CentOS_6.4_Final/Packages           #切换到挂载光驱的位置           

ls nfs*                                       #列出所有以rpcbind开头的包  

rpm -ivh  nfs-utils-1.2.-.el6.x86_64.rpm   #安装列出的软件包(一个) 

<2>.启动服务

在安装完成后,我们就需要启动NFS Server所需要的进程,查看一下服务的状态,看是否启动,在命令行下输入以下指令:

service nfs status                                  #查看NFS Server的状态          

service rpcbind status                              #查看rpcbind的状态                

如上图所示,所需要的进程都已经开启!接下来nfs就可以设定分享目录了。

<3>.设定分享的目录

Linux把要分享的目录的路径都放在一个文件中,并且有分享的客户端范围,有分享的权限,这个目录

在/etc/exports,如果没有这个文件,可以自己手动建一个,记录分享目录的格式:

【分享的目录】【单个或多个主机名称】或【IP范围】(权限)

/home/roboson  *(rw)

如上所示,分享的目录是/home/roboson,对所有人开放  ,权限是可读可写!

好,分享的范围都有哪些定义法,权限都有哪些呢?

<4>.分享目录的范围详解(给哪些客户端分享)

(1).指定ip地址的主机:192.168.10.71

只允许IP地址为192.168.10.71的主机可以登录到此共享目录

(2).指定子网中的所有主机:192.168.0.0/24或者192.168.0.0/255.255.255.0

只允许192.168.10.1~192.168.10.254这个网段内的IP登录到此共享目录

(3).指定域名的主机:centosNameNode.roboson.cn

只允许主机名为centosNameNode.roboson.cn的可以登录到此共享目录

(4).指定域内的所有主机:*.roboson.cn

只允许域名为.roboson.cn的可以登录到此共享目录

(5).指定所有的主机:*

<5>.分享目录的权限详解(客户端能对分享的目录进行哪些操作)

(1).rw:可读可写的权限

(2).ro:只读的权限

(3).no_root_squash:登入分享目录的使用者如果是root的话,那么对于这个分享的目录来说,他就具有root的权限!这一项不安全,不建议使用!

(4).root_squash:登入分享目录的使用者如果是root的话,那么这个使用者的权限将被压缩成匿名使用者,通常他的UID与GID都会变成nobody那个系统账号的身份。

(5).all_squash:不论登入分享目录的使用者是什么身份,都会被压缩成匿名使用者。

(6).anonuid:可以自行设定使用者UID的值!也就是使用者登录到分享目录中,身份成为UID这个使用者,必须在/etc/passwd中存在这个UID。

(7).anongid:可以自行设定使用者GID的值!也就是使用者登录到分享目录中,身份成为GID这个使用者,必须在/etc/group中存在这个GID。

(8).sync:数据同步写入到内存与硬盘当中

(9).async:数据会先暂存于内存当中,而非直接写入硬盘

<6>.服务器分享目录

将centosDateNode3上的/home/roboson目录分享出去,对centosNameNode.roboson.cn主机开放,并且具有读写权限,在命令行中输入以下指令:

注意:centosDateNode3必须要能够解析centosNameNode.roboson.cn这台主机,要么在DNS务器上有记录,要么在/etc/hosts文件下有记录

hosts文件域名映射IP地址的添加,在我的博文《Hadoop完全分布式模式搭建》中有,如果,对Hadoop感兴趣的话,可以看看:

http://blog.sina.com.cn/s/blog_c09822a40102v9ja.html

<7>.服务器对分享目录的操作(卸掉,修改后重新分享使生效等)

修改好了/etc/exports文件 后,通过以下指令可以让分享目录生效,不需要重新启动nfsd等守护进程只需要使用exportfs重新扫描一次/etc/exports文件,并且重新加载一次就可以了,以下是它的用法:

exportfs                                                                                                    

<8>.服务器和客户端如何查看分享的目录

通过showmount可以查看共享的目录,showmount语法如下:

服务器端查看自己分享的目录:

showmount    -e     

客户端查看自己分享的目录:

showmount    -e  centosDateNode3.roboson.cn

注意:如果出现上图Unknown host说明识别不了主机,所以,hosts或者DNS服务器没有记录你的主机与IP地址的映射关系。前面已经提到过了!

<9>.客户端挂载目录

前面的安装环境中,说过,将分享 的目录挂载到/home/roboson1下,输入:

mkdir    /home/roboson1                 #创建要挂载的目录
mount -t nfs centosDateNode3.roboson.cn:/home/roboson /home/roboson1
cd /home/roboson1 #看是否能够登录到共享目录

注意:如果出现上图权限不够,因为centosDateNode3.roboson.cn:/home/roboson本身也有权限(drwx-xxx-xxx),不允许组内其他成员和组外的成员访问,只允许自己访问,所以要修改权限。

然后,再进入到挂载的目录,并且新建一个文件夹,看有没有读写权限:

如图所示,说明挂载共享目录成功,并且拥有读写权限(rw)

<10>.客户端卸载目录

客户端卸载共享目录是通过umount实现的

umount /home/roboson1

<11>.NFS Server如何设置开机自动启动

说到这里,先说说Linux的开机启动模式,Linux的开机启动模式有多种,那么如果要设置开机启动项,就得说明,哪一种开机启动模式下,我的服务要自动启动!先看看Linux都有哪几种启动模式,在命令行输入以下指令:

cat /etc/inittab                #这个文件下有Linux的开机启动模式

从上图可以看出,总共有七种开机模式:

0:表示关机

1:表示单用户模式,可以通过这个模式修改root的密码

2:无网络连接的多用户命令行模式

3:有网络连接的多用户命令行模式

4:不可用

5:图形界面

6:重启

看见下面有一句话:id:5:initdefault:这句话的主要作用就是修改默认的启动模式,如果把5改为3, 那么就进入命令行模式!同理,修改开机启动项,也需要看给哪种模式设置开机自动启动,是用多用户命令行登录后,进程自动启动,还是以图形界面登录的时候,进程自动启动等等.....

chkconfig --list rpcbind         #查看rpcbind的开机启动情况
chkconfig --list nfs #查看nfs的开机启动

如图所示,一般我们用的要么是3,要么是5,所以,只需要设置3、5开机自动启动就可以了

<12>.客户端如何设置开机自动挂载分享目录

每次客户端重启的话,都需要重新挂载分享目录,挺麻烦的,最好能够设置开机自动挂载,Linux下可以通过/etc/fstab文件来记录,格式如下:

共享目录          本地挂载目录        nfs  选项  0 0

五、关机或结束时的注意事项

由于NFS使用的这个RPC在client端连上主机时,那么主机在想要关机的时候,可能关不了,如果,主机上面还有Client在联机,那么最好关机之前,关掉portmap与nfs这两个东西

centOS下NFS服务器的安装配置详解的更多相关文章

  1. CentOS下内核TCP参数优化配置详解

    主动关闭的一方在发送最后一个ACK后就会进入TIME_WAIT状态,并停留2MSL(Max Segment LifeTime)时间,这个是TCP/IP必不可少的. TCP/IP的设计者如此设计,主要原 ...

  2. CentOS6.5下VNC Server远程桌面配置详解

    参考文献: (总结)CentOS Linux下VNC Server远程桌面配置详解 远程桌面连接工具VNC——license Key 我的下载地址为 太平洋下载 VNC连接黑屏的问题 centos 6 ...

  3. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  4. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  5. ubuntu14.04 server ftp 服务安装配置详解

    ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...

  6. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  7. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  8. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  9. JDK10安装配置详解

    JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包:        地址:http://www.oracle.com/technetwork/java/javase/dow ...

随机推荐

  1. UI5-文档-4.13-Margins and Paddings

    我们的应用程序内容仍然粘在信箱的角落里.要微调布局,可以向上一步添加的控件添加空白和填充. 我们将使用SAPUI5提供的标准类,而不是手工向控件添加CSS.这些类负责一致的分级步骤.从左到右的支持和响 ...

  2. vue-cli 上手

    1.cnpm install --global vue-cli 安装脚手架 2.vue init webpack baoge 创建 3.选择配置项 Project name (baoge): ---- ...

  3. .net数据库连接防注入参数查询 命令执行 读取 备份 导出导入转化XML格式

    ADO.NET是一组类库,让我们通过程序的方式访问数据库.SYSTEM.DATA这个类提供了统一的接口访问Oracle MSSQL Access.像SYSTEM.IO类操作文件一样. **connec ...

  4. js中常用的事件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Numpy数据存取

    Numpy数据存取 numpy提供了便捷的内部文件存取,将数据存为np专用的npy(二进制格式)或npz(压缩打包格式)格式 npy格式以二进制存储数据的,在二进制文件第一行以文本形式保存了数据的元信 ...

  6. ubuntu搭建ftp服务器

    (1).首先用命令检查是否安装了vsftpd vsftpd -version  如果未安装用一下命令安装 sudo apt-get install vsftpd 安装完成后,再次输入vsftpd -v ...

  7. SSH框架整合的其它方式

    --------------------siwuxie095 SSH 框架整合的其它方式 1.主要是整合 Spring 框架和 Hibernate 框架时,可以不写 Hibernate 核心配置文件: ...

  8. 模块常用snippet

    压缩,文件操作,数据库,md5,json, 压缩 import os, sys, time import zipfile # 解压 filename = 'callofdutyblackopszomb ...

  9. TZOJ 5280 搜索引擎(模拟字符串)

    描述 谷歌.百度等搜索引擎已经成为了互连网中不可或缺的一部分.在本题中,你的任务也是设计一个搜索论文的搜索引擎,当然,本题的要求比起实际的需求要少了许多. 本题的输入将首先给出一系列的论文,对于每篇论 ...

  10. git设置别名alias

    每次用git拉去版本库都很烦,特别是要从非origin源,非master分支, 例如 git pull gitlab mybranch ,这样很蛋疼. 1.写个sh去处理 2.可以通过git的别名设置 ...