学到这里差不多就结束了linux的基础学习了,其实linux的内容并不难,我们要经常的反复的去操作它,多多和它去联络感情才能很好的掌握这个linux。

加油!今天是星期二。没有什么比努力让人更加热血沸腾,成功会不远万里地来追寻我。

一、NFS概述

NFS(网络文件系统,Network File System)采用CS的工作模式。NFS是分布式计算系统的一个组成部分,可以实现在异种网络上共享和装配远程文件系统。NFS提供了一种在类Unix系统上的共享文件的方法。

它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。

一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。NFS一般用来存储共享视频,图片等静态数据。

NFS还可以结合远程网络启动实现
 无盘工作站(PXE启动,所有数据都在服务器的磁盘阵列上)
 瘦客户工作站(本地启动系统,本地磁盘存储常用系统工具,而所有/home目录的用户数据被放在NFS服务器上并且在网络上处处可见)

二、NFS协议以及各版本的组要差别

  2.1、V3相对V2的主要区别 

    1)文件尺寸
      V2最大只支持32BIT的文件大小,而NFS V3新增加了支持64BIT文件大小的技术。
    2) 文件传输尺寸
      V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
    3)完整的信息返回
      V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
    4)增加了对TCP传输协议的支持
      V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持
    5)异步写入特性
      NFS V3能否使用异步写入,这是可选择的一种特性。
      NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。
      当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。
      异步写入能够使服务器确定最好的同步数据的策略使数据尽可能的同步的提交。
      与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。
        改进了SERVER的mount性能
        有更好的I/O WRITES性能。
        更强网络运行效能,使得网络运作更为有效。
        更强的灾难恢复功能。  

   2.2、V4相对V3的改进 

     改进了INTERNET上的存取和执行效能
    在协议中增强了安全方面的特性
    增强的跨平台特性

三、RPC(Remote Procedure Call Protocol,远程过程调用)

  3.1、概述 

    1)RPC(Remote Procedure Call Protocol):远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

                              在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
    2)RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。

        当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

    3)NFS协议本身没有网络传输功能,而是基于RPC实现的。

    4)RPC提供了一个面向过程的远程服务结构。
    5)RPC可以通过网络从远程主机上请求服务,而不需要了解底层网络技术的协议。
    6)RPC是工作在OSI模型的会话层,它可以为遵循RPC协议应用层协议提供端口注册功能。
    7)很多服务都可以向RPC注册端口。
    8)RPC使用网络端口111来监听客户端的请求。

  3.2、NFS与RPC

    

四、NFS的详解

  4.1、NFS的守护进程  

  NFS的不同功能由不同的守护进程提供。
  NFS的每个功能都有RPC分配分配的端口监听。
     rpc.nfsd:基本的NFS守护进程(2049端口),主要负责登录权限检测。
     rpc.mountd:负责管理NFS的文件系统,对客户端存取服务器的文件进行一系列的管理。
     rpc.rquotad:提供远程磁盘限额服务。
     rpc.lockd:用于管理文件的锁定,防止多个客户端同时写入某个文件时产生的冲突。
     rpc.statd:用来检查共享目录的一致性

  4.2、NFS的相关工具

  exportfs:NFS服务器端功能,维护共享资源
  showmount:NFS客户端功能,查看服务器共享的目录。(后面跟ip地址)
  nfsstat:显示NFS的状态统计信息。
  rpcinfo:显示由RPC维护的端口映射,显示已注册的RPC服务列表

  4.3、NFS的安装与启动

    1)在服务器端:sudo apt-get install nfs-common nfs-kernel-server(同时也安装了客户端的nfs)

    2)启动服务器端的nfs服务器:sudo service nfs-kernel-server restart

    3)在客户端(之安装nfs客户端):sudo apt install nfs-ommon

  4.4、NFS服务端  

    1)主要配置文件/etc/exports
    共享目录 [主机1(参数项)] [主机2(参数项)] ...
    主机:ip地址或主机名
    参数项:
        ro 设置共享目录为只读
       rw 设置共享目录可读写
        sync 所有数据在请求时写入共享
       async NFS在写入数据前可以相应请求
       secure NFS通过1024以下的安全TCP/IP端口发送
       insecure NFS通过1024以上的端口发送
       wdelay 如果多个用户写入NFS目录,则归组写入(默认)
       no_wdelay 如果多个用户写入NFS目录,则立即写入,使用async时无需此设置。
       hide 在NFS共享目录中不共享其子目录
       no_hide 共享NFS目录的子目录
      subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
       no_subtree_check 和上面相对,不检查父目录权限
       all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
       no_all_squash 保留共享文件的UID和GID(默认)
       root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
       no_root_squash root用户具有根目录的完全管理访问权限
      anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
      anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID

   

    2)exportfs命令   

    用于维护NFS共享的目录列表
    当修改了/etc/exports之后,无需重启nfs服务
     exportfs [-aruv]
       -a:全部挂载或卸载配置文件中的设置
       -r:重新挂载配置文件中的设置。
       -u:卸载共享目录
       -v:显示输出列表同时,显示设定参数。

  4.5、NFS客户端  

  1)showmount命令 

   查看NFS服务器上所有共享目录 showmount –e ip_address
    查看服务器上哪些共享目录被挂载 showmount –d ip_address
  2)NFS的挂载与卸载
    挂载 mount –t nfs [-o 参数] server_adr:/共享目录 /本机挂载点
    卸载 umount /本机挂载点 (加选项-f进行强制卸载)
  3)启动时挂载
    修改/etc/fstab文件 192.168.0.200:/share /share nfs hard,intr 0 0

五、NFS实现共享文件实战

  5.1、环境

  首先我在ubuntu的desktop版充当nfs客户端,在ubuntu的server版充当nfs服务器端

  5.2、步骤

  1)首先在ubuntu的server版中安装nfs服务器,然后开启服务

    sudo apt install nfs-kernel-server

    sudo service nfs-kernel-server restart

  2)创建一个共享目录在服务器端

  

  3)修改nfs配置文件/etc/exports,然后要重启服务

   

  4)在客户端中安装nfs客户端,并在客户端查看nfs服务器的共享目录

   

  5)在客户端中创建一个目录nfsfolder来远程挂载nfs服务器中的nfsshare

    

  6)零时挂载

  

  7)测试,在nfs服务器端的共享目录放一个a.txt文件,然后在去客户端哪里查看

  

  

  8)永久挂载,修改/etc/fstab文件

   

linux nfs的更多相关文章

  1. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

  2. Linux NFS挂载

    Linux NFS挂载 一.NFS挂载 192.25.10.101/home/sharedata/azkaban/ODS_HS08 挂载到 192.25.10.102/home/data_azkaba ...

  3. Linux NFS Root and PXE-Boot

    Linux NFS Root and PXE-Boot November 6, 2006 Home· Linux Linux kernel hacking and test running on th ...

  4. linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项

    服务端共享目录 /home/XXX/nfs_shared 172.16.22.0/24(rw,no_root_squash) service nfs restart 常用命令: 查看所有nfs共享目录 ...

  5. Linux NFS服务器的简明配置6.8

    Linux NFS服务器的简明配置6.8   Linux NFS服务器的简明配置 一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的 ...

  6. Msftables之Linux NFS共享目录配置漏洞

    实验目的 1.了解Metasploitables靶机系统漏洞: 2.学习使用Metasploit. 实验原理 msftables之利用Linux NFS共享目录配置漏洞渗透. 实验内容 msftabl ...

  7. linux NFS 配置步骤

    转载 http://woxihuanpes.blog.163.com/blog/static/12423219820097139145238/ NFS server可以看作是一个FILE SERVER ...

  8. Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  9. Linux NFS 服务部署

    系统环境:Oracle Linux 5.7 服务端:192.168.1.111 客户端:192.168.1.171 一.服务端配置 二.客户端配置 一.服务端配置 1.依次启动portmap和nfs服 ...

随机推荐

  1. Winform文件夹图片批量压缩整理修改

    效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...

  2. seajs加载jquery插件

    假设有如下一个名为get-data的jq插件: (function($) { $.fn.getData= function() { console.log($(this).attr('data')) ...

  3. posix多线程--线程取消

    1.三种取消状态Off                   禁用取消Deferred           推迟取消:在下一个取消点执行取消Asynchronous   异步取消:可以随时执行取消 in ...

  4. python(28)获得网卡的IP地址,如何在其他文件夹中导入python模块

    获得第几块网卡的ip地址: 如何在其他文件夹中导入模块 import sys sys.path.append('/search/chen/tool')#你的代码存放的目录 from Get_Ip im ...

  5. java.util.logging.Logger日志生成过程浅析 (转)

    http://www.tuicool.com/articles/vy6Zrye ****************************************** java.util.logging ...

  6. 【Java】Collection与Map接口总结

    Collection     -----List                -----LinkedList    非同步                 ----ArrayList      非同 ...

  7. java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())

    JAVA中有3种方式可以终止正在运行的线程 ①线程正常退出,即run()方法执行完毕了 ②使用Thread类中的stop()方法强行终止线程.但stop()方法已经过期了,不推荐使用 ③使用中断机制i ...

  8. mysql主从复制的介绍

    引用:https://my.oschina.net/u/255939/blog/505598 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制 ...

  9. mysql 加入远程用户

    USE mysql; GRANT ALL PRIVILEGES ON *.* TO panjing @"%" IDENTIFIED BY "123456"; F ...

  10. 如何在linux下实现mysql数据库每天自动备份

    建备份文件夹: mkdir mysql_data_bak 建脚本文件: touch autobackupmysql.sh 打开文件 vi  autobackupmysql.sh 在脚本中加入如下内容: ...