-----------------------nfs--------------------------
一、前言
nfs,即网络文件系统,简单来讲类似于windows下的文件共享。nfs允许一个系统在网络上与他人共享目录和文件。通过使用nfs,用户和程序可以像访问本地文件一样访问远端系统上的文件。
nfs 最初是由 sun microsytem 公司於在1984 年所开发出来的,最主要的功能就是让网路上的 unix 电脑可以共享目录及档案。我们可以将远端所分享出来的档案系统,挂载 (mount) 在本地端的系统上,然後就可以很方便的使用远端的档案,而操作起来就像在本地操作一样,不会感到有甚麽不同。而使用 nfs 也有相当多的好处,例如档案可以集中管理,节省磁碟空间......等等。
linux下的nfs一般建立在rpc(远程过程调用)服务至上,它由许多子进程构成:
nfsd: nfs主进程,服务名为nfsd,监听tcp/udp2049端口
rpc.mountd:监听客户端请求,然后转发请求至nfsd(默认使用随机端口)
rpc.quotad: nfs上的配额管理进(默认使用随机端口)
lockd: 文件锁进程,防止nfs重读错乱(默认使用随机端口)
rpc.statd:记录文件锁状态(默认使用随机端口)
二、安装
nfs的安装很简单,linux一般提供有相关rpm包,安装nfs-utils,nfs-utils-lib即可,一般默认已经安装,所以只要手动启动服务即可:
# service nfs start
#rpcinfo -p ----->查看本机关于nfs的端口是否打开
三、使用
nfs的配置文件有/etc/exports,/etc/sysconfig/nfs.前者主要用来定义本机的共享点信息。
如我们要共享本机的/www 给网络上的192.168.0.0/24:
①、#vim /etc/exports:
/www 192.168.1.0/24(rw,sync)
------------>以读写,同步的方式把本机的/www目录共享给192.168.0.0/24
②、之后导出需要共享问目录:
# exportsfs -arv ------>导出所有共享目录 ,即可在不重启服务时重新导出
也可使用exportsfs -auv :关闭所有共享目录
# showmount -e 192.168.0.1 -------->查看此主机上的可共享目录
③、client使用:
mount -n nfs 192.168.0.1:/www /shared -------->挂载远程/www至本地/shared下
至此,客户端就可以正常访问共享目录咯、、、、、
另外,如若我们想实现nfs的自动挂载,如只有访问需求时才挂载,长期不访问自动退出,可使用autofs命令实现;它也同样适用于本地目录的挂载。
他的实现很简单,需要用到autofs主配文件 /etc/auto.master。如:
①、vim /etc/auto.master:
/mnt /etc/auto.shared ---------指定nfs文件系统可自动挂载至/mnt下
②、vim /etc/auto.shared:
shared -soft, intr,rw 192.168.0.155:/shared
------------>挂载155主机的/shared至本机的/mnt/shared
③、service autofs start
之后我们会发现当我们需要访问155的/shared时,执行cd /mnt/shared即可,即时在本机看不到此目录 。
上面讲到了nfs的实现及访问,但是有没有想过,nfs貌似很不安全啊,它没有让你提供认证,只要给出ip或主机名即可轻松访问,这样只要我们更改适当的ip即可任意访问nfs。这是因为nfs默认只检查用户名,而且客户端说自己是哪个用户,nfsserver就认为你是哪个用户,所以一般我们的nfs会结合nis实现远程集中身份验证,即在远程有一台主机专门作为nfs的验证服务器,所有客户端的登陆都会在此主机上实现验证。
为咯实现nis,linux提供咯ypbind和ypserv软件包,分别基于nis认证客户端和nis认证服务器。
客户端必须首先加入和服务器同一个域内,过程如下:
1、vim /etc/yp.conf :
domain mynis server 192.168.0.254 -------->加入0.254上的指定域
2、vim /etc/nsswitch.conf:
更改: passwd: files nis
shadow: files nis
group: files nis
3、vim /etc/sysconfig/network:
nisdomain=mynis -------------->指定本机加入的域名
4、service ypbind restart ----------->启动nis客户端服务
service autofs restart
之后既可以实现身份验证登录远程nfs主机咯。