NFS服务的代码解析

时间:2022-06-03 11:54:46 其他范文 收藏本文 下载本文

NFS服务的代码解析(锦集6篇)由网友“kimmy”投稿提供,以下是小编帮大家整理后的NFS服务的代码解析,仅供参考,希望能够帮助到大家。

NFS服务的代码解析

篇1:NFS服务的代码解析

NFS服务是网络中非常常见的一类文件管理协议,对于这方面的设置,我们在之前的文章中也有所介绍。那么今天,主要分析一下,在配置过程中的命令使用,对于 命令代码我们来进行一下具体的讲解。

服务器端配置

1 创建共享目录

#mkdir/home/share #chownnobody.nogroup/home/share

2 创建或修改/etc/exports 配置文件

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

其中参数是可选的,当不指定参数时,nfs将使用默认选项.默认的共享选项是 sync,ro,root_squash,no_delay.当主机名或IP地址为空时,则代表共享给任意客户机提供服务.当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

下面是一些NFS共享的常用参数:

ro只读访问 rw读写访问 sync所有数据在请求时写入共享 asyncNFS在写入数据前可以相应请求 secureNFS通过1024以下的安全TCP/IP端口发送 insecureNFS通过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_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squasroot用户具有根目录的完全管理访问权限 anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx指定NFS服务器/etc/passwd文件中匿名用户的GID

配置文件/etc/exports内容如下:

$cat/etc/exports /home/share192.168.102.15(rw,sync)*(ro)

配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限.

3 重启NFS服务

#/etc/init.d/nfs-kernel-serverrestart

4 在客户机上查看NFS的资源共享情况

#showmount-e192.168.102.47 Exportlistfor192.168.102.47: /home/share(everyone)

5 使用mount命令即可挂栽共享资源

在客户机 192.168.102.15 上加载共享资源

#mount192.168.102.47:/home/share/mnt #cd/mnt #echo'12345'>123 即可发现对服务器共享目录可写 #umount/mnt 在客户机192.168.102.61上加载共享资源 #mount192.168.102.47:/home/share/mnt #cd/mnt #ls 123 #touch321 touch:cannottouch`321':Permissiondenied #echo'123455'>123 -bash:123:Permissiondenied

即可发现对服务器共享目录只有读取权限,这与我们在服务器端的权限设置是相符的.是不是我们每次修改了配置文件都需要重启nfs服务呢? 这个时候我们就可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效.

比如:

#exportfs-au卸载所有共享目录 #exportfs-rv重新共享所有目录并输出详细信息

exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看:

man exportfs

中文的手册说明可以查看这里:当完成资源共享, 我们如何知道发布了哪些权限呢?这时我们可以查看 /var/lib/nfs/etab 文件,它是有 exportfs 命令根据 /etc/exports 生成的.

#cat/var/lib/nfs/etab /home/share192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) /home/share*(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)

现在我们来查看服务器上有关NFS服务器启动了哪些端口:

tonybox:/home/share#lsof-i|greprpc portmap1931daemon3uIPv44289UDP*:sunrpc portmap1931daemon4uIPv44290TCP*:sunrpc(LISTEN) rpc.statd3206statd3uIPv47081UDP*:1029 rpc.statd3206statd6uIPv47072UDP*:838 rpc.statd3206statd7uIPv47085TCP*:1031(LISTEN) rpc.mount3483root6uIPv47934UDP*:691 rpc.mount3483root7uIPv47937TCP*:694(LISTEN)

篇2:NFS配置的具体代码

NFS是文件系统,在网络中起到了很重要的作用,下面我们就来介绍一下NFS配置的具体代码。希望文中介绍的内容面,能让大家对NFS文件系统(nfs file system )的配置有所了解。

相应NFS配置文件

/etc/dfs/dfstab;(nfs server)

例如:

#vi/etc/dfs/dfstab share-Fnfs-orw=engineering-d“homedirs”/export/home share-Fnfs-oro-d“appdirs”/export/app share-Fnfs-oro-d“mandirs”/usr/share/man /etc/vfstab;(nfsclient) #vi/etc/vfstab i2:/export/home-/export/homenfs-yessoft,bg i2:/export/app-/export/appnfs-yessoft,bg i2:/usr/share/man-/usr/share/mannfs-yessoft,bg rw|ro,bg|fg,soft|hard,intr|nointr,suid|nosuid,timeo=ndefault=11x.1sec,retry=n1k.

相应系统进程

mountd nfsd statd lockd

NFS配置相关命令

share,

例如:

#share-Fnfs/export/home #share-Fnfs-oro/usr/share/man unshare, shareall, unshareall; mount

例如:

#mountnfsserver:/export/home/export/home #mountnfsserver:/export/app/export/app #mountnfsserver:/usr/share/man/usr/share/man umount, mountall, umountall, dfshareshost, dfmounts /etc/init.d/nfs.server;/etc/init.d/nfs.client

例如:

#/etc/init.d/nfs.serverstart

篇3:NFS挂载脚本的代码打造

今天们主要讲解一下NFS挂载脚本的内容,这个在监控系统中是常见的问题。那么具体的nagios监控脚本是监控NFS是否被挂载上的脚本信息,让们从下文来了解一下吧。先说下写这个NFS挂载脚本的初衷吧,事情还是因为上次网络部调整服务器机柜位置引起的,当时自信满满的认为服务器上已经配置好了自动挂载NFS,所以根本不用担心NFS挂载脚本的情况,当服务器启动恢复后,的nagios给发了一个recovery的邮件,就想当然的认为好了,也就没管。第二天开发人员居然找到,问昨天是不是有两台机器重启了,说是呀,他们就说NFS没有挂载上,当时还很强调说不可能呢,结果手动重启了一下昨天的机器,发现真的没有自动挂载上,让很是郁闷。

没有自动挂载到还不是让人最郁闷,那个已经通过技术问题解决了,郁闷的是有了问题居然不是nagios第一时间通知。由于之前使用的是nagios的check_disk这个脚本,在NFS磁盘有问题,不可读写或空间不足的时候给报过警,但经过测试发现,这个脚本只能监控本地磁盘(包括挂载好的NFS)可用性,而不管是否NFS挂载是否正确了,所以才有了今天这个脚本。

脚本名称:check_nfsmount

脚本作用:

1,检查NFS磁盘是否被挂载

2,报告哪些NFS没有被挂载

使用方法:

1,将需要mount的NFS磁盘写入到fstab,如下

# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3defaults,usrquota,grpquota1 1

LABEL=/boot /boot ext3defaults1 2

tmpfs /dev/shmtmpfs defaults0 0

devpts /dev/ptsdevpts gid=5,mode=620 0 0

sysfs /syssysfs defaults0 0

proc/proc procdefaults0 0

/dev/VolGroup00/LogVol01 swapswapdefaults0 0

192.168.211.129:/home/tst /data/tst nfs defaults0 0

192.168.211.129:/home/tst02 /data/tst02 nfs defaults0 0

192.168.211.129:/home/tst03 /data/tst03 nfs defaults0 0

2,将脚本nagios安装目录的libexec下,并赋予可执行权限

3,配置nrpe配置文件,添加相应的command

4,nagios监控机上添加相应的服务

NFS挂载脚本内容:

#!/bin/bash #VERSION=“1.0”#AUTHORbywenzizone.cn ./usr/local/nagios/libexec/utils.sh CHECKNAME=“MountNFS”RESULT=“”EXIT_STATUS=$STATE_OK NFSFSTAB=`LC_ALL=Cawk'!/^#/&&$3~/^nfs/&&$3!=“nfsd”&&$4!~/noauto/{print$1}'/etc/fstab` NFSMTAB=`LC_ALL=Cawk'$3~/^nfs/&&$3!=“nfsd”&&$2!=“/”{print$1}'/proc/mounts` theend{ echo$RESULT exit$EXIT_STATUS } CHECK_MOUNT(){ LIST=“”forlistin$NFSFSTAB do NFS_MOUNT=$(LC_ALL=Ccat/proc/mounts|cut-d“”-f1|grep“${list}$”) if;then LIST=“$LIST$list”fi done return$LIST } if;then if;then RESULT=“$CHECKNAMEOK-NFSBEMOUNTEDPROPERLY”EXIT_STATUS=$STATE_OK else CHECK_MOUNT RESULT=“$CHECKNAMEWARNING-${LIST}NOTBEMOUNTED”EXIT_STATUS=$STATE_WARNING fi else RESULT=“$CHECKNAMECRITICAL-ALLNFSNOTBEMOUNTED”EXIT_STATUS=$STATE_CRITICAL fi theend

对于NFS挂载脚本中还没有考虑到的还希望各位指出,

篇4:NFS故障的解析和处理

日常的工作和学习中,我们使用的一些系统以及相应的操作中,难免会遇到一些故障问题,那么对于NFS故障的分析和解决我们在下文中为大家做了具体的分析和处理,希望本文的总结对您处理问题能够有所帮助。

NFS故障1、NFSD没有启动起来

首先要确认 NFS 输出列表存在,否则 nfsd 不会启动.可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件.

NFS故障2、 mountd 进程没有启动

mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应.mountd进程通过查找 /etc/xtab文件来获知哪些文件系统可以被远程客户端使用.另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表.查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:

1000051udp1039mountd 1000051tcp1113mountd 1000052udp1039mountd 1000052tcp1113mountd 1000053udp1039mountd 1000053tcp1113mountd

如果没有起来的话可以检查是否安装了PORTMAP组件.

rpm -qa|grep portmap

NFS故障3、fs type nfs no supported by kernel

kernel不支持nfs文件系统,重新编译一下 KERNEL就可以解决.

NFS故障4、 can't contact portmapper: RPC: Remote system error - Connection refused

出现这个错误信息是由于SEVER端的PORTMAP没有启动.

NFS故障5、 mount clntudp_create: RPC: Program not registered

NFS没有启动起来,可以用 showmout -e host命令来检查NFS SERVER是否正常启动起来.

NFS故障6、mount: localhost:/home /test failed, reason given by server: Permission denied

这个提示是当 client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录.解决方法当然是去修改NFS SERVER咯.

NFS故障7、被防火墙阻挡

这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开.而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查 TCP_Wrappers的设定.

篇5:NFS协议的版本解析

对于网络协议来说,随着网络的不断扩展和发展,也跟进着新的版本,那么对于NFS协议来说都有哪些版本呢?下面我们就来详细分析一下,具体的NFS协议版本都有哪些。来看看各NFS协议版本的主要区别。

V3相对V2的主要区别:

1、文件尺寸

V2最大只支持32BIT的文件大小(4G),而NFS协议的V3新增加了支持 64BIT文件大小的技术.

2、文件传输尺寸

V3没有限定传输尺寸,V2最多只能设定为8k,可以使用 -rsize and -wsize 来进行设定.

3、完整的信息返回

V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处.

4、增加了对TCP传输协议的支持

V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持

*5、异步写入特性

6、改进了SERVER的mount性能

7、有更好的 I/O WRITES 性能.

9、更强网络运行效能,使得网络运作更为有效.

10、更强的灾难恢复功能.

异步写入特性(v3新增加)介绍:

NFS协议的V3版本能否使用异步写入,这是可选择的一种特性.NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的).服务器能确定何时去写入数据或者将多个写入请求聚合到一起并加以处理,然后写入.客户端能保持一个数据的copy以防万一服务器不能完整的将数据写入.当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整.异步写入能够使服务器去确定最好的同步数据的策略.使数据能尽可能的同步的提交何到达.与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡).而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求.

V4相对V3的改进:

1:改进了INTERNET上的存取和执行效能

2:在协议中增强了安全方面的特性

3:增强的跨平台特性

篇6:解析:NFS服务端配置命令

在NFS服务的设置中,我们可以发现需要两方面的调整,一方面是服务器端,一方面是客户端的设置和使用。那么针对这些内容,我们首先来看看服务器端配置的具体说明。看看对NFS服务的一些建设操作的具体步骤是什么样子的。

服务器端配置

1 创建共享目录

#mkdir/home/share #chownnobody.nogroup/home/share

2 创建或修改/etc/exports 配置文件

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

其中参数是可选的,当不指定参数时,nfs将使用默认选项.默认的共享选项是 sync,ro,root_squash,no_delay.当主机名或IP地址为空时,则代表共享给任意客户机提供服务.当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

下面是一些NFS共享的常用参数:

ro只读访问 rw读写访问 sync所有数据在请求时写入共享 asyncNFS在写入数据前可以相应请求 secureNFS通过1024以下的安全TCP/IP端口发送 insecureNFS通过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_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squasroot用户具有根目录的完全管理访问权限 anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx指定NFS服务器/etc/passwd文件中匿名用户的GID

配置文件/etc/exports内容如下:

$cat/etc/exports /home/share192.168.102.15(rw,sync)*(ro)

配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限.

3 重启NFS服务

#/etc/init.d/nfs-kernel-serverrestart

4 在客户机上查看NFS的资源共享情况

#showmount-e192.168.102.47 Exportlistfor192.168.102.47: /home/share(everyone)

5 使用mount命令即可挂栽共享资源

在客户机 192.168.102.15 上加载共享资源

#mount192.168.102.47:/home/share/mnt #cd/mnt #echo'12345'>123 即可发现对服务器共享目录可写 #umount/mnt 在客户机192.168.102.61上加载共享资源 #mount192.168.102.47:/home/share/mnt #cd/mnt #ls 123 #touch321 touch:cannottouch`321':Permissiondenied #echo'123455'>123 -bash:123:Permissiondenied

即可发现对服务器共享目录只有读取权限,这与我们在服务器端的权限设置是相符的.是不是我们每次修改了配置文件都需要重启nfs服务呢? 这个时候我们就可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效.

比如:

#exportfs-au卸载所有共享目录 #exportfs-rv重新共享所有目录并输出详细信息

exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看:

man exportfs

中文的手册说明可以查看这里:当完成资源共享, 我们如何知道发布了哪些权限呢?这时我们可以查看 /var/lib/nfs/etab 文件,它是有 exportfs 命令根据 /etc/exports 生成的.

#cat/var/lib/nfs/etab /home/share192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) /home/share*(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)

现在我们来查看服务器上有关NFS服务器启动了哪些端口:

tonybox:/home/share#lsof-i|greprpc portmap1931daemon3uIPv44289UDP*:sunrpc portmap1931daemon4uIPv44290TCP*:sunrpc(LISTEN) rpc.statd3206statd3uIPv47081UDP*:1029 rpc.statd3206statd6uIPv47072UDP*:838 rpc.statd3206statd7uIPv47085TCP*:1031(LISTEN) rpc.mount3483root6uIPv47934UDP*:691 rpc.mount3483root7uIPv47937TCP*:694(LISTEN)

分布式工作总结范文

Android软件工程师个人简历

NFS服务器安全的解析和解决

SA399第四章读书笔记Windows系统

arthur诊断故事第一集vol的故事Windows系统

Linux不完全手册

联想面试笔试题

解读WindowsXP系统的各项服务

JAVA WEB面试笔试题

笔试题IP协议

NFS服务的代码解析
《NFS服务的代码解析.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【NFS服务的代码解析(锦集6篇)】相关文章:

分布式文件系统 Gfarm2024-02-12

内核完全注释1makefileUnix系统2022-04-30

脚本范文2022-04-29

TCP/IP详解之IP协议ARP协议和RARP协议2022-05-07

软件工程师优秀简历2022-08-03

Linux UDP反弹shell脚本脚本安全2023-07-02

0202 日的学习内容Windows系统2023-04-22

个人简历范文软件2022-12-18

个人嵌入式学习总结2024-04-30

Linux常用命令及与vi、gdb这两个命令的运用2022-10-05

点击下载本文文档