NFS是linux中非常常见的一种网络文件系统,其的搭建配置也非常简单,在一般的企业应用中较为广泛。下面就介绍一下NFS在企业环境中的基本应用,在应用中我们也可以更好的理解NFS网络文件系统的工作原理。
1)企业中一般应用场景
如上图一般我们要在中心服务器上设置好共享目录,由其他客户端挂在相应的共享目录,这样客户端服务器就可以想在本地一样往中心服务器上读写数据了。由上图也可以看出NFS服务一般由服务端和客户端组成。
2)rpc服务
既然想使用NFS服务就必须了解RPC服务的相关内容,因为nfs服务就是借着rpc服务才得以正常运行。NFS支持的功能比较多,而不同的功能需要不同的端口来传输数据。RPC最主要的功能就为每个nfs功能注册端口,并把相应的端口通知给客户端,让客户端可以通过相应的端口来实现不同的nfs功能。其原理如下图:
++++++++++++++++++++++++++++++++++NFS服务的部署+++++++++++++++++++++++++++++++++++++
1,查看操作系统版本信息
[root@dong]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@dong]#
2,查看软件包和安装必要的软件包
nfs服务所需的软件包有nfs服务本身和rpc服务两者的软件包
为什么查看操作系统版本呢,因为rpc服务在centos5.x和centos6.x版本中名称不一样,centos5.x的版本叫portmap,centos6.x的版本叫做rpcbind。由于我的操作系统的centos6.5,下面就以centos6.5为例来安装部署NFS服务
[root@dong]# rpm -qa|egrep "nfs|rpcbind" rpcbind-0.2.0-11.el6.x86_64 nfs-utils-lib-1.1.5-11.el6.x86_64 nfs-utils-1.2.3-64.el6.x86_64 [root@dong]#
如果没有安装的话可以用一下命令安装
yum install nfs-utils portmap rpcbind -y
3,启用rpc服务和nfs服务(注意顺序)
由于nfs要想rpc服务注册端口,所以要先启动rpc服务,否则nfs服务会出错。
[root@dong ~]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ] [root@dong ~]# [root@dong ~]# /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@dong ~]#
4,检查rpc和nfs服务是否正常运行
[root@dong ~]# ps -ef|egrep "nfs|rpcbind" rpc 4822 1 0 22:35 ? 00:00:00 rpcbind root 4927 2 0 22:35 ? 00:00:00 [nfsd4] root 4928 2 0 22:35 ? 00:00:00 [nfsd4_callbacks] root 4929 2 0 22:35 ? 00:00:00 [nfsd] root 4930 2 0 22:35 ? 00:00:00 [nfsd] root 4931 2 0 22:35 ? 00:00:00 [nfsd] root 4932 2 0 22:35 ? 00:00:00 [nfsd] root 4933 2 0 22:35 ? 00:00:00 [nfsd] root 4934 2 0 22:35 ? 00:00:00 [nfsd] root 4935 2 0 22:35 ? 00:00:00 [nfsd] root 4936 2 0 22:35 ? 00:00:00 [nfsd] root 4974 1676 0 22:36 pts/0 00:00:00 egrep nfs|rpcbind [root@dong ~]# 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 59532 status 100024 1 tcp 44620 status 100005 1 udp 37352 mountd 100005 1 tcp 40360 mountd 100005 2 udp 54332 mountd 100005 2 tcp 42496 mountd 100005 3 udp 53357 mountd 100005 3 tcp 58510 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 41478 nlockmgr 100021 3 udp 41478 nlockmgr 100021 4 udp 41478 nlockmgr 100021 1 tcp 42487 nlockmgr 100021 3 tcp 42487 nlockmgr 100021 4 tcp 42487 nlockmgr [root@dong ~]#
5,设置nfs和rpc服务开机启动并检查
[root@dong ~]# chkconfig nfs on [root@dong ~]# chkconfig rpcbind on [root@dong ~]# chkconfig --list|egrep "nfs|rpcbind" nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@dong ~]#
6,配置NFS配置文件
[root@dong ~]# cat >>/etc/exports<<EOF >#shara /date nfs >/data 192.168.5.106/24(rw,sync) >EOF [root@dong ~]# cat /etc/exports #shara /date nfs /data 192.168.5.106/24(rw,sync)
7,创建NFS共享目录,并修改共享目录权限
[root@dong ~]#mkdir /data
[root@dong]# chown -R nfsnobody.nfsnobody /data
8,平滑重启nfs服务并检查
[root@dong]# /etc/init.d/nfs reload [root@dong]# 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 100005 1 udp 58611 mountd 100005 1 tcp 47901 mountd 100005 2 udp 36752 mountd 100005 2 tcp 46315 mountd 100005 3 udp 43498 mountd 100005 3 tcp 34087 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 54387 nlockmgr 100021 3 udp 54387 nlockmgr 100021 4 udp 54387 nlockmgr 100021 1 tcp 59024 nlockmgr 100021 3 tcp 59024 nlockmgr 100021 4 tcp 59024 nlockmgr [root@dong]# showmount -e localhost Export list for localhost: /data 192.168.5.0/24 [root@dong]#
9,查看客户端系统版本,安装rpc服务
[root@B ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@B ~]# yum install rpcbind -y Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ... ...
10,启动客户端rpc服务,并检查
[root@B ~]# /etc/init.d/rpcbind start [root@B ~]# 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 33335 status 100024 1 tcp 42421 status [root@B ~]#
11,客户端查看服务端nfs服务
[root@B ~]# showmount -e 192.168.5.108 Export list for 192.168.5.108: /data 192.168.5.0/24 [root@B ~]#
12,客户端挂载nfs共享目录
[root@B ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 927M 16G 6% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot 192.168.5.108:/data/ 18G 953M 16G 6% /nfs_share [root@B ~]#
13,测试
客户端:
[root@B ~]# touch a.txt /nfs nfs/ nfs_share/ [root@B ~]# touch /nfs_share/aaa.txt [root@B ~]# ls /nfs_share/ aaa.txt
[root@B ~]#
服务端:
[root@dong]# ls /data aaa.txt
14,客户端添加开机自动挂在nfs目录
[root@B ~]# echo "/bin/mount -t nfs 192.168.5.108:/data/ /nfs_share/" >>/etc/rc.local [root@B ~]# tail -1 /etc/rc.local tail: inotify cannot be used, reverting to polling /bin/mount -t nfs 192.168.5.108:/data/ /nfs_share/ [root@B ~]# tail -n 1 /etc/rc.local
__________________________________结______________束__________________________________