nfs-server与nfs-client端配置一样
NFS(network file system)网络文件系统;用于在网络上共享存储。
服务端-192.168.161.133
|
需要安装的包nfs-utils
rpcbind
|
客户端-192.168.161.132 |
nfs-utils
rpcbind
|
1、服务端配置nfs
需要安装两个包nfs-utils和rpcbind(用于服务端和客户端的通信,CentOS6以前的版本都是安装portmap包、centos6版本安装rpcbind)
[root@nfsserver /]# uname -r 打印系统版本 2.6.32-431.el6.x86_64 [root@nfsclient ~]# rpm -aq nfs-utils portmap rpcbind #检查nfs相关的包 如果有这两个包的话使用rpm卸载 重新安装 nfs-utils-1.2.3-39.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 [root@nfsclient /]# tail -6 /etc/yum.repos.d/CentOS-Media.repo #查看本地yum配置文件 baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [root@nfsclient /]# sed -i 's#enabled=0#enabled=1#gp' /etc/yum.repos.d/CentOS-Media.repo #修改配置文件 [root@nfsclient /]# tail -6 /etc/yum.repos.d/CentOS-Media.repo # 检查是否修改成功 file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [root@nfsclient /]# yum -y remove nfs-utils rpcbind #卸载nfs相关的包 不建议使用yum remove卸载包、因为他会把依拉包卸载掉、有可能会影响服务器上的其他服务 Removed: nfs-utils.x86_64 1:1.2.3-39.el6 rpcbind.x86_64 0:0.2.0-11.el6 Dependency Removed: ipa-client.x86_64 0:3.0.0-37.el6 nfs-utils-lib.x86_64 0:1.1.5-6.el6 yp-tools.x86_64 0:2.9-12.el6 ypbind.x86_64 3:1.20.4-30.el6 Complete! [root@nfsclient /]# rpm -aq nfs-utils portmap rpcbind #确认是否卸载成功 发一:[root@nfsserver /]# yum -y install nfs-utils rpcbind #安装nfs相关的包 Installed: nfs-utils.x86_64 1:1.2.3-70.el6_8.1 rpcbind.x86_64 0:0.2.0-12.el6 Dependency Installed: nfs-utils-lib.x86_64 0:1.1.5-11.el6 python-argparse.noarch 0:1.2.1-2.1.el6 Dependency Updated: libtirpc.x86_64 0:0.2.1-11.el6 Complete! [root@nfsserver /]# rpm -qa nfs-utils portmap rpcbind rpcbind-0.2.0-12.el6.x86_64 nfs-utils-1.2.3-70.el6_8.1.x86_64 nfs-client端配置(安装时两边都用同一种方法,保持一致不容易出错) 法二:[root@nfsclient /]# yum grouplist | grep -i 'nfs' #查找nfs包组 Failed to set locale, defaulting to C NFS file server [root@nfsclient /]# yum -y groupinstall "NFS file server" Installed: nfs-utils.x86_64 1:1.2.3-70.el6_8.1 Dependency Installed: nfs-utils-lib.x86_64 0:1.1.5-11.el6 python-argparse.noarch 0:1.2.1-2.1.el6 rpcbind.x86_64 0:0.2.0-12.el6 Updated: nfs4-acl-tools.x86_64 0:0.3.3-8.el6 Dependency Updated: libtirpc.x86_64 0:0.2.1-11.el6 Complete! root@nfsclient /]# rpm -aq nfs-utils portmap rpcbind rpcbind-0.2.0-12.el6.x86_64 nfs-utils-1.2.3-70.el6_8.1.x86_64 nfs-server端配置 [root@nfsserver /]# /etc/init.d/rpcbind start #启动rpcbind服务 Starting rpcbind: [ OK ] [root@nfsserver /]# ps -ef | grep rpcbind #查看rpcbind服务状态 rpc 5212 1 0 15:04 ? 00:00:00 rpcbind root 5221 4567 0 15:05 pts/0 00:00:00 grep rpcbind [root@nfsserver /]# /etc/init.d/rpcbind status #查看rpcbind服务状态 rpcbind (pid 5212) is running... [root@nfsserver /]# /etc/init.d/rpcbind stop Stopping rpcbind: [ OK ] [root@nfsserver /]# rpcinfo -p localhost rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused 报错原因rpcbind服务未启动 [root@nfsserver /]# 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 [root@nfsserver /]# /etc/init.d/nfs start #启动nfs服务 Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] 正在启动 RPC idmapd: [确定] [root@nfsserver /]# 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 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 37917 mountd 100005 1 tcp 38242 mountd 100005 2 udp 40271 mountd 100005 2 tcp 50999 mountd 100005 3 udp 48150 mountd 100005 3 tcp 47540 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 38739 nlockmgr 100021 3 udp 38739 nlockmgr 100021 4 udp 38739 nlockmgr 100021 1 tcp 44041 nlockmgr 100021 3 tcp 44041 nlockmgr 100021 4 tcp 44041 nlockmgr [root@nfsserver /]# chkconfig nfs on #添加开机自启 [root@nfsserver /]# chkconfig rpcbind on [root@nfsserver /]# chkconfig --list nfs #检查服务是否成功添加开机自启 nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@nfsserver /]# chkconfig --list rpcbind rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfs-client配置 root@nfsclient /]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ] [root@nfsclient /]# /etc/init.d/rpcbind status rpcbind (pid 25927) is running... [root@nfsclient /]# chkconfig rpcbind on [root@nfsclient /]# chkconfig --list rpcbind rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfs-server端配置
[root@nfsserver /]# mkdir /data #创建共享目录 [root@nfsserver /]# vim /etc/exports #nfs配置文件 默认为空 [root@nfsserver /]# cat /etc/exports #shared data for bbs by oldboy at 20160810 /data 192.168.161.0/24(rw,sync) 注:这里的共享目录是/data目录;指定一个网段192.168.161.0/24(也可以指定单个IP);rw为可读写(ro只读);sync为同步模式(sync写入数据是直接写入磁盘,async非同步,写入数据写书内存、如果nfs服务端宕机容易造成数据丢失)详细注解可使用man exports命令;具体参数可参考下面nfs默认的配置、 [root@nfsserver /]# cat /var/lib/nfs/etab #nfs默认的配置参数 /data 192.168.161.0/24(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) [root@nfsserver /]# /etc/init.d/nfs reload [root@nfsserver /]# showmount -e localhost #现在本机检查共享是否成功 Export list for localhost: /data 192.168.161.0/24
nfs-client端配置
[root@nfsclient /]# showmount -e 192.168.161.133 //此为服务端IP 注:要关闭防火墙、不然客户端查不到共享,汇报如下错误: clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) clnt_create:RPC:端口映射器失败——不能接受:errno 113(没有通往主机) [root@nfsclient /]# service iptables stop #关闭client端防火墙 或开放相应的端口 iptables:将链设置为政策 ACCEPT:filter [确定] iptables:清除防火墙规则: [确定] iptables:正在卸载模块: [确定] [root@nfsserver /]# service iptables stop #关闭client端防火墙 或开放相应的端口 iptables:将链设置为政策 ACCEPT:filter [确定] iptables:清除防火墙规则: [确定] iptables:正在卸载模块: [确定] 故障排查:[root@nfsclient /]# ping 192.168.161.133 [root@nfsclient /]# telnet 192.168.161.133 111 [root@nfsclient /]# showmount -e 192.168.161.133 #成功检测到共享 Export list for 192.168.161.133: /data 192.168.161.0/24 [root@nfsclient /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 16G 4.0G 12G 27% / tmpfs 495M 80K 495M 1% /dev/shm /dev/sda1 2.0G 59M 1.8G 4% /boot /dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final /dev/sr0 4.2G 4.2G 0 100% /media/cdrom [root@nfsclient /]# mount -t nfs 192.168.161.133:/data /mnt #挂载到/mnt下 [root@nfsclient /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 16G 4.0G 12G 27% / tmpfs 495M 80K 495M 1% /dev/shm /dev/sda1 2.0G 59M 1.8G 4% /boot /dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final /dev/sr0 4.2G 4.2G 0 100% /media/cdrom 192.168.161.133:/data 16G 3.9G 12G 26% /mnt #挂载成功 [root@nfsclient /]# cd /mnt [root@nfsclient mnt]# ll total 0 -rw-r--r--. 1 root root 0 Aug 10 15:49 11 -rw-r--r--. 1 root root 0 Aug 10 15:49 22 -rw-r--r--. 1 root root 0 Aug 10 15:49 33 [root@nfsclient mnt]# touch test.log #测试下是否有写入权限 touch: cannot touch `test.log': Permission denied 拒绝访问 到nfs-server端检查 [root@nfsserver /]# ll /data -ld drwxr-xr-x 2 root root 4096 Aug 10 15:49 /data [root@nfsserver /]# cat /var/lib/nfs/etab #此目录是nfs默认的用户的信息 /data 192.168.161.0/24(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) [root@nfsserver /]# grep 65534 /etc/passwd #根据用户id查出用户 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin [root@nfsserver /]# chown -R nfsnobody.nfsnobody /data #给nsfnobody赋予权限 [root@nfsclient mnt]# touch test.log #创建测试目录 [root@nfsclient mnt]# ll total 0 -rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 10 15:49 11 -rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 10 15:49 22 -rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 10 15:49 33 -rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 10 16:02 test.log #创建成功
开机自动挂载 修改/etc/fstab文件
nfs客户端自动挂载autofs
为什么需要autofs
autofs可以实现当前用户访问的时候在挂载,如果没有用户访问,指定之间、内,就自动卸载。
可以解决NFS服务器和客户端紧密耦合的问题。缺点:是用户请求才会挂载,所有请求的瞬间效率较差。一般的企业不用它。