linux网络文件系统nfs详解(代码片段)

liang-io liang-io     2022-12-31     534

关键词:

什么是文件系统,NFS文件系统又是什么?

简单的说,文件系统就是通过软件对磁盘上的数据进行组织和管理的一种机制,对其的一种封装或透视。

技术分享图片

你女朋友拍了美美的暧昧照片,放一个文件夹里发送给了A服务器,当你来访问的时候,被F5路由给B服务器了,然后你找不到资源了,你女朋友给你闹,你就不性福了哈哈,所以我们很容易想到,是不是可以把文件上传到一个公用的服务器上呢? 这样不管访问的是A还是B,读、取文件都只存在一份。答案是肯定的,这个公用的服务器我们也称之为文件服务器,NFS,Network File System。顾名思义,网络文件系统,即通过网络,对在不同主机上的文件进行共享。

NFS包括两部分,服务端(servlet)及客户端(client)

由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,(pc -ef | egrep nfs 我们可以看到nfs 不同的端口号)那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, (rpc 一定是在nfs启动前,就已经启动了,)那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。

当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件(如果是远程共享文件就都挂载mount 到/etc/init.d/rc.local下面),如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。
为了更好的并发,RPC进程及NFS进程都有多个。

 ps -ef |egrep "rpc|nfs" < #这样我们可以查看到的进程
NFS服务进程启动说明表格
服务(进程名字) 用途说明
nfsd(rpc.nfsd) rpc.nfsd主要功能就是管理NFS客户端是否能够登陆NFS服务器主机(登陆着id判别)
mountd(rpc.mountd) rpc.mountd管理nfs文件系统,当nfs客户端顺利通过rpc.nfsd服务端后,它可以使用NFS服务器提供数据,读取NFS的配置文件/etc/exports来进行文件系统权限比对
rpc.statd 检查文件的一致性
这些进程都可以执行man 进程名 来查看进程的详细功能

 

NFS配置文件

NFS配置文件定义

  NFS的配置文件为 /etc/exports,内容格式如下:
   <共享目录>   客户端1(选项) [客户端2(选项) ...]
   共享目录:NFS共享给客户机的目录。
   客户端 :网络中可以访问此目录的主机。多个客户端以空格分隔。
   选项  :设置目录的访问权限、用户映射等,多个选项以逗号分隔。
   例如:
   /data 192.168.1.0/24(rw,insecure,sync,all_squash,anonuid= 65534,anongid=65534)

NFS配置文件路径

NFS常用路径 说明
/etc/exports NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容是空的
/usr/sbin/exports NFS服务的管理命令
exportfs
  不重启nfs服务应用更新,相关选项如下:
  -a 全部挂载或卸载 /etc/exports中的内容
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。

nfsstat
  查看NFS的运行状态。
 
rpcinfo
  查看rpc服务注册情况。
  相关选项:
  -p 显示所有的端口与程序信息。
  示例:
  rpcinfo -p localhost  #列出本机的RPC注册状况。

showmount
  查询nfs共享目录信息,相关选项如下:
  -a 显示已经于客户端连接上的目录信息
  -e IP或者hostname 显示此IP地址分享出来的目录
 
  示例:
  showmount -e localhost  #查询本机nfs共享目录情况
  showmount -a localhost  #查询本机共享目录连接情况
/usr/sbin/showmount 用来查看客户度那,查看NFS配置及挂载结果的命令
/var/lib/nfs/etab NFS配置文件的完成参数设定的文件

 

 NFS配置参数权限

rw         表示可读写权限。

sync        请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。

async      写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)。

all_squash     不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在生产环境中配置NFS的重要技巧:

              1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,

              2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)

anonuid      参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好

anongid     同anonuid,区别是把uid(用户id)换成gid(组id)

ro         表示只有只读权限

sync是synchronized的缩写,意为同步,async是asynchonous的缩写意为异步,怎么理解同步和异步的,比如:你女朋买了一张票等你下班一起看电影,她会亲自给你电影票然后一起看电影,在比如生产者跟消费者,(要实现这个问题,需要用到多线程,要实现多线程,就需要继承(extend)Thread类,实现Runnable,Future接口并写run方法,,,咳咳咳跑题了)我们常常加同步锁synchronized,这样就是生产一个,消费一个(Linux分为实时同步和定时同步)。异步,在比如生产者跟消费者,生产100个产品,消费者只能消费50个,那么就会把生产者的产品放在超市,消费者就会去超市买东西,

总结NFS服务的配置过程:
--服务端--

1)查看系统版本,并检测有没有安装nfs和rpcbind服务,如果没有安装就执行:

yum install nfs-utils rpcbind -y

技术分享图片

 

2.启动服务(先启动rpcbind)
/etc/init.d/rpcbind start
3.设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
4.配置NFS服务
echo "/data 192.168.1.8/24(rw,sync)"
mkdir -p /data
chown -R nfsnobody.nfsnobody /data

5.重新加载服务

/etc/init.d/nfs reload <#相当于 exportfs -r

 

6.检查或测试挂载
showmount -e localhost
mount -t nfs 192.168.1.8:/data /mnt
--客户端-
1.安装软件
yum install -y nfs-utils rpcbind
2.启动rpcbind
/etc/init.d/rpcbind start
3.配置开机自启动
chkconfig rpcbind on
4.测试服务端共享情况
show -e 192.168.1.8
5.挂载
mkdir -p /data
mount -t nfs 192.168.1.8:/data /tmp
如果客户端没有写权限,就检查共享文件的配置是否是rw权限,检查共享的文件的本身是否是rw 权限(也就是检查/data  ls -li /data 如果不是655 就chmod 655 /data)
常见错误
1.df -h 检查服务端的NFS服务是不是启动成功,
2.确认NFS客户端showmount是否OK。
3.确认rpcbind上是否有NFS注册,(rpcbind必须先启动)
3.确认网络是否通畅
4.确认是否因为防火墙挡住(一般内网不需要开启防火墙,在出口加防火墙就够了)(/etc/init.d/iptables stop/start)

 

linux网络服务——nfs共享存储服务(包含操作详解)(代码片段)

...障解决思路NFS共享存储服务概述NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储... 查看详情

详解nfs-----共享存储服务(代码片段)

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

红帽7nfs(网络文件系统)(代码片段)

NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件, RHEL7系统中默认已经... 查看详情

nfs网络文件系统详解(代码片段)

第1章NFS基本概述1.1什么是nfsNFS是NetworkFileSystem的缩写及网络文件系统。主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似,只不过windows用于局域网,NFS用于企业集群架... 查看详情

nfs详解(代码片段)

1、NFS介绍NFS是NetworkFileSystem的简写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC(RemoteProcedureCall)远程过程调用实现,其允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序就可以像访问... 查看详情

markdown[linux:nfs]linux上的网络文件系统。#linux(代码片段)

查看详情

nfs文件网络共享(代码片段)

@[TOC]NFS文件网络共享简介官网:http://nfs.sourceforge.net/推荐博客:Linux挂载命令mount用法及参数详解光盘或光盘镜像:iso9660DOSfat16文件系统:msdosWindows9xfat32文件系统:vfatWindowsNTntfs文件系统:ntfsMountWindows文... 查看详情

nfs文件网络共享(代码片段)

@[TOC]NFS文件网络共享简介官网:http://nfs.sourceforge.net/推荐博客:Linux挂载命令mount用法及参数详解光盘或光盘镜像:iso9660DOSfat16文件系统:msdosWindows9xfat32文件系统:vfatWindowsNTntfs文件系统:ntfsMountWindows文... 查看详情

nfs文件网络共享(代码片段)

@[TOC]NFS文件网络共享简介官网:http://nfs.sourceforge.net/推荐博客:Linux挂载命令mount用法及参数详解光盘或光盘镜像:iso9660DOSfat16文件系统:msdosWindows9xfat32文件系统:vfatWindowsNTntfs文件系统:ntfsMountWindows文... 查看详情

centos7部署nfs网络文件系统(代码片段)

NFS(NetworkFileSystem),即网络文件系统。NFS服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使用本地主机(Linux客户端)像使用本地资源那样读写远程Linux系统上的共享资源。表1:系统环境主机名称操作... 查看详情

nfs企业级实战应用详解-技术流ken(代码片段)

...篇博文中讲述了samba的实战应用,samba使得window和linux共享文件成为可能。NFS则实现了linux与linux之间的文件共享。2.系统环境  系统版本:centos6.7  服务器IP:10.220.5.166/24  客户端IP:10.220.5.188/243.关闭安全服务[[email protected... 查看详情

linux系统——通过tftp下载zimage和nfs网络方式挂载根文件系统(代码片段)

tftp下载zImage、nfs挂载根文件系统1.nsf、tftp安装和配置1.1nsf1.2tftp2.uboot环境变量配置2.1设置IP2.2设置bootcmd(tftp下载zImage和设备树)2.3设置bootargs(从nfs挂载根文件系统)3.过程梳理所有的热爱都要不遗余力,真正... 查看详情

linux7挂载nfs远程目录(代码片段)

📚前言NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器... 查看详情

linux命令--exportfs命令详解(代码片段)

...要新增、更改某些机器或共享的目录;首先需要更改配置文件,然后重启NFS服务,但如果远程客户端正在使用NFS服务,正在挂载着,如果你需要先停止nfs服务,那远程的客户端就会挂起,就会很大的影响,造成服务异常,进程异... 查看详情

nfs网络文件系统(代码片段)

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

linux搭建nfs开发环境(代码片段)

网络文件系统,英文NetworkFileSystem(NFS),是由SUN公司研制的UNIX表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以在Ubuntu上制作板子需要的文件,然后使用NFS来加载文件到板子... 查看详情

linux(10):期中架构---nfs存储服务(代码片段)

...享存储服务概念:#NFS是NetworkFileSystem的缩写,中文意思是网络文件系统,#它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。2.NFS共享存储服务的应用:#将数据存储到一台服务器上,实现数据... 查看详情

nfs网络文件系统(代码片段)

实验环境:VMwareWorkstationPro14(试用版)系统平台:CentOSLinuxrelease7.4.1708(Core)内核3.10.0-693.el7.x86_64NFS配置介绍软件包nfs-utils端口2049(nfsd),其它端口由rpcbind(111)分配工作过程NFS启动时,会将所使用的端口向rpcbind注册,当有客户端访问... 查看详情