首页 > 代码库 > NFS:网络文件系统

NFS:网络文件系统

NFS:网络文件系统

rpc:

[root@localhost ~]# rpm -ql nfs-utils 服务器端

[root@localhost ~]# service nfs start

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

Starting RPC idmapd:                                       [  OK  ]



[root@localhost ~]# service  portmap restart

portmap: unrecognized service


centos中portmap这个服务叫做rpcbind ,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的


[root@localhost ~]# service  rpcbind  status

rpcbind (pid  1020) is running...


[root@localhost ~]# rpcinfo -p  localhost

查看一台主机上所有rpc所监听的端口


NFS将启动三个主进程:nfsd(文件传输,NFS服务)  mountd(挂载)  quotad(配额)

nfsd:2049/tcp, 2049/udp

mountd:端口

quotad:端口

    半随机的

/etc/rc.d/init.d/nfslock  NFS锁的脚本。当一个主机在编辑这个文件时候RPC会给该文件上锁,以保证不会多台主机同时修改某一个文件

[root@localhost ~]# chkconfig nfs on 

[root@localhost ~]# vim /etc/exports 此文件定义哪些客户端可以使用NFS

/path/to/somedir  CLIENT_LIST

    多个客户之间使用空格字符分割

每个客户端后必须跟一个小括号,里面定义此客户端的访问特性,如访问权限等

172.16.0.0/16(ro,async) 192.168.1.0/24(rw,sync)

列如:

[root@localhost ~]# mkdir /shared 在根目录下创建一个shared目录,把次目录共享出去

[root@localhost ~]# vim /etc/exports 

/shared    192.168.1.0/24(ro)  共享权限ro

[root@localhost ~]# service nfs restart


showmount -a 显示NFS服务器上所有被挂载的文件系统及其客户端对应列表

showmount -e 显示服务器上共享了哪些目录

showmount -d 显示NFS服务器上所有的导出的文件系统中被客户端挂载了的文件系统列表

[root@localhost ~]# showmount -e 192.168.1.51

Export list for 192.168.1.51:

/shared 192.168.1.0/24


客户端使用mount命令挂载

[root@localhost a]# mount -t nfs 192.168.1.51:/shared     /mnt/a


exportfs命令:

   -a: 跟-r或-u 选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统

   -r重新导出文件系统

   -u取消导出文件系统  (相当于让所有挂载的NFS文件系统失效)

   -v显示详细信息

[root@localhost shared]# exportfs  -ra 192.168.1.51  后直接可以挂载不用重启NFS服务


文件系统导出属性:

  ro:只读

  rw:读写

  sync:同步

  async:异步

  root_squash:将root用户映射为来宾账号,

  no_root_squash:不映射成来宾账号

  all_squash:所有用户都映射成来宾账号

  anonuid,anongid: 指定映射的来宾账号的UID和GID

 

列如把所有用户都映射为来宾用户,并UID GID都为510

[root@localhost shared]# useradd -u 510 nfstest

[root@localhost shared]# touch /shared/nfstest

[root@localhost shared]# chown nfstest.nfstest  /shared/nfstest

[root@localhost shared]# vim /etc/exports 

/shared    192.168.1.0/24(rw,all_squash,anonuid=510,anongid=510)

[root@localhost shared]# exportfs -ra

[root@localhost mnt]# umount -t nfs 192.168.1.51:/shared

[root@localhost mnt]# mount -t nfs 192.168.1.51:/shared /mnt/a

此后通过客户端创建的文件都会显示UID510 ,GID510

[root@localhost nfstest]# touch aaaaaa

[root@localhost nfstest]# ll

total 4

-rw-r--r--. 1 510 510 0 Aug 27  2016 aaaaaa

[root@localhost nfstest]# 

开机自动挂载

[root@localhost nfstest]# vim /etc/fstab 

192.168.1.51:/shared    /mnt/a                  nfs     defaults,_rnetdev        0 0

rnetdev:在挂载的时候,如果挂载失败就忽略掉。这样不至于在服务器故障时导致客户机开不了机




NFS:客户端先找rpc,rpc工作在111端口(固定的),然后rpc会告诉客户端mountd的端口(随机的),然后mountd给客户端令牌,客户端拿着令牌去找nfsd服务

为了避免mountd随机端口跟其他服务造成冲突,需要手动设置固定端口 



[root@localhost ~]# vim /etc/sysconfig/nfs   配置文件

MOUNTD_PORT=892 可以指定mountd 监听端口



RQUOTAD_PORT=875



启动锁进程也需要监听端口

LOCKD_TCPPORT=32803

# UDP port rpc.lockd should listen on.

LOCKD_UDPPORT=32769


[root@localhost ~]# service nfs restart

Shutting down NFS daemon:                                  [  OK  ]

Shutting down NFS mountd:                                  [  OK  ]

Shutting down NFS quotas:                                  [  OK  ]

Shutting down RPC idmapd:                                  [  OK  ]

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

Starting RPC idmapd:                                       [  OK  ]

[root@localhost ~]# 




[root@localhost ~]# rpcinfo -p localhost

   program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  57027  status

    100024    1   tcp  56861  status

    100011    1   udp    875  rquotad

    100011    2   udp    875  rquotad

    100011    1   tcp    875  rquotad

    100011    2   tcp    875  rquotad

    100005    1   udp    892  mountd

    100005    1   tcp    892  mountd

    100005    2   udp    892  mountd

    100005    2   tcp    892  mountd

    100005    3   udp    892  mountd

    100005    3   tcp    892  mountd

    100003    2   tcp   2049  nfs

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    2   tcp   2049  nfs_acl

    100227    3   tcp   2049  nfs_acl

    100003    2   udp   2049  nfs

    100003    3   udp   2049  nfs

    100003    4   udp   2049  nfs

    100227    2   udp   2049  nfs_acl

    100227    3   udp   2049  nfs_acl

    100021    1   udp  32769  nlockmgr

    100021    3   udp  32769  nlockmgr

    100021    4   udp  32769  nlockmgr

    100021    1   tcp  32803  nlockmgr

    100021    3   tcp  32803  nlockmgr

    100021    4   tcp  32803  nlockmgr

[root@localhost ~]# 


  


本文出自 “运维成长路” 博客,谢绝转载!

NFS:网络文件系统