NFS

什么是NFS?(NAS)

NFS(网络文件系统):它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。

这个再往简单点,就相当于windows里面共享文件,然后其他主机把这个共享文件映射成了本地盘使用一样。接下来我们会学习两部分:NFS原理(共享原理)、服务端如何搭建NFS(怎么共享)、客户端怎么挂载(怎么映射网盘)

NFS简介

NFS是(Network File System)的缩写,既网络文件系统。一种使用于分散式文件系统的协议,由SUN公司开发,于1984年向外公布。NFS允许一个系统在网络上与他人共享文件和目录,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。多用于类Unix操作系统上。

工作原理

服务器端和客户端通信过程:

1)首先服务器端启动RPC远程过程调用(remote procedure call)服务,并开启111端口

2)启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样我们就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。

那RPC和NFS之间又是如何之间相互通讯的?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。

两台机器能够ping通

软件包的安装:

默认情况下,LINUX当中已经安装了NFS相关的软件包。只要确保本地上安装了NFS文件系统的支持即可! nfs-utils 。

服务的启动:

# systemctl  enable  nfs-server

# systemctl  start  nfs-server

NFS配置文件/etc/exports解析:

语法:

本机需要输入的文件夹       输出给谁(输出的约定,多个用“,”分隔)

规则:

 一行一个输出项目。一行写不下,自动换行即可。

 本机需要输入的文件夹       输出给谁两个参数之间使用一个或多个空格分隔。

 输出给谁(输出的约定,多个用“,”分隔)两个参数之间不能有空格。

 (输出的约定,多个用“,”分隔)里面不能有空格,多条预定中间使用“,”分隔。

范例:

/etc   172.25.250.0/255.255.255.0(rw,async)

/tmp/dir1   *(ro)    192.168.100.1(rw)

/test1       *.lab.exmaple.com(ro)

 服务器端重新加载配置文件而不中断连接

# exportfs -rv

#setenforce   0  //设置selinux为关闭状态

服务器端的挂载参数

参数

含义

secure

这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。

rw

这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的ro。

async

这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。缺省设置为 sync。

no_wdelay

这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。

nohide

如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。

no_subtree_check

这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。

no_auth_nlm

这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。

mp(mountpoint=path)

通过显式地声明这个选项,NFS 要求挂载所导出的目录。

fsid=num

这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。

用户映射的选项包括:

root_squash

这个选项不允许 root 用户访问挂载上来的 NFS 卷

no_root_squash

这个选项允许 root 用户访问挂载上来的 NFS 卷。

all_squash

这个选省设置是 no_all_squash。

项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺

anonuid

这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号

 

NFS客户端:

1、查看监测服务器端的输出的项目

# showmount  -e   服务器IP地址

2、客户端单次挂载:

# mount  -t  nfs      服务器的ip地址:/输出的文件夹      本地挂载点

3、永久挂载:/etc/fstab

服务器的ip地址:/输出的文件夹   本地挂载点   nfs   defaults  0  0

 

基于kerberos加密保护的NFS

NFS在以前只适合在局域网中使用,但由于NFSV4开始使用TCP协议进行传输,所以希望在工作当中在互联网中使用NFS!!!

服务器端:

1、服务器端下载服务器端的kerberos的密钥,放到/etc/krb5.keytab

2、在输出项目的挂载参数中加入(, sec=krb5p

3、编辑NFS的系统配置文件:/etc/sysconfig/nfs  修改

   RPCNFSDARGS=""    改为

   RPCNFSDARGS="-V 4.2"

4、启动服务器

   # systemctl  restart  nfs-server          //enable

   # systemctl  restart  nfs-secure-server   //enable

客户端:

1、下载客户端的kerberos的密钥,放到/etc/krb5.keytab

2、# system  restart  nfs-secure   //enable

3、写/etc/fstab

服务器的ip地址:/输出的文件夹   本地挂载点   nfs   defaults,sec=krb5p,v4.2  0  0

 

10、配置 NFS 服务

一共有system1和system2 两台机器

System1

# yum  install  nfs-utils -y   //安装软件包

# mkdir /securenfs     //创建共享文件

# chmod 777  /securenfs

 

# vim /etc/exports

/securenfs   *(rw)      //添加共享目录

#exportfs  -rv   //加载/etc/exports文件

# systemctl  restart nfs-server

# systemctl  enable nfs-server

#firewall-cmd  --permanent  --add-service=nfs

#firewall-cmd   --reload

11、挂载一个 NFS 共享

System2

# mkdir  /mnt/secureshare

# vim /etc/fstab

system1:/securenfs       /mnt/secureshare   nfs  defaults  0  0

# mount  -a  

# touch /mnt/nfssecure/secret

 

System1

1、创建一个包含“hello world”的新文件

#echo  hello  world > /securenfs/testfile.txt

System2上在 /mnt/secureshare就可以看到system1上创建的新文件

 

linux下安装与配置nfs服务器的更多相关文章

  1. 在linux下安装并配置mysql数据库

    在linux下安装并配置mysql数据库 工具/原料   MySql5.6 CentOS 方法/步骤   1 查找以前是否安装有mysql,使用下面命令: rpm -qa|grep -i mysql ...

  2. Linux(4)- centos7安装python3、Linux下安装、配置virtualenv、确保开发环境的一致性、虚拟环境之virtualenvwrapper、vim

    一.centos7安装python3 1.下载python3的源码包 下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz cd ...

  3. Linux下安装和配置JDK与Tomcat(升级版)

    在这个版本 Linux下安装和配置JDK与Tomcat(入门版) 的基础上优化升级 1.下载相关软件 apache-tomcat-6.0.37.tar.gz jdk-6u25-linux-i586-r ...

  4. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

    为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看.[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://ww ...

  5. Linux下安装与配置Nginx

    一.准备 Nginx版本:nginx-1.7.7.tar.gz   请自行到官网下载对应的版本. 二.步骤 ♦在Linux新建一个queenLove用户 [root@localhost /]# use ...

  6. Linux下安装mantis配置指南【转】

    转自:http://blog.csdn.net/xabc3000/article/details/6858229 目录(?)[-] Linux下安装mantis配置指南 配置Linux下的Apache ...

  7. CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)

    在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...

  8. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

    在这里一下讲解着三个的安装和配置, 是因为solr需要使用tomcat和IK分词器, 这里会通过图文教程的形式来详解它们的安装和使用.注: 本文属于原创文章, 如若转载,请注明出处, 谢谢.关于设置I ...

  9. linux下安装及配置和启动memcached

    一.下载文件: 下载memcached和libevent,放到/hom/zwl/目录下 # wget http://www.danga.com/memcached/dist/memcached-1.2 ...

随机推荐

  1. Spire.Cloud.Word 添加Word水印(文本水印、图片水印)

    概述 Spire.Cloud.Word提供了watermarksApi接口可用于添加水印,包括添加文本水印(SetTextWatermark).图片水印(SetImageWatermark),本文将对 ...

  2. 【Android - IPC】之ContentProvider简介

    1.Content Provider简介 Content Provider是Android中提供的一种专门用于不同应用之间进行数据共享的方式,从这一点来看,它天生就适合IPC(Inter-Proces ...

  3. kube-apiserver 集群服务安装

    目录 创建 kube-apiserver 证书 生成证书和私钥 创建加密配置文件 创建审计策略文件 分发 kube-apiserver 二进制文件 创建后续访问 metrics-server 使用的证 ...

  4. Xtrabackup 增量备份 和 增量还原

    目录 测试数据准备 进行全量备份 第一次增量插入一条数据 进行第一次增量备份 注意 第二次增量插入一条数据 进行第二次增量备份 注意 查看xtrabackup_binlog_info中的binlog位 ...

  5. JavaScript的定时器是如何工作的

    理解JavaScript定时器工作原理对于学习JavaScript非常重要.因为JavaScript是单线程运行的,定时器使用场合少,不是很直观.下面通过三个函数来学习JavaScript如何定义,操 ...

  6. python函数-函数对象

    python函数-函数对象 实验室 当函数定义时,就类似a=1,以函数名为变量名 def zx(): pass print(zx) zx=21 print(zx) <function zx at ...

  7. unicode和utf-8编码区别

    以前使用Python2,一直为中文烦恼,也不知道为什么开头就要声明#coding=utf-8,后来用了Python3,发现就不用这样了,还是想彻底弄懂下这是为什么. 先讲asc码  每个 ASC码占一 ...

  8. PAT(甲级)2018年冬季考试

    1152 Google Recruitment 思路:判断素数 #include<bits/stdc++.h> using namespace std; const int maxn = ...

  9. 如何将本地项目推送到码云仓库或者GitHub仓库

    将本地项目推送到码云仓库. 前提: git 和码云   1.在码云上先创建一个仓库. 2.在要被上传的项目的目录右键, 选择 Git Bash Here. 3.在窗口输入命令: git init 这时 ...

  10. 高德APP全链路源码依赖分析工程

    一.背景 高德 App 经过多年的发展,其代码量已达到数百万行级别,支撑了高德地图复杂的业务功能.但与此同时,随着团队的扩张和业务的复杂化,越来越碎片化的代码以及代码之间复杂的依赖关系带来诸多维护性问 ...