配置nfs 服务器

简介:

NFS:Network file system,网络文件系统.由sun公司1984年推出,用来在网络中的多台计算机间实现资源共享(包括象文件或cd-rom).设计的目的是:实现在不同系统间交互使用,所以它的通信协议采用与主机和操作系统无关的技术
NFS Server可以看作是File Server,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样.

 


一 服务端配置文档

$ cat /etc/exports

 
  1. /data/storage/bbs 10.10.100.0/24(rw,sync) 
  2.  
  3. 格式如下 
  4. #[共享目录]   [主机/网络](权限) []()多个 


1 共享目录属性
ll /data/storage/bbs/ | awk '/^d/ {print $1,$2,$3,$4}'

 
  1. drwxr-xr-x 6 www www 
  2. drwxr-xr-x 13 www www 
  3. drwxr-xr-x 2 www www 
  4. drwx------ 4 www www 
  5. drwxr-xr-x 10 www www 
  6. drwxr-xr-x 11 www www 
  7. drwxr-xr-x 313 www www 
  8. drwxr-xr-x 241 www www 
  9. drwxr-xr-x 276 www www 
  10. drwxr-xr-x 9 www www 
  11. drwxr-xr-x 121 www www 

注意:文件夹属主属组与权限,与客户端相同

2 授权的主机或网络

 
  1. 可以使用完整的IP 或者是网络,例如10.10.100.10 或10.10.100.0/24 ,也可以使用主机名称,
  2. 但这个主机名称必须要在/etc/hosts 内,或者使用DNS 找到该名称 

3 权限详解
参数值 内容说明

 
  1. ro | rw 
  2. 该目录分享的权限是可读写(read-write) 或只读(read-only),但最终能不能读写,还是与档案系统的rwx 及身份有关。 
  3. sync | async sync 
  4. 代表资料会同步写入到内存与磁盘中,async 则代表资料会先暂存于内存当中,而非直接写入磁盘! 
  5. no_root_squash | root_squash | all_squash 
  6. 用户端使用NFS系统的帐号若为root 时,系统该如何判断这个帐号的身份?预设的情况下,
  7. 用户端root 的身份会由root_squash 的设定压缩成nfsnobody, 如此对伺服器的系统会较有保障。
  8. 但如果你想要开放用户端使用root 身份来操作伺服器的档案系统,那么这里就得要开no_root_squash 才行,
  9. all_squash 不论登入NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody(nfsnobody) 
  10. anonuid | anongid 
  11. anon 意指anonymous (匿名者) 前面关于*_squash 提到的匿名使用者的UID 设定值,通常为nobody(nfsnobody),
  12. 但是你可以自行设定这个UID 的值!当然,这个UID 必需要存在于你的/etc/passwd 当中! anonuid 指的是UID 而anongid 则是群组的GID。 

注意:若是多个权限,则以逗号 "," 分开

4 启动nfs

 
  1. $ /etc/init.d/nfs start 
  2. $ /etc/init.d/nfslock start 

5 验证 nfs 服务器
$ netstat -antulp | grep -E '2049|rpc'

 
  1. tcp        0      0 0.0.0.0:896                 0.0.0.0:*                   LISTEN      15980/rpc.rquotad   
  2. tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      -                   
  3. tcp        0      0 0.0.0.0:910                 0.0.0.0:*                   LISTEN      15995/rpc.mountd    
  4. tcp        0      0 0.0.0.0:628                 0.0.0.0:*                   LISTEN      16134/rpc.statd     
  5. tcp        0      0 10.0.100.71:2049            10.0.100.82:680             ESTABLISHED -                   
  6. tcp        0      0 192.168.57.71:2049          192.168.57.92:982           ESTABLISHED -                   
  7. udp        0      0 0.0.0.0:2049                0.0.0.0:*                               -                   
  8. udp        0      0 0.0.0.0:907                 0.0.0.0:*                               15995/rpc.mountd    
  9. udp        0      0 0.0.0.0:622                 0.0.0.0:*                               16134/rpc.statd     
  10. udp        0      0 0.0.0.0:625                 0.0.0.0:*                               16134/rpc.statd     
  11. udp        0      0 0.0.0.0:893                 0.0.0.0:*                               15980/rpc.rquotad  

注意:2049为nfs监听端口



二 客户端

0 启动rpcbind/portmap 服务

 
  1. /etc/init.d/rpcbind  #rhel6.x 
  2. /etc/init.d/portmap #rhe5.x 


1 挂载nfs服务器

 
  1. # mount -t nfs -o nosuid,noexec,nodev,rw -o bg,soft,rsize=32768,wsize=32768 10.10.100.77:/data/storage/bbs/ /storage/ 

2 客户端挂载参数
参数  意义

 
  1. suid | nosuid 
  2. 如果挂载的partition 上面有任何SUID 的binary 程式时, 你只要使用nosuid 就能够取消SUID 的功能 
  3. rw | ro 
  4. 你可以指定该档案系统是只读(ro) 或可读写!伺服器可以提供给你可读写,用户端可以仅允许只读的参数设定值 
  5. dev | nodev 
  6. 是否​​保留装置档案的特殊功能 
  7. exec | noexec 
  8. 是否具有执行binary file 的权限 
  9. user | nouser 
  10. 是否允许使用者进行档案的挂载与卸载功能 
  11. fg |bg 
  12. 当执行挂载时,该挂载的行为会在前台(fg) 还是在后台(bg) 执行;若在前台执行时,则mount 会持续尝试挂载,直到成功或time out 为止,若为后台执行, 则mount 会在背持续多次进行mount ,而不会影响到前景的程序操作。 
  13. soft | hard 
  14. 如果是hard 的情况,则当两者之间有任何一部主机离线,则RPC 会持续的呼叫,直到对方恢复连线为止。如果是soft 的话,那RPC 会在time out 后重复呼叫,而非持续呼叫, 因此系统的延迟会比较不这么明显。 
  15. intr 
  16. 当你使用上头提到的hard 方式挂载时,若加上intr 这个参数, 则当RPC 持续呼叫中,该次的呼叫是可以被中断的(interrupted)。 
  17. rsize | wsize 
  18. 读出(rsize)与写入(wsize)的区块大小(block size)。这个设定值可以影响用户端与NFS服器端传输资料的缓冲记忆容量。 

3 client端 系统中的www用户

 
  1. www:x:5000:5000::/home/www:/sbin/nologin 

4 apache 用户与组

 
  1. <IfModule !mpm_netware_module> 
  2. <IfModule !mpm_winnt_module> 
  3. User www 
  4. Group www 
  5. </IfModule> 
  6. </IfModule> 

5 clinet端 挂载点属性
ll /storage/ | awk '/^d/ {print $1,$2,$3,$4}'

 
  1. drwxr-xr-x 6 www www 
  2. drwxr-xr-x 13 www www 
  3. drwxr-xr-x 2 www www 
  4. drwx------ 4 www www 
  5. drwxr-xr-x 10 www www 
  6. drwxr-xr-x 11 www www 
  7. drwxr-xr-x 313 www www 
  8. drwxr-xr-x 241 www www 
  9. drwxr-xr-x 276 www www 
  10. drwxr-xr-x 9 www www 
  11. drwxr-xr-x 121 www www 

注意:文件夹属主属组与权限,与服务端相同



三 维护 NFS 
1 nfs 使用的协议与端口

 
  1. grep -E '^nfs.*nfsd$' /etc/services 
  2. nfs        2049/tcp    nfsd 
  3. nfs        2049/udp    nfsd 

2 RPC 使用的端口

 
  1. grep -E 'portmap' /etc/services 
  2. sunrpc        111/tcp        portmapper    # RPC 4.0 portmapper TCP 
  3. sunrpc        111/udp        portmapper    # RPC 4.0 portmapper UDP 

注意:
RPC 是固定使用port 111 来监听端口
RPC 服务的功能就是在指定NFS 服务所对应的port number ,并且反回给用户端,让用户端可以连结到正确的端口上去。
RPC 是如何知道每个NFS 的端口?这是因为当伺服器在启动NFS 时会随机取用数个端口,并主动的向RPC 注册,因此RPC 可以知道每个端口对应的NFS。

3 命令

 
  1. 服务端重新挂载nfs 
  2. exportfs -arv 
  3. 服务端卸载全部nfs 
  4. exportfs -auv 
  5. 服务端|客户端 显示nfs共享目录 
  6. showmount -e [ip] 



扩展
NFS 的长连接

 
  1. 显示NFS 共享目录 
  2. $ showmount -e 
  3. Export list for one.test.com: 
  4. /data/iso         10.0.100.0/24,192.168.57.0/24 
  5. /data/htdocs/8080 10.0.100.0/24,192.168.6.0/24 
  6.  
  7. 査看与NFS绑定的连接 
  8. $ netstat -antulp | grep 2049 
  9. tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      -                   
  10. tcp        0      0 192.168.57.71:2049          192.168.57.92:984           ESTABLISHED -                   
  11. udp        0      0 0.0.0.0:2049                0.0.0.0:*                               -     
  12.  
  13. 当客户端挂载NFS 后,客户端就与服务端保持连接状态"ESTABLISHED",如果几百个NFS客户端,
  14. 嘿嘿 不过如果在挂载时使用bg参数使用后台,则会在没有数据时释放连接。 

 

#update 20120716 结合nfs client 与 web 服务器

//统一权限以www用户与组为准

 
  1. 1 nfs server 共享目录的权限 www
  2.  
  3. grep -i 'www' /etc/passwd 
  4. www:x:501:501::/home/www:/sbin/nologin 
  5.  
  6. ll /data/ | grep www 
  7. drwxr-xr-x 3 www      www       4096 Jul 16 11:05 www 
  8.  
  9. grep -i 'www' /etc/exports 
  10. /data/www/bbs/ 10.0.100.0/24(rw,sync) 
  11.  
  12.  
  13. 2 nfs client 端拥有相同的uid/gid (用户与组) 
  14. grep -i 'www' /etc/passwd 
  15. www:x:501:501::/home/www:/sbin/nologin 
  16.  
  17.  
  18. 3 nfs client 端 web 服务器使用www用户与组 
  19. //以nginx 为例 
  20. user  www www; 

#

 
  1. chkconfig --list | grep -E 'nfs|port|rpc.*3:on' 
  2. nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
  3. nfslock         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
  4. rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off 



参考
http://linux.vbird.org/linux_server/0330nfs.php

#update 20121009

使用 NFS时请先将rpcbind 服务启动,rhel5/centos5 系列为 portmap 服务,rhel6/centos6 系列为 rpcbind 服务

NFS Server

 
  1. chkconfig --list | grep -E 'nfs|portmap|rpcbind' 
  2. nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off 
  3. nfslock         0:off   1:off   2:on    3:on    4:on    5:on    6:off 
  4. portmap         0:off   1:off   2:on    3:on    4:on    5:on    6:off 

NFS Client

 
  1. chkconfig --list | grep -E 'nfs|portmap|rpcbind' 
  2. nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
  3. nfslock         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
  4. rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off 

 

#update 20121010

什么是RPC?Remote Procedure Call,远程过程调用
因为NFS支援的功能相当,而不同的功能都会使用不同的程式启动,每启动一个功能就会启用一些传输资料,因此NFS的功能对应口才没有固定,而随机取用一些未被使用的小于1024因为用户端得要知道伺服器端的相关埠口才能够连线吧

此时我们就得需要远端程序呼叫(RPC)的服务啦!RPC最主要功能就是指定每个NFS功能对应端口号,并且回报用户,让用户可以链接到正确的埠口上去RPC如何知道每个NFS呢?是因为伺服器启动NFS时会随机取用数个埠口并主动的RPC注册因此RPC可以知道每个口对应的NFS功能然后RPC固定使用的111端口监听用户的需求回报用户正确的,所以当然可以NFS启动更为轻松愉快了!

1 用户端会向伺服器端的RPC(端口111)发出NFS档案存取功能的询问要求;

2 伺服器端找到对应的已注册的NFS守护进程埠口后,会回报给用户端;

3 用户端了解正确的埠口后,就可以直接与NFS守护进程来连线。

由于NFS的各项功能都必须要向RPC来注册,如此一来RPC才能了解NFS这个服务的各项功能之端口号,PID,NFS在伺服器所监听的IP等等,而用 户端才能够透过RPC的询问找到正确对应的埠口。也就是说,NFS必须要有RPC存在时才能成功的提供服务,因此我们称NFS为RPC服务器的一种。事实 上,有很多这样的伺服器都是向RPC注册的,举例来说,NIS(网络信息服务)也是RPC服务器的一种呢。此外,由图13.1-2你也会知道,不论是用户 端还是伺服器端,要使用NFS时,两者都需要启动RPC才行喔.

 

 

结束
更多请:
linux 相关 37275208
vmware 虚拟化相关  166682360


本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/827766

相关文章
|
8天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
28天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
26天前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
52 3
|
29天前
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
29天前
|
存储 编解码 安全
阿里云服务器2核4G、4核8G、8核16G配置租用收费标准与活动价格参考
通常情况下,个人和一般企业用户在购买阿里云服务器时比较喜欢购买2核4G、4核8G、8核16G等配置,这些配置既能满足各种图文类中小型网站和应用又能满足企业网站应用、批量计算、中小型数据库系统等场景,2核4G配置适合新手入门或初创企业,4核8G与8核16G兼具成本与性能优势,适合通用场景,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
NoSQL Linux PHP
|
7月前
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
165 0
|
7月前
|
Ubuntu 网络协议 Unix
【Linux】新唐NUC977挂载NFS实现网络文件传输
【Linux】新唐NUC977挂载NFS实现网络文件传输
|
7月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
452 0