NFS安装

Posted on Posted in linux
Tips: 本文创建于2014年2月20日,已超过 2 年,内容或图片可能已经失效!
  1. nfs = network file system  

> 三个进程

- rpc.nfsd 客户端能否登录服务器
- rpc.mountd 管理nfs文件系统
- portmap 端口分发

> 软件结构

- /etc/exports 主配置文件,无默认值。在某些版本中需要手动建立
- /usr/sbin/exportfs 维护共享资源的命令
- /usr/sbin/showmount 查看共享资源的命令
- /var/lib/nfs/*tab etab完整权限设定值,xtab记录相关客户端数据

  1. rpm -qa | grep nfs  

> 主配置文件的格式exports

  1. [共享目录路径 客户端描述(权限,另一个权限) 另一个客户端(权限,另一个权限)]  
  2.   
  3.   
  4. 客户端描述可以是:  
  5.     IP地址:192.168.1.123  
  6.     host:   www.a.com  
  7.     网段: 192.168.18.0/24  
  8.     域中主机    *.a.com  
  9.     所有主机    *  
  10. 权限:  
  11.     ro              只读  
  12.     rw              读写  
  13.     no_root_squash  登录到nfs主机,使用共享目录的用户,如说是root,对于这个目录就有root的权限  
  14.     root_squash                                     贬成匿名用户(nfsnobody)  
  15.     all_squash  不管是谁,全是匿名用户(nfsnobody)  
  16.     anonuid     指定被贬用户的UID  
  17.     anongid     指定被贬用户的GID  
  18.     sync        资料同步写入到内存和磁盘  
  19.     async       资料先写到内存再写到磁盘  
  20. rpcinfo -p  #查看nfs服务状况  
  21. rpcinfo -u localhost nfs    #服务状态  
  22.   
  23. exportfs                -a  全部在主配置文件中的共享目录  
  24.             -r  重新挂载主配置文件中的共享目录  
  25.             -u  卸载目录  
  26.             -v  显示信息  
  27. showmount               -a  显示服务器客户端的连接状况  
  28.             -e  显示主机有那些共享  
  29.   
  30. service portmap status  
  31. service nfs status  
  32.   
  33. vim /etc/exports  
  34. /tmp    192.168.18.0/24(ro)  
  35. /mnt    192.168.18.0/24(rw)  
  36.   
  37.   
  38.   
  39. /etc/hosts.allow    /etc/hosts.deny  
  40. vim /etc/hosts.deny  
  41. portmap:    192.168.1.123  

客户端连接:

  1. mount   192.168.18.251:/mnt /a  
  2. mount -t nfs 192.168.18.251:/mnt /a (防止出现为识别系统类型)  
  3.   
  4. tmp所有都可读写  
  5.   
  6. /tmp    *(rw,no_root_squash)  
  7.   
  8. home下的share共享  
  9.   
  10. /home/share 192.168.18.0/24(rw) *(ro)  
  11. /home/myfile    192.168.18.100(rw)  
  12. /home/linux     *(rw,all_squash,anonuid=250,anongid=250)  

端口固定:

  1. /etc/sysconfig/nfs  
  2. RQUOTAD_PORT=10001  
  3. LOCKD_TCPPORT=10002  
  4. LOCKD_UDPPORT=10002  
  5. MOUNTD_PORT=1003  
  6. STATD_PORT=1004  
  7.   
  8. service nfs restart  

nfs自动挂载

  1. service autofs status  
  2. /etc/init.d/autofs  
  3. rpm -qf /etc/init.d/autofs  
  4.   
  5. vim /etc/auto.master  
  6. /mnt    /etc/auto.mnt   --timeout=10  

挂载点 挂载点的具体配置文件 超时时间

  1. vim /etc/auto.mnt  
  2. nfs     --fstype=nfs,ro     192.168.18.251:/tmp  
  3. 挂载点目录名称 文件系统类型和权限   共享路径  
  4.   
  5. 等同于===== mount -t nfs -o ro 192.168.18.251:/tmp /mnt/nfs  
  6.   
  7. service autofs restart  
  8. /mnt目录没有nfs,直接进入就有nfs,10秒不用就卸载了  

##########################################################

## server 端

> 检查安装

  1. -> root@c1 ~ ? # rpm -qa | grep nfs  
  2. -> root@c1 ~ ? # rpm -qa | grep rpcbind  
  3. -> root@c1 ~ ? # yum -y install nfs-utils rpcbind  
  4. -> root@c1 ~ ? # rpm -q nfs-utils portmap  
  5. nfs-utils-1.2.3-64.el6.x86_64  
  6. package portmap is not installed  

> 软件结构

- /etc/exports nfs的配置文件
- /usr/sbin/exportfs nfs系统维护指令
- /var/lig/nfs/*tab 分享资源的登录文档
- /usr/sbin/showmount 查看分享资源的指令

> 配置

  1. -> root@c1 ~ ? # vim /etc/exports  
  2. /data/nfsdir    192.168.36.0/23(rw,sync,no_root_squash,no_subtree_check,anonuid=65534,anongid=65534)  

- rw 读写权限
- sync 数据实时同步
- no_root_squash 防止客户端没有权限修改,出现Permission denied
- no_subtree_check 不检查目录权限,提高数据读取效率
- 65534代表nfsnobody用户,打开/etc/passwd查找
- 65534代表nfsnobody组

  1. -> root@c1 ~ ? # vim /etc/sysconfig/nfs   
  2. RQUOTAD_PORT=875  
  3. LOCKD_TCPPORT=32803  
  4. LOCKD_UDPPORT=32769  
  5. MOUNTD_PORT=892  
  6. STATD_PORT=1001  
  7. STATD_OUTGOING_PORT=1004  

> 防火墙

  1. vi /etc/sysconfig/iptables  
  2. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT  
  3. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT  
  4. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT  
  5. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT  
  6. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT  
  7. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT  
  8. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT  
  9. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT  
  10. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT  
  11. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT  
  12. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1001 -j ACCEPT  
  13. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1001 -j ACCEPT  
  14. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1002 -j ACCEPT  
  15. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1002 -j ACCEPT  
  16. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1003 -j ACCEPT  
  17. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1003 -j ACCEPT  
  18. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1004 -j ACCEPT  
  19. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 1004 -j ACCEPT  
  20. /etc/init.d/iptables restart #最后重启防火墙使配置生效  

> 修改完exports,需要重新启动

- -a :全部挂载(或卸载) /etc/exports档案内的设定
- -r :重新挂载/etc/exports里面的设定,此外,亦同步更新/etc/exports 及/var/lib/nfs/xtab的内容!
- -u :卸载某一目录
- -v :在export的时候,将分享的目录显示到萤幕上!

  1. -> root@c1 ~ ? # showmount -e localhost  
  2. Export list for localhost:  
  3. /data/nfsdir 192.168.36.0/23  
  4. -> root@c1 ~ ? # exportfs -arv  
  5. exporting 192.168.36.0/23:/data/nfsdir  
  6. -> root@c1 ~ ? # showmount -e localhost  
  7. Export list for localhost:  
  8. /data/nfsdir 192.168.36.0/23  
  9. -> root@c1 ~ ? # exportfs -auv   
  10. -> root@c1 ~ ? # showmount -e localhost  
  11. Export list for localhost:  

> 开启/停止服务(顺序都不能错)

开启

  1. -> root@c1 ~ ? # /etc/rc.d/init.d/rpcbind start  
  2. Starting rpcbind:                                          [  OK  ]  
  3. -> root@c1 ~ ? # /etc/rc.d/init.d/nfslock start  
  4. Starting NFS statd:                                        [  OK  ]  
  5. -> root@c1 ~ ? # /etc/rc.d/init.d/nfs start  
  6. Starting NFS services:                                     [  OK  ]  
  7. Starting NFS mountd:                                       [  OK  ]  
  8. Starting NFS daemon:                                       [  OK  ]  
  9. Starting RPC idmapd:                                       [  OK  ]  

停止

  1. -> root@c1 ~ ? # service nfslock stop  
  2. Stopping NFS locking:                                      [  OK  ]  
  3. Stopping NFS statd:                                        [  OK  ]  
  4. -> root@c1 ~ 2? # service nfs stop  
  5. Shutting down NFS daemon:                                  [  OK  ]  
  6. Shutting down NFS mountd:                                  [  OK  ]  
  7. Shutting down NFS services:                                [  OK  ]  
  8. Shutting down RPC idmapd:                                  [  OK  ]  
  9. -> root@c1 ~ ? # service rpcbind stop  
  10. Stopping rpcbind:                                          [  OK  ]  

> 查看状态

- -p :针对某IP (未写则预设为本机) 显示出所有的port 与porgram 的资讯;
- -t :针对某主机的某支程式检查其TCP 封包所在的软体版本;
- -u :针对某主机的某支程式检查其UDP 封包所在的软体版本;

  1. -> root@c1 ~ ? # rpcinfo -p 192.168.36.67   #查看端口状态  
  2.    program vers proto   port  service  
  3.     100000    4   tcp    111  portmapper  
  4.     100000    3   tcp    111  portmapper  
  5.     100000    2   tcp    111  portmapper  
  6.     100000    4   udp    111  portmapper  
  7.     100000    3   udp    111  portmapper  
  8.     100000    2   udp    111  portmapper  
  9.     100024    1   udp  49313  status  
  10.     100024    1   tcp  48130  status  
  11.     100005    1   udp  46850  mountd  
  12.     100005    1   tcp  41668  mountd  
  13.     100005    2   udp  55759  mountd  
  14.     100005    2   tcp  45163  mountd  
  15.     100005    3   udp  45975  mountd  
  16.     100005    3   tcp  49617  mountd  
  17.     100003    2   tcp   2049  nfs  
  18.     100003    3   tcp   2049  nfs  
  19.     100003    4   tcp   2049  nfs  
  20.     100227    2   tcp   2049  nfs_acl  
  21.     100227    3   tcp   2049  nfs_acl  
  22.     100003    2   udp   2049  nfs  
  23.     100003    3   udp   2049  nfs  
  24.     100003    4   udp   2049  nfs  
  25.     100227    2   udp   2049  nfs_acl  
  26.     100227    3   udp   2049  nfs_acl  
  27.     100021    1   udp  43360  nlockmgr  
  28.     100021    3   udp  43360  nlockmgr  
  29.     100021    4   udp  43360  nlockmgr  
  30.     100021    1   tcp  45304  nlockmgr  
  31.     100021    3   tcp  45304  nlockmgr  
  32.     100021    4   tcp  45304  nlockmgr  
  33. -> root@c1 ~ ? #  rpcinfo -t localhost nfs  
  34. program 100003 version 2 ready and waiting  
  35. program 100003 version 3 ready and waiting  
  36. program 100003 version 4 ready and waiting  

选项与参数:

- -a :显示目前主机与用户端的NFS 连线分享的状态;
- -e :显示某部主机的/etc/exports 所分享的目录资料。

  1. -> root@c1 ~ ? # showmount -e 192.168.36.67     #查看共享的目录           
  2. Export list for 192.168.36.67:  
  3. /data/nfsdir 192.168.36.0/23  

> 查看log

  1. -> root@c1 ~ ? # tail /var/log/messages  
  2. May 23 13:31:02 c1 kernel: NFSD: starting 90-second grace period  
  3. May 23 13:32:24 c1 rpc.statd[67061]: Caught signal 15, un-registering and exiting  
  4. May 23 13:32:35 c1 kernel: nfsd: last server has exited, flushing export cache  
  5. May 23 13:32:35 c1 rpc.mountd[67110]: Caught signal 15, un-registering and exiting.  
  6. May 23 13:32:41 c1 rpcbind: rpcbind terminating on signal. Restart with "rpcbind -w"  
  7. May 23 13:33:51 c1 rpc.statd[67364]: Version 1.2.3 starting  
  8. May 23 13:33:51 c1 sm-notify[67365]: Version 1.2.3 starting  
  9. May 23 13:33:56 c1 rpc.mountd[67406]: Version 1.2.3 starting  
  10. May 23 13:33:56 c1 kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory  
  11. May 23 13:33:56 c1 kernel: NFSD: starting 90-second grace period  

> 查看预设参数

  1. -> root@c1 ~ ? # cat /var/lib/nfs/etab   
  2. /data/nfsdir    192.168.36.0/23(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)  

## client端

> 安装启动与上面一样

  1. [root@localhost ~]# showmount -e 192.168.36.67  
  2. Export list for 192.168.36.67:  
  3. /data/nfsdir 192.168.36.0/23  
  4.   
  5. [root@localhost nfsdir]# mount -t nfs -o soft,intr,bg,rw,rsize=32768,wsize=32768 192.168.36.67:/data/nfsdir   /data/nfsdir  

> 卸载用umount

  1. [root@localhost ~]# umount /data/nfsdir  

> 设置开机自动挂载目录

  1. vi /etc/fstab  #编辑  
  2. 192.168.21.160:/data/nfsdir /data/nfsdir    nfs soft,intr,bg,rw,rsize=32768,wsize=32768  0   0  
» 转载请注明来源:若我若鱼 » NFS安装

Leave a Reply

Your email address will not be published. Required fields are marked *

2 × five =