Linux之NFS网络文件系统
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网络文件系统的更多相关文章
- Linux系统NFS网络文件系统
Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到 ...
- linux初学者-NFS网络文件系统篇
linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...
- Linux系统——NFS网络文件系统
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资 ...
- tiny4412 linux+qtopia nfs网络文件系统的挂载
1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine = root=/dev/nfs nfsroot=192.168.1.131:/home/tiny4412/ro ...
- Linux基础学习-NFS网络文件系统实时文件共享
NFS网络文件系统 如果大家觉得Samba服务程序的配置太麻烦了,那么你共享文件的主机都是Linux系统,那么推荐大家在客户端部署nfs服务来共享文件.nfs(网络文件系统)服务可以将远程Linux系 ...
- NFS 网络文件系统挂载在A8板子上
我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...
- [学习嵌入式开发板]iTOP-4412实现NFS网络文件系统
本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是 ...
- linux初学者-CIFS网络文件系统篇
linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是 ...
- NFS(网络文件系统)
NFS(网络文件系统) 1.关于NFS介绍 1.1NFS在企业中的应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放 ...
随机推荐
- Day2-VIM(三):删除
字符删除 x 删除光标所在处字符 X 删除光标所在前字符 这里没有什么可注意的地方,但需要说明一下的是 通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的 如果是头几天使用还好说,但 ...
- 机器学习:模型泛化(LASSO 回归)
一.基础理解 LASSO 回归(Least Absolute Shrinkage and Selection Operator Regression)是模型正则化的一定方式: 功能:与岭回归一样,解决 ...
- Oracle data guard学习
Oracle data guard学习:三思笔记 Data guard 1data guard结构: data guard是一个集合,由一个primary数据库(生产数据库)和一个或多个standby ...
- 【转】onclick事件与href='javascript:function()'的区别
href='javascript:function()'和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:fun ...
- Java中自动装箱代码初探
<深入理解Java虚拟机>中讲语法糖时,提到了下面这个例子(不是原文中的例子,我自己改过): public class AutoBoxingTest { /** * @param args ...
- C#引用类库时出现黄色三角加感叹号的处理
C#引用类库时出现黄色三角加感叹号的处理方法 一个C#项目 在引用中有个引用项上有个黄色三角加感叹号 导致报错 类库的目标框架不一致,修改成一样就可以了. 选中类库右击属性:“目标框架”,修改成与引用 ...
- jquery-messager-消息提示
一.页面引入 jquery.js 下载地址问度娘 jquery-message.js 下载地址:jquery-message.js 二.页面使用 //ajax轮询检查新的订单 function che ...
- JavaScript Array.map
Array.prototype.map() History Edit This article is in need of a technical review. Table of Contents ...
- checked多选,取消,反选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- sys模块 进度条百分比
用于提供对Python解释器相关的操作: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) ...