先简单介绍一下NFS服务器是什么?

  NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端的NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。

RPC(Remote Procedure Call)

  NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
ubuntu系统
服务器端(192.168.94.54)

1.1安装NFS服务:

执行以下命令安装NFS服务器,

apt会自动安装nfs-common、rpcbind等13个软件包

sudo apt install nfs-kernel-server

1.2编写配置文件:

编辑/etc/exports 文件:

sudo vi /etc/exports

/etc/exports文件的内容如下:

/tmp *(rw,sync,no_subtree_check,no_root_squash)

/data *(rw,sync,no_subtree_check,no_root_squash)

/logs *(rw,sync,no_subtree_check,no_root_squash)

[共享目录] [第一台主机(权限)] [可用主机名表示] [可用通配符表示]

* 代表0到无穷多个任意字符

? 代表一定有一个任意字符

Exports文件中可以设定的参数主要有以下这些:

  参数 说明

(1) Ro 该主机对该共享目录有只读权限

(2) Rw 该主机对该共享目录有读写权限

(3) Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

(4) No_root_squash 客户机用root访问该共享文件夹时,不映射root用户

(5) All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

(6) Anonuid 将客户机上的用户映射成指定的本地用户ID的用户

(7) Anongid 将客户机上的用户映射成属于指定的本地用户组ID

(8) Sync 资料同步写入到内存与硬盘中

(9) Async 资料会先暂存于内存中,而非直接写入硬盘

(10) Insecure 允许从这台机器过来的非授权访问
 
(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

(12) no_subtree_check 和上面相对,不检查父目录权限

(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)

(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

(15) hide 在NFS共享目录中不共享其子目录

(16) no_hide 共享NFS目录的子目录

(17) secure NFS通过1024以下的安全TCP/IP端口发送

(18) insecure NFS通过1024以上的端口发送

/ user01(rw) user02(rw,no_root_squash) 表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录

  /root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

  /home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目录,.test.com域中所有的主机都可以访问该目录,且有读写权限

  /home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户

1.3创建共享目录

在服务器端创建/tmp /data和/logs共享目录

sudo mkdir -p /tmp

sudo mkdir -p /data

sudo mkdir -p /logs

1.4重启nfs服务:

sudo service nfs-kernel-server restart

1.5常用命令工具:

在安装NFS服务器时,已包含常用的命令行工具,无需额外安装。

显示已经mount到本机nfs目录的客户端机器。

sudo showmount -e localhost

将配置文件中的目录全部重新export一次!无需重启服务。

sudo exportfs -rv

查看NFS的运行状态

sudo nfsstat

查看rpc执行信息,可以用于检测rpc运行情况

sudo rpcinfo

查看网络端口,NFS默认是使用111端口。

sudo netstat -tu -4

客户端(192.168.94.76)

2.1安装客户端工具:

在需要连接到NFS服务器的客户端机器上,

需要执行以下命令,安装nfs-common软件包。

apt会自动安装nfs-common、rpcbind等12个软件包

sudo apt install nfs-common

2.2查看NFS服务器上的共享目录

显示指定的(192.168.94.54)NFS服务器上export出来的目录

sudo showmount -e 192.168.94.54

2.3创建本地挂载目录

sudo mkdir -p /mnt/data

sudo mkdir -p /mnt/logs

2.4挂载共享目录

将NFS服务器192.168.94.54上的目录,挂载到本地的/mnt/目录下

sudo mount -t nfs 192.168.94.54:/data /mnt/data

sudo mount -t nfs 192.168.94.54:/logs /mnt/logs

注:在没有安装nfs-common或者nfs-kernel-server软件包的机器上,

直接执行showmount、exportfs、nfsstat、rpcinfo等命令时,

系统会给出友好的提示,

比如直接showmount会提示需要执行sudo apt install nfs-common命令,

比如直接rpcinfo会提示需要执行sudo apt install rpcbind命令。

centos6系统

1、安装nfs和rpcbind

检查自己的电脑是否已经默认安装了nfs和rpcbind:

# rpm -aq | grep nfs
nfs-utils-lib-1.1.5-13.el6.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64

# rpm -aq | grep rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64

这表示系统已经默认安装。如果没有安装也没事,可以采用下面的命令安装

# yum install nfs-utils rpcbind

2、配置nfs的配置文件和hosts文件

创建需要共享的目录:默认用/mnt

配置nfs的配置文件:

vim /etc/exports

在这个文件中添加需要输出的目录,如:

/usr/local/static *(rw)

/usr/local/static:表示的是nfs服务器需要共享给其他客户端服务器的文件夹

*:表示可以挂载服务器目录的客户端ip

(rw):表示该客户端对共享的文件具有读写权限

配置hosts文件:vim /etc/hosts

192.168.93.5 tomcat-01
192.168.93.7 tomcat-02

192.168.93.5:表示服务器本机的ip地址
tomcat-01:表示服务器的机器名

3、启动nfs和rpcbind服务、检测服务状态、已经设置服务开机启动

启动服务:

#service rpcbind start
#service nfs start

检查启动状态:

#service rpcbind status  
#service nfs status

4、检测服务器的nfs状态

# showmount -e  localhost     查看自己共享的服务  
Export list for hostname:
/usr/local/static *

注意:在执行这个命令的时候如果出现错误,说明DNS不能解析当前的服务器,那就是hosts文件没有配置。

5、客户端挂载NFS中共享的目录

客户端服务器也需要安装nfs 和 rpcbind 服务。

首先是启动nfs和rpcbind服务。

查询服务端共享的文件目录:

showmount -e 192.168.93.5
Export list for 192.168.93.5:
/usr/local/static *

创建挂载目录:

#cd /mnt
#mkdir static

挂载服务端的共享目录:

# mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.93.5:/usr/local/static /mnt/static

查看挂载的状态:

# mount | grep nfs

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.93.5:/usr/local/static on /mnt/static type nfs (rw,nolock,nfsvers=3,vers=3,addr=192.168.93.5)

6、测试共享

服务器创建文件:

#cd /usr/local/static
#touch test123
#echo "123" > test123

客户端查看文件:

#cd /mnt/static
#ll -h
total 4.0K
-rw-r--r--. 1 root root 4 Dec 26 10:06 test123
 ————————————————
版权声明:本文为CSDN博主「三支烟」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36357820/article/details/78488077

https://www.cnblogs.com/wangn/p/3503701.html

简介

  NFS:是Network FileSystem。最大的作用就是通过网络,让不同的机器、不同的作业系统、可以分享档案。
通过将共享目录挂接到本地,就可以像操作本地目录一样去操作共享的目录。
在共享中分为服务器和客户端,需要安装的程序也不一样,客户端通过RPC的方式去请求服务端完成相应的操作。
可以想象成为windows的共享目录(权限是在server的/etc/exports中设置的)。

          (1、NFS示意图)

  

          (2、RPC在NFS中的位置)

服务端

  安装nfs-server:
  sudo apt-get install nfs-kernel-server

配置

配置文件一般是在/etc/exports
添加:
/hadoop *(rw,sync,no_subtree_check)
/home/grid *(rw,sync,no_subtree_check)
当然也可以用指定的服务器名称(hostname)或IP代替*
配置完成需要重启nfs-server
重启命令:
sudo /etc/init.d/nfs-kernel-server restart
service nfs-kernel-server restart

     export选项说明:

ro 该主机对该共享目录有只读权限

rw 该主机对该共享目录有读写权限

root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户anonuid 将客户机上的用户映射成指定的本地用户ID的用户

anongid 将客户机上的用户映射成属于指定的本地用户组ID

sync 资料同步写入到内存与硬盘中

async 资料会先暂存于内存中,而非直接写入硬盘insecure 允许从这台机器过来的非授权访问

客户端

(1)安装nfs-client:
sudo apt-get install nfs-common
(2)查看nfs server 上共享的目录
showmount -e 服务器IP
(3)创建共享挂载点,并执行挂载
sudo mkdir /home/grid/nfshadoop
sudo mount -t nfs serverip:/hadoop /home/grid/nfshadoop
(4)修改/etc/fstab文件,让系统在启动时可以自动挂载nfs server目录
serverip:/hadoop /home/grid/nfshadoop nfs defaults 0 0
(5)新建目录看看远程服务器上是否可以看到
touch tmp

进阶阅读

    图片来源:http://linux.vbird.org/linux_server/0330nfs.php#ps1

鸟哥的私房菜:http://linux.vbird.org/linux_server/0330nfs.php#ps1

http://f.dataguru.cn/forum.php?mod=viewthread&tid=156968
http://blog.csdn.net/ustc_dylan/article/details/8164080
http://tech.seety.org/debian/NFSConf.html#id8
http://www.92csz.com/study/linux/19.htm
https://help.ubuntu.com/lts/serverguide/network-file-system.html

Ubuntu NFS搭建过程的更多相关文章

  1. 文件共享服务器nfs搭建过程

    网络文件共享服务器192. yum install -y nfs-utils 在exports文件中添加的从机范围 vim /etc/exports /home/nfs/ (rw,sync,fsid= ...

  2. Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 搭建过程

    安装SDK 1.Hi3531 SDK包位置     在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx ...

  3. ubuntu下搭建nfs,tftp,安装qt等一些基本的启动bootloader前的服务

    之前做三星的6410是在红帽下做的,现在公司给了个TI的AM3359的开发板,开发环境是ubuntu10-04.这周经过半天的研究对比,终于算是搭好tftp下载的一些服务了. [防火墙] sudo u ...

  4. Ubuntu: 搭建tftp,nfs服务器

    Ubuntu12.04搭建tftp&nfs服务器 http://blog.163.com/thinki_cao/blog/static/83944875201411610467306/ 硬件环 ...

  5. Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程

    Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4. ...

  6. 基于Ubuntu的ORB-SLAM2项目环境搭建过程

    目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...

  7. 在Ubuntu下搭建ASP.NET 5开发环境

    在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...

  8. Ubuntu server 搭建Git server

    Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...

  9. Ubuntu下搭建NodeJS+Express WEB开发框架

    Ubuntu下搭建NodeJS+Express WEB开发框架 2012-12-27 15:06 作者: NodeJSNet 来源: 本站 浏览: 2,966 次阅读 我要评论暂无评论 字号: 大 中 ...

随机推荐

  1. [CSP-S模拟测试]:e(树上主席树)

    题目传送门(内部题66) 输入格式 第一行,一个正整数$n$,一个自然数$q$,一个整数$type$.第二行,$n$个正整数,代表$a_i$.接下来$n-1$行,每行两个正整数$u$.$v$,代表树中 ...

  2. win10文件夹不自动刷新的解决方案

    win10文件夹不自动刷新的解决方案 https://jingyan.baidu.com/article/d7130635d45a5013fcf47544.html

  3. ajax传递json参数

    var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...

  4. qbzt day6 下午 模拟赛

    我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少.   话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... ...

  5. Delphi XE2 之 FireMonkey 入门(24) - 数据绑定: TBindingsList: TBindExpression.Direction

    在学习 BindingSource 属性时, 可以让两个控件互为绑定源; TBindExpression 对应的功能是 Direction 属性. 先在窗体上添加 Edit1.Edit2.Bindin ...

  6. python 正则表达式 re.match

    #coding:utf-8 import re #匹配内容:单词+空格+单词+任意字符 #\w 单词字符[A-Za-z0-9_] #(?P<name>...) 分组,除了原有的编号外在指定 ...

  7. 【opencv】opencv图像识别的一些基础的基础函数的使用方法

    import cv2 import numpy as np from matplotlib import pyplot as plt pic_path = "deal_with.png&qu ...

  8. BZOJ[3728]PA2014 Final Zarowki

    有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售.但由于背包空间有 ...

  9. webpack前端模块打包器

    webpack前端模块打包器 学习网址: https://doc.webpack-china.org/concepts/ http://www.runoob.com/w3cnote/webpack-t ...

  10. <<Java RESTful Web Service实战>> 读书笔记

    <<Java RESTful Web Service实战>> 读书笔记 第一章   JAX-RS2.0入门 REST (Representational State ransf ...