NFS(Network File System)即网络文件系统,是由Sun公司开发的一种通过网络方式共享系统的通用共享解决方案。目前NFS有3个版本,分别为NFSv2、NFSv3、NFSv4。NFSv2是一个古老的版本,但却被众多的操作系统所支持,这样它的兼容性会更好;NFSv3拥有更多的特定,包括更快的速度、更大的单个文件大小、更多便于排错的错误及成功信息、对TCP协议的支持等;NFSv4提供了有状态的连接,更容易追踪连接状态,增强了安全特性。CentOS6.3版本默认使用版本NFSv4提供NFS网络文件系统共享服务,NFS监听在TCP 2049端口。
RPC(Remote Procedure Call)是远程过程调用协议,RPC协议为远程通信程序管理通信双方所需的基本信息,这样NFS服务就可以专注于如何共享数据,至于通信的连接以及连接的基本信息,则全权委托给RPC管理,Centos6.3系统由rpcbind服务提供RPC协议的支持,目前NFSv4虽然不再需要与rpcbind直接交互,但rpc.mountd依然是NFSv4所必须的服务。所以,如果在Centos6.3平台上实现NFS共享,需要同时启动NFS与rpcbind服务。
所需软件:nfs-utils、rpcbind
4.1.1 NFS服务器配置
NFS服务器通过读取/etc/exports配置文件设定客户端可以访问哪些NFS共享文件系统。该文件的书写规则如下。
1. 空白行将被忽略
2. 以#符号开头的内容为注释
3. 配置文件中可以通过\符号转义换行
4. 每个共享的文件系统需要独立一行条目
5. 每个客户端主机列表需要使用空格隔开
6. 配置文件支持通配符
一条完整的共享条目语法结构如下,其中,客户端主机可以是一个网段、单台主机或主机名。
/共享路径客户端主机(选项)
也可以为多个客户主机设置不同的访问选项,语法结构如下:
/共享路径客户端主机1(选项)客户端主机2(选项)
不指定选项,默认属性为ro、sync、wdelay、root_squash。具体的NFS属性及其对应的含义见表4-1,查看exports的帮助文档可以找到很多服务器配置模版。
表4-1
NFS选项
功能描述
NFS选项
功能描述
ro
只读共享
rw
可读可写共享
sync
同步写操作
async
异步写操作
wdelay
延时写操作
root_squash
屏蔽远程root权限
no_root_squash
不屏蔽远程root权限
all_squash
屏蔽所有的远程用户权限
计算机对数据进行修改时会先将修改的内容写入快速的内存,随后才会慢慢写入硬盘,async选项允许NFS服务器在没有完全把数据写入硬盘前就返回成功消息给客户端,而此时数据实际还存放在内存中,但客户端则显示数据已经写入成功。注意,该选项仅影响操作消息的返回时间,并不决定如何进行写操作。sync选项将确保在数据真正写入硬盘后才会返回成功的消息。
wdelay为延迟写入选项,也就是说,它决定了先将数据写入内存,在写入硬盘,然后将多个写入请求合并后写入硬盘,这样可以减少对硬盘I/O的次数,从而优化性能,但有可能导致非正常关闭NFS时数据丢失情况的发生。与此相反的选项是no_wdelay,但该选项与async选项一起使用时将不会生效,因为async是基于wdelay实现对客户端的一种响应功能。
客户端使用普通用户连接服务器时,默认情况下,如果客户端使用的账户UID在服务器上也有相同的账户UID,则服务器将使用服务器本机上该UID账户进行读写操作,如果客户端访问服务器所使用的账户UID不在服务器上,则服务器自动将账户转换为nobody账户。此外,如果服务器端对共享属性配置了all_squash选项,则服务器会根据anonuid选项的值,将所有的账户自动转换为匿名账户。
4.1.3 NFS高级设置
1. NFS所需服务
为了在Centos6.3系统平台上提供NFS服务,该操作系统平台提供了很多有用的服务进程,以下进程在实现NFS共享的过程中需要互相协同合作。
1)nfs:NFS服务主程序
2)nfslock:为NFS文件系统提供锁机制
3)rpcbind:提供地址与端口注册服务
4)rpc.mountd:该进程被NFS服务用来处理NFSv2和NFSv3的mount请求
5)rpc.nfsd:动态处理客户端请求
6)lockd:lockd是内核线程,在服务器端和客户端运行,用来实现NLM网络协议,允许NFSv2和NFSv3客户端对文件加锁
7)rpc.statd:该进程实现网络状态监控(NSM)协议
8)rpc.rquotad:该进程提供用户配额信息
9)rpc.idmapd:提供NFSv4名称映射,/etc/idmapd.conf必须被配置
2. NFS客户端配置
若想要客户端主机可以访问并使用服务器所提供的共享目录,可通过mount命令挂载NFS共享,格式如下:
#mount-tnfs-o选项服务器主机:/服务器共享目录/挂载本地目录
具体挂载选项如下。
1)Intr:当服务器宕机��允许中断NFS请求
2)nfsvers=version:指定使用哪个版本的NFS协议,version可以是2、3、4。
3)noacl:关闭ACL,仅与老版本操作系统兼容时使用
4)nolock:关闭文件锁机制,仅用来连接老版本NFS服务器
5)noexec:在挂载的文件系统中屏蔽可执行的二进制程序
6)port=num:指定NFS服务器端口,默认num为0,此时如果远程NFS进程没有在rpcbind注册端口信息,则使用标准NFS端口号(TCP 2049端口)
7)rsize=num:设置最大数据块大小调整NFS读取数据的速度,num单位为字节
8)wsize=num:设置最大数据块大小调整NFS写入数据的速度,num单位为字节
9)tcp:使用TCP协议挂载
10)udp:使用UDP协议挂载
3. 使用NFS命令工具