首页 > 代码库 > 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:网络文件系统