一、nfs简介

nfs(network file system)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。

nfs主要适用用linux与Unix系统间文件共享,由于是nfs是明文传输,无法加密,而且只能基于IP认证,所以一般用于公司或校园的局域网。

nfs的优点就是能大量节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,而且访问的时候就跟访问自己的家目录一样方便,而且数据同步非常稳定、迅速。

nfs是运行在应用层的协议,监听于2049/tcp端口和2049/udp套接字。

二、nfs的组成

nfs可以由一台nfs服务器和N台客户机组成

客户机通过tcp/ip协议网络远程访问存放在NFS服务器上的数据

在nfs服务器正式启用前,根据实际环境和需求,配置一些nfs参数

三、nfs的应用场景

多个机器共享一台CDROM或其他设备,这样比多台机器都装一台CDROM方便的多

大型局域网内,配置一台NFS服务器用于放置所有用户的home目录,不管你周围局域网哪台工作站上登录,都是同一目录,能给工作带来极大的方便

不同客户端如果通过NFS观看影视文件,能节省大量本地空间

在客户端完成的工作数据,可以备份到NFS服务器上自己的路径下

四、nfs的工作原理

nfs是通过rpc(远程过程调用协议)来实现网络文件系统共享的,rpc是通过网络从远程计算机上请求服务器,不需要通过底层网络技术的协议

nfs服务器端运行了四个进程:

nfsd

mountd

idmapd

portmapper

idmapd       ----实现用户账号的集中映射,把所有的账号都映射成NFSNOBODY,但在访问时却能以本地用户访问,所以需要目录的权限

mountd       ----用户验证客户端是否在允许访问此NFS文件系统的客户端列表中,在就允许访问

nfsd            ----nfs的守护进程,监听在2049端口上

portmapper ---nfs服务器的rpc服务,监听在111端口,用于管理远程过程调用

举个例子说明工作过程:

客户机A想查看file文件的信息,此信息存储在远程NFS服务器端主机B(挂载在本地目录/nfs中),A把查看文件信息的请求发给内核,内核通过NFS模块明白是远程主机B上的,内核通过RPC协议吧请求封装成rpc请求通过tcp111端口发给主机B的portmapper,portmapper告诉A主机B主机的mountd服务所在端口,然后A去找mountd请求验证,mountd看他有的允许列表,如果A在表内,就给一个令牌给A,A拿着这个令牌去找B主机的nfsd进程,请求查看需要的文件,B主机的nfsd进程发起本地调用,向B内核请求查看主机A要查看的文件信息,B内核执行系统调用,将结果返回给nfsd服务,nfsd服务器收到后将结果封装成rpc请求报文并用过tcp/ip协议发给主机A

五、配置文件

nfs的主配置文件是/etc/exports,此文件定位NFS系统的输出目录(共享目录),访问权限参数,允许访问的主机参数,该文件默认为空,文件每一行提供一个共享目录的使者,其格式为

《共享目录》 【 客户端1IP(权限参数)】 【客户端2IP(权限参数)】

共享目录为你想要共享出去的目录绝对路径

客户端ip为你想共享给哪些或哪个主机

权限参数为用户访问的权限,用户映射的选项

exportfs  -r 重读配置文件,使其立即生效,无需重启服务

访问权限选项:

访问权限选项 说明
ro 设置输出目录只读
rw 设置输出目录可读写

用户映射选项:

用户映射选项 说明
all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
no_all_squash 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
root_squash 将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash 不将root用户及所属用户组都映射为匿名用户或用户组
anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该匿名用户为本地用户帐户(UID=xxx)
anongid=xxx 将远程访问的所有用户组都映射为匿名用户组,并指定该匿名用户组为本地用户组(GID=xxx)

常用的其他选项:

其他选项 说明
secure 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
insecure 允许客户端从大于1024的TCP/IP端口连接NFS服务器
sync 将数据同步写入内存缓冲区或磁盘中,效率较低,但可保证数据一致性
async 将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay 检查是否有相关的写操作,如果有则这些写操作一起执行,可提高效率(默认设置)
no_wdelay 若有写操作则立即执行,应与sync配置使用
subtree_check 若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
no_subtree_check 即使输出目录是一个子目录,NFS服务亦不检查其父目录的权限,可提高效率
nohide 若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项

六、nfs使用:

nfs安装

yum -y install rpcbind nfs-utils

启动服务

systemctl  start rpcbind nfs-server

shoumount命令测试共享目录状态

-a  显示指定NFS服务器的所有客户端主机及其所连接的目录

-d  显示指定NFS服务器的已被客户端连接的所有输出目录

-e显示指定NFS服务器的所输出的共享目录

客户端临时挂载NFS文件系统

yum install rpcbind nfs-utils -y

mount -t nfs  ip:/path1    /path2

客户端设置自动挂载nfs

vim /etc/fstab

ip/path   /path2  nfs defaults,_netdev  0 0

mount -a

df -h

检查输出目录所使用的选项:
在配置文件/etc/exports中,即使在命令行中只设置了一两个选项,但在真正输出目录时,实际上还带有很多默认的选项。通过查看/var/lib/nfs/etab文件,可以看到具体使用了何选项

七、NFS使用实例:

1.手动搭建一个nfs服务器
开放/nfs/shared目录,供所有用户查阅资料
开放/nfs/upload目录为172.16.12.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300

服务器端
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum install rpcbind nfs-utils
mkdir /nfs
chmod 775 /nfs
groupadd -g 300 nfs-upload
useradd -u 300 -g 300 nfs-upload
echo " /nfs 172.16.12.0/24(ro,all-squash,root_squash,anonuid=300,anongid=300,sync)" > /etc/export
systemctl start rpcbind nfs-server
systemctl enable nfs-server
systemctl enable rpcbind
exportfs -r

客户端

mkdir /nfs
mount -t nfs 192.168.160.46:/data/nfs /nfs

或
vim /etc/fstab
192.168.160.46:/data/nfs /nfs nfs defaults,_netdev 0 0

mount- a
df -h

Linux----------nfs服务器的搭建及常识的更多相关文章

  1. 自学linux——21. NFS服务器的搭建

    NFS服务器的搭建 1.NFS的认识 NFS(Network File System即网络文件系统)服务最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享文件,可以将远程 Linu ...

  2. 4、nfs服务器的搭建

    4.1.nfs服务介绍: samba服务器一般互联网企业不会使用 nfs服务的端口是不固定的,需要先启动rpc服务对nfs服务端口进行注册 4.2.安装nfs: rpm -qa nfs-utils r ...

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

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

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

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

  5. Linux NFS服务器搭建

    1.NFS:NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.   在NFS的应用中,本地N ...

  6. Linux下NFS服务器的搭建与配置

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  7. Linux下NFS服务器的搭建与配置(转载)

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  8. Linux下NFS服务器的搭建与配置(转)

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  9. 4412开发板学习笔记-NFS服务器的搭建

    转自iTOP-4412讨论群: http://www.topeetboard.com 先来介绍一下NFS: NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件 ...

随机推荐

  1. GC 是什么? 为什么要有GC?

    C/C++中由程序员进行对象的回收像学校食堂中由学生收盘子,.Net 中由GC 进行垃圾回收像餐馆中店员 去回收. GC 是垃圾收集器(Garbage Collection).程序员不用担心内存管理, ...

  2. mongo-2ds索引对超过半球范围的适用性测试

    以下测试均基于mongo v4.0 win10 一.GeoJSON GeoJSON是一种基于json的经纬度描述数据格式.在这里主要服务于2dsphere索引查询. 基本格式  <type:&q ...

  3. 贝塞尔(Bezier) 曲线 研究

    贝塞尔曲线最近经常接触到,今天研究了一下. 原理 关于它的原理,网上有很多. 1.一阶 2.二阶 3.多阶 可以看到,多阶可以慢慢降阶为一阶贝塞尔曲线. //一阶 private Vector3 Ba ...

  4. sprite kit -- 从入门到淡定

    非常有趣的事情是接触到spritekit 真正认识他才会发现游戏开发在iOS端是如此便捷,LearnSpriteKitFromScratch 这本书详细到令人发指,入门好书.值得阅读.

  5. TCP 总结

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. [TCP连接的特点] [ref ...

  6. 今日bug:error: invalid array assignment

    错误代码: struct STUD { int ID;//学号 ]; float score; }stud; STUD SS[]; student.open("student.dat&quo ...

  7. 类 __getitem__ __getattr__ __call__

    __getitem__ 实例虽然能作用于for循环,看起来和list有点像,但是,把它当成list来使用还是不行,要表现得像list那样按照下标取出元素,需要实现__getitem__()方法 __g ...

  8. ionic 3.0中使用原生插件ionic-native

    作为一个ionic的新手,今天使用了ionic的原生粘贴板插件  @ionic-native/clipboard,根据ionic官方文档上执行的命令 $ ionic cordova plugin ad ...

  9. python之路之简单介绍:

    python介绍: a. python 基础 - 基础 - 基本的数据类型 - 函数 - 面向对象 python 安装 python 安装在os上 执行操作: 写一个文件,文件中按照python规则写 ...

  10. format() expandtabs() 输入表格数据

    1 输入表格数据 format(self, *args, **kwargs): # known special case of str.format """ S.form ...