NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络资源共享。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

1、好处

(1)节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。

(2)用户不需要在网络中的每台计算机上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。

(3)一些存储设备如软驱、CDROM和ZIP等都可以在网络上被别的机器使用。这可以减少整个网络上移动介质设备的数量。

2、组成

NFS体系至少有两个主要部分:一台NFS服务器和若干台客户机,如图所示

客户机可以通过TCP/IP网络远程访问存放在NFS上的数据。

NFS实现是通过RPC服务来实现的

实现过程:

(1)NFS RPC的主要功能是记录每个NFS功能所对应的端口号,并将信息传递给请求数据的NFS客户端,从而实现数据的传输。

(2)NFS服务启动时会随机取用数个端口,并主动向RPC服务注册取用的相关端口信息,RPC服务就知道每个端口对应的NFS功能了,然后RPC会用固定的端口(111)来监听NFS客户端的请求,将正确的NFS端口传给NFS的客户端

服务启动顺序:RPC--》NFS

3、服务器端安装,配置过程

(1)检查是否安装NFS RPC服务

[root@localhost ~]# rpm -qa nfs-utils rpcbind
[root@localhost ~]# yum install nfs-utils rpcbind -y
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.7 kB :
extras | 3.4 kB :
extras/primary_db | kB :
updates | 3.4 kB :
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 :1.2.-.el6_9 will be installed
--> Processing Dependency: nfs-utils-lib >= 1.1.- for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libtirpc >= 0.2.- for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: keyutils >= 1.4- for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: python-argparse for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libgssglue.so.(libgssapi_CITI_2)(64bit) for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libgssglue for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libevent for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libtirpc.so.()(64bit) for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libnfsidmap.so.()(64bit) for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libgssglue.so.()(64bit) for package: :nfs-utils-1.2.-.el6_9.x86_64
--> Processing Dependency: libevent-1.4.so.()(64bit) for package: :nfs-utils-1.2.-.el6_9.x86_64
---> Package rpcbind.x86_64 :0.2.-.el6_9. will be installed
--> Running transaction check
---> Package keyutils.x86_64 :1.4-.el6 will be installed
---> Package libevent.x86_64 :1.4.-.el6 will be installed
---> Package libgssglue.x86_64 :0.1-.el6 will be installed
---> Package libtirpc.x86_64 :0.2.-.el6_9 will be installed
---> Package nfs-utils-lib.x86_64 :1.1.-.el6 will be installed
---> Package python-argparse.noarch :1.2.-2.1.el6 will be installed
--> Finished Dependency Resolution Dependencies Resolved ==============================================================================
Package Arch Version Repository Size
==============================================================================
Installing:
nfs-utils x86_64 :1.2.-.el6_9 updates k
rpcbind x86_64 0.2.-.el6_9. updates k
Installing for dependencies:
keyutils x86_64 1.4-.el6 base k
libevent x86_64 1.4.-.el6 base k
libgssglue x86_64 0.1-.el6 base k
libtirpc x86_64 0.2.-.el6_9 updates k
nfs-utils-lib x86_64 1.1.-.el6 base k
python-argparse noarch 1.2.-2.1.el6 base k Transaction Summary
==============================================================================
Install Package(s) Total download size: k
Installed size: 2.0 M
Downloading Packages:
(/): keyutils-1.4-.el6.x86_64.rpm | kB :
(/): libevent-1.4.-.el6.x86_64.rpm | kB :
(/): libgssglue-0.1-.el6.x86_64.rpm | kB :
(/): libtirpc-0.2.-.el6_9.x86_64.rpm | kB :
(/): nfs-utils-1.2.-.el6_9.x86_64.rpm | kB :
(/): nfs-utils-lib-1.1.-.el6.x86_64.rpm | kB :
(/): python-argparse-1.2.-2.1.el6.noarch.rpm | kB :
(/): rpcbind-0.2.-.el6_9..x86_64.rpm | kB :
------------------------------------------------------------------------------
Total 1.1 MB/s | kB :
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgssglue-0.1-.el6.x86_64 /
Installing : libtirpc-0.2.-.el6_9.x86_64 /
Installing : rpcbind-0.2.-.el6_9..x86_64 /
Installing : python-argparse-1.2.-2.1.el6.noarch /
Installing : libevent-1.4.-.el6.x86_64 /
Installing : keyutils-1.4-.el6.x86_64 /
Installing : nfs-utils-lib-1.1.-.el6.x86_64 /
Installing : :nfs-utils-1.2.-.el6_9.x86_64 /
Verifying : rpcbind-0.2.-.el6_9..x86_64 /
Verifying : libtirpc-0.2.-.el6_9.x86_64 /
Verifying : keyutils-1.4-.el6.x86_64 /
Verifying : libevent-1.4.-.el6.x86_64 /
Verifying : nfs-utils-lib-1.1.-.el6.x86_64 /
Verifying : libgssglue-0.1-.el6.x86_64 /
Verifying : :nfs-utils-1.2.-.el6_9.x86_64 /
Verifying : python-argparse-1.2.-2.1.el6.noarch / Installed:
nfs-utils.x86_64 :1.2.-.el6_9 rpcbind.x86_64 :0.2.-.el6_9. Dependency Installed:
keyutils.x86_64 :1.4-.el6 libevent.x86_64 :1.4.-.el6
libgssglue.x86_64 :0.1-.el6 libtirpc.x86_64 :0.2.-.el6_9
nfs-utils-lib.x86_64 :1.1.-.el6 python-argparse.noarch :1.2.-2.1.el6 Complete!
[root@localhost ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.-.el6_9..x86_64
nfs-utils-1.2.-.el6_9.x86_64

(2)安装完成后,启动相关服务

[root@localhost ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.-.el6_9..x86_64
nfs-utils-1.2.-.el6_9.x86_64
[root@localhost ~]# /etc/init.d/rpcbind status
rpcbind is stopped
[root@localhost ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@localhost ~]# /etc/init.d/rpcbind status
rpcbind (pid ) is running...
[root@localhost ~]# /etc/init.d/nfs
anaconda-ks.cfg .bashrc install.log.syslog
.bash_logout .cshrc .tcshrc
.bash_profile install.log
[root@localhost ~]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd is stopped
nfsd is stopped
[root@localhost ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
[root@localhost ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@localhost ~]# rpcinfo -p localhost
program vers proto port service
tcp portmapper
tcp portmapper
tcp portmapper
udp portmapper
udp portmapper
udp portmapper
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
tcp nfs
tcp nfs
tcp nfs
tcp nfs_acl
tcp nfs_acl
udp nfs
udp nfs
udp nfs
udp nfs_acl
udp nfs_acl
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp nlockmgr
tcp nlockmgr
tcp nlockmgr

让RPC、NFS服务开机自启,在实际生产环境中都会将配置放在/etc/rc.local下面

[root@localhost ~]# vim /etc/rc.local
[root@localhost ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
/etc/init.d/rpcbind start
/etc/init.d/nfs start

(3)配置服务端NFS配置文件/etc/exports

[root@localhost ~]# cat /etc/exports
##nfs server created by cairui at --
/home/cairui 192.168.181.128(rw)
[root@localhost ~]# /etc/init.d/nfs
anaconda-ks.cfg .bashrc install.log.syslog
.bash_logout .cshrc .tcshrc
.bash_profile install.log .viminfo
[root@localhost ~]# /etc/init.d/nfs reload
[root@localhost ~]# /etc/init.d/nfs restart
Shutting down NFS daemon: [ OK ]
Shutting down NFS mountd: [ OK ]
Shutting down NFS services: [ OK ]
Shutting down RPC idmapd: [ OK ]
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]

4、客户端配置

[root@localhost ~]# rpm -qa | grep nfs
nfs-utils-lib-1.1.-.el6.x86_64
nfs-utils-1.2.-.el6_9.x86_64
[root@localhost ~]# rpm -qa | grep rpc
rpcbind-0.2.-.el6_9..x86_64
libtirpc-0.2.-.el6_9.x86_64
[root@localhost ~]# /etc/init.d/rpcbind status
rpcbind is stopped
[root@localhost ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@localhost ~]# /etc/init.d/rpcbind status
rpcbind (pid ) is running...
[root@localhost ~]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd is stopped
nfsd is stopped
[root@localhost ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@localhost ~]# showmount -e 192.168.181.129
Export list for 192.168.181.129:
/home/cairui 192.168.181.128
[root@localhost ~]# ping 192.168.181.129
PING 192.168.181.129 (192.168.181.129) () bytes of data.
bytes from 192.168.181.129: icmp_seq= ttl= time=0.348 ms
bytes from 192.168.181.129: icmp_seq= ttl= time=0.706 ms
bytes from 192.168.181.129: icmp_seq= ttl= time=0.512 ms
^C
--- 192.168.181.129 ping statistics ---
packets transmitted, received, % packet loss, time 2760ms
rtt min/avg/max/mdev = 0.348/0.522/0.706/0.146 ms
[root@localhost ~]# iptables -F
[root@localhost ~]# showmount -e 192.168.181.129
Export list for 192.168.181.129:
/home/cairui 192.168.181.128

客户端进行NFS挂载

[root@localhost ~]# mount -t nfs 192.168.181.129:/home/cairui /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G .4G 16G % /
tmpfs 491M 491M % /dev/shm
/dev/sda1 190M 30M 150M % /boot
192.168.181.129:/home/cairui
18G 809M 16G % /mnt

5、测试

服务端

[root@localhost ~]# cd /home/cairui/
[root@localhost cairui]# touch .txt
[root@localhost cairui]# ls -ll /home/cairui/
total
-rw-r--r--. root root Feb : .txt
[root@localhost cairui]# ls -ld /home/cairui/
drwx------. cairui cairui Feb : /home/cairui/
[root@localhost cairui]# chmod /home/cairui/
[root@localhost cairui]# ls -ld /home/cairui/
drwxrwxrwx. cairui cairui Feb : /home/cairui/

 [root@localhost cairui]# mkdir nfs

客户端

[root@localhost ~]# cd /mnt/
-bash: cd: /mnt/: Permission denied
[root@localhost ~]# ls -ll /mnt/
ls: cannot open directory /mnt/: Permission denied
[root@localhost ~]# cd /m
media/ mnt/
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
.txt
[root@localhost mnt]# ls
.txt nfs
[root@localhost mnt]#

八.启动自动挂载nfs文件系统

格式:<server>:<remote/export>

</local/directory> nfs <option> 0 0

#vim /etc/fstab

最后一行为后加的

保存退出,重启系统

或者修改

Linux之NFS网络文件系统的更多相关文章

  1. Linux系统NFS网络文件系统

    Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到 ...

  2. linux初学者-NFS网络文件系统篇

    linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...

  3. Linux系统——NFS网络文件系统

    在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资 ...

  4. tiny4412 linux+qtopia nfs网络文件系统的挂载

    1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine = root=/dev/nfs nfsroot=192.168.1.131:/home/tiny4412/ro ...

  5. Linux基础学习-NFS网络文件系统实时文件共享

    NFS网络文件系统 如果大家觉得Samba服务程序的配置太麻烦了,那么你共享文件的主机都是Linux系统,那么推荐大家在客户端部署nfs服务来共享文件.nfs(网络文件系统)服务可以将远程Linux系 ...

  6. NFS 网络文件系统挂载在A8板子上

    我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...

  7. [学习嵌入式开发板]iTOP-4412实现NFS网络文件系统

    本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是 ...

  8. linux初学者-CIFS网络文件系统篇

    linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是 ...

  9. NFS(网络文件系统)

    NFS(网络文件系统) 1.关于NFS介绍 1.1NFS在企业中的应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放 ...

随机推荐

  1. minidump-DMP文件的生成和使用

    转载地址点击打开链接 1.生成dmp的程序 #include  <dbghelp.h> #pragma comment(lib,  "dbghelp.lib") //设 ...

  2. 浅析TCP /UDP/ IP协议

    互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作 ...

  3. FreeType 管理字形

    转自:http://blog.csdn.net/hgl868/article/details/7254687 1.字形度量 顾名思义,字形度量是对应每一个字形的特定距离,以此描述如何对文本排版.    ...

  4. C# 实现快捷键几种方法

    本文讲解了三种方法实现C# button快捷键,如Alt + *(按钮快捷键),Ctrl+*及其他组合键等. 一. C# button快捷键之第一种:Alt + *(按钮快捷键) 在大家给button ...

  5. 在Google Colab中导入一个本地模块或.py文件

    模块与单个.py文件的区别,模块中含有__init__.py文件,其中函数调用使用的是相对路径,如果使用导入.py文件的方法在Google Colab中导入模块 会报错:Attempted relat ...

  6. 一个hitbernate配置文件,带几个表(注意mapping);如果连接字符串没有设置utf-8,向insert mysql 会产生乱码(utf8 或 utf-8)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...

  7. leetcode328

    /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...

  8. Spring装配各种类型bean

    一.单属性值的装配 //setter注入,提供无参构造器,提供setXX方法 <property name="" value=""></pro ...

  9. solr4.8中集成mmseg4j1.9.1

    要想在Solr中整合mmseg4j其实很容易,只需要如下几个步骤 1.下载(https://code.google.com/p/mmseg4j/downloads/list)并解压mmseg4j-1. ...

  10. ES01 数据类型、正则表达式、身份证校验

    1 基本数据类型 参见W3C的教程即可 2 正则表达式 参考博文:点击前往 3 身份证校验 参考博文:点击前往 <div class="panel panel-primary" ...