一、概念
NFS(Network File System/网络文件系统):
1、设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务);
2、NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;
3、NFS为C/S架构;
NFS服务器IP:192.168.0.100
NFS客户端IP:192.168.0.101
1、配置文件
主要配置文件为:/etc/exports
格式为: 共享目录 可mount主机IP(参数1,参数2,……)
如:/var/nfs 192.168.0.101(rw,insecure,sync,all_squash)
说明:必须注意nfs/目录的访问权限,必须设置成777权限;父目录/var权限无要求,普通的755即可;
选项 说明
Ro 该主机对该共享目录有只读权限
Rw 该主机对该共享目录有读写权限
Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
No_root_squash 客户机用root访问该共享文件夹时,不映射root用户
All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
Anonuid 将客户机上的用户映射成指定的本地用户ID的用户
Anongid 将客户机上的用户映射成属于指定的本地用户组ID
Sync 资料同步写入到内存与硬盘中
Async 资料会先暂存于内存中,而非直接写入硬盘
Insecure 允许从这台机器过来的非授权访问
例如:
/ zhang(rw) wang(rw,no_root_squash)
表示共享服务器上的根目录(/)只有zhang和wang两台主机可以访问,且有读写权限;zhang主机用root用户身份访问时,将客户机的root 用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;wang主机用root用户 身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录
/root/share/ 192.168.1.20(rw,insecure,sync,all_squash)
表示共享服务器上的/root/share/目录只有192.168.1.20主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映 射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服 务器上的nobody用户对该目录必须有写的权限)
/home/ljm/ *.gdfs.edu.cn(rw,insecure,sync,all_squash)
表示共享/home/ljm/目录,*.gdfs.edu.cn域中所有的主机都可以访问该目录,且有读写权限
/home/share/ .gdfs.edu.cn(ro,sync,all_squash,anonuid=student,anongid=math)
表示共享目录/home/share/,*.gdfs.edu.cn域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为student、gid为math的用户
2、启动相关服务
然后依次启动相关服务:portmap,nfslock,nfs
3、检查共享目录
随后可以采用showmount –e查看一下,看看共享的目录情况:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 192.168.0.101
OK,到此为止,NFS服务器搭建完毕;
出现mount: mount to NFS server 'myhostname.mydomain.edu' failed: System Error: No route to host错误解决方案
首选关闭防火墙测试一下是否是防火墙问题,确定防火墙问题操作步骤如下:
新建文件: /etc/sysconfig/nfs ,把下面内容加入/etc/sysconfig/nfs中
MOUNTD_PORT="4002"
STATD_PORT="4003"
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"
编辑/etc/sysconfig/iptables,加入如下代码。
重启防火墙/etc/sysconfig/iptables restart
-A RH-Firewall-1-INPUT -p tcp --dport 111 -s 222.73.123.4 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 111 -s 222.73.123.4 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 2049 -s 222.73.123.4 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 2049 -s 222.73.123.4 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 4002:4004 -s 222.73.123.4 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 4002:4004 -s 222.73.123.4 -j ACCEPT
1、确保portmap运行
客户端必须确保RPC协议相应的portmap正常运行,否则mount将失败;
2、挂载/var/nfs目录(本地挂载点为/mnt/nfs)
mount -t nfs -o rw 192.168.0.100:/var/nfs /var/nfs
成功mount以后,即可同本地目录一样随意操作;
开机自动加载设置如下:
vi /etc/fstab
文件末尾加入
192.168.0.100:/var/nfs /var/nfs nfs rw 0 2
四、其它相关命令
1、当修改了/etc/exports文件后,可以不用重新启动nfs服务,直接采用exports –rv 即可重新导出共享目录;
该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的时候,将详细的信息输出到屏幕上。
具体例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20.*.*
[root@ns var]# exportfs –au #全部卸载
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20.*.*:/var/nfs
[root@ns var]#
2、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
[root@localhost ~]# showmount -e 172.20.65.16
Export list for 172.20.65.16:
/var/nfs 172.20.*.*
[root@ns var]# showmount -a
All mount points on ns.osserver:
172.20.*.*:/var/nfs
五、常见问题解答
1、提示:mount to NFS server ''172.20.67.203'' failed: server is down.
解决方案:可能是NFS服务器的防火墙有问题;
2、提示:mount: RPC: Timed out
解决方案:由于RPC协议没运行;启动portmap服务;
也有可能是防火墙问题;Server/Client均有可能。