linux下设置目录同步NFS——实现文件共享

一、概念

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

/etc/init.d/portmap restart    重启portmap
/etc/init.d/nfs restart            重启nfs
/etc/init.d/nfslock restart     重启nfslock
 
 

 

 

三、客户端配置

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均有可能。

你可能感兴趣的:(linux)