配置CentOS6.3 NFS
说明:本文是基于CentOS 6.3版本,5系列版本请另行参照其他文档
一、安装NFS对应的服务
1.安装NFS 套件
首先安装NFS套件,命令如下:
yum install nfs-utils.x86_64(64位系统)
yum install nfs-utils(32位系统)
2.安装RPC服务(注①)
yum install rpcbind(centos6)
二、启动NFS
1.启动RPC服务
Service rpcbind start
2.启动NFS服务
Service nfs start
三、配置NFS服务器端
1.设置共享目录
建立共享目录或者使用已有的目录,本文创建/data/nfsshare作为共享目录。
返回到根目录 CD /
创建目录 mkdir –p /data/nfsshare -p 的意思是父文件夹不存在就创建
2.编辑/etc/exports文件
a) #vi /etc/exports 注②
b)按一下键盘 【i】 键进入编辑状态
c)输入nfs地址,具体命令格式:[目录路径]… [目标主机名或IP地址(参数…)]…
例子:
/data/nfsshare 10.10.225.*(rw,all_squash,anonuid=504,anongid=504)注③
[共享目录] [第一台主机(权限)]
d)保存文件,按【esc】键输入【:w】保存
e)退出vi,输入【:q】退出Vi
3.重新加载exports文件
输入exportfs –rv命令 注④
4.查看本机发布的nfs目录
showmount –e 注⑤
四、设置客户端
1.查看可挂载的目录
showmount –e ip
2.挂载服务器目录
mount –t nfs –o nolock [主机名或IP]:[服务端目录路径] [客户端目录路径]
例子:
mount –t nfs –o nolock
10.10.225.178:/data/nfsshare /data/clientshare
五、进行测试
在服务器的共享目录里面建立一个文件,查看一下客户端是否存在
问题:
1. RPC: Port mapper failure - RPC: Unable to receive
iptable没关,把portmap的端口给阻挡了,禁用,service iptables stop,一切OK!
2. mount.nfs:access denied by server while mounting
查看NFS Server端的/etc/exports文件设置是否有问题。
3.NFS客户端不能写文件问题
是因为服务器端没有设置NFS 共享目录的读写权限,使用chmod进行更改文件夹的权限即可。
注解:
注① 为什么要安装RPC(Remote Procedure Call)
因为NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会随机启动一些没有被占用并且小于1024的端口来传输资料,因为NFS支持的功能没有固定的端口。
这样的话,就需要一个服务来获得对应的端口号,而这个服务就是RPC服务。因为服务器在启动NFS时会把随机取得的端口主动注册到RPC服务中,因此RPC就可以知道每个NFS功能对应的端口号,并且RPC服务是固定端口号111。
这也就间接要求RPC服务必须先于NFS服务启动。
详见:【鳥哥的 Linux 私房菜------第十三章、檔案伺服器之一:NFS 伺服器】
http://linux.vbird.org/linux_server/0330nfs.php
注② Vi的简单操作
Vi有三种模式:命令模式、插入模式、底行模式。画面启动的时候就是命令模式,这个时候只能输入各种命令,而不能进行输入,所以需要按【i】键进入到插入模式,进行输入文本,然后在按【Esc】键退出插入模式,进入命令模式。输入:qw进行保存退出。
注③ 权限参数
参数值 |
内容说明 |
rw ro |
目录分享权限是可读写(read-write)或者只读(read-only),但最终能否读写还是与档案系统的rwx以及身份相关 |
sync async |
sync 资料会同步写入内存和硬盘中, async 资料会先存入内存中,而不是直接写入硬盘。 |
no_root_squash root_squash |
客户端使用NFS的账号若为root时,系统如何判断这个账号的身份? 默认情况下,客户端root的身份由root_squash设定缩减为nfsnobody,这样才能保证服务器系统的安全。 但若想开放客户端的root身份来操作服务器档案系统,就需要设置no_root_squash |
all_squash |
无论登入NFS的客户端身份是什么,都会被缩减为匿名使用者,也就是nobody(nfsnobody) |
anonuid anongid |
anon 代表anonymous (匿名用户),前面关于*_squash提到的匿名用户的UID设定值,通常为nobody(nfsnobody),但是你也可以自行设定这个UID的值!当然,这个UID必须存在你的/etc/passwd当中!anongid 则是群组的GID。 |
注④ Exportfs命令
Exportfs命令是使得本地目录可以被NFS客户端进行安装,默认使用/etc/exports文件进行导出一个或者多个目录。
参数:
–r 重新读取etc/exports文件中的设置,并使设置生效,而无需重启NFS服务 -v 显示当前共享目录及详细的选项设置
其它具体设置,请参照exportfs的命令详解。
注⑤ 用户端查询服务器分享资源的指令:/usr/sbin/showmount
这是另一个重要的NFS指令。exportfs是用于在NFS Server端进行设置,查询的。而showmount则主要用于Client端,用于查看NFS分享出来的目录资源。
-e 显示导出服务器上的所有文件系统。
-a 显示每个已安装在服务器上的所有网络文件系统 (NFS) 客户端和目录。
-d 显示当前装载 NFS 客户端的服务器上的所有目录。