### Linux NFS 攻略
#### 一、NFS简介
NFS(Network File System),即网络文件系统,是由Sun Microsystems开发的一种允许不同机器之间通过网络共享文件的协议。这一技术让远程文件系统的使用如同访问本地文件系统一般方便,极大地简化了用户在分布式计算环境中的文件管理和访问流程。
#### 二、各NFS协议版本的主要区别
##### V3相对V2的主要区别:
1. **文件尺寸**:NFS V2仅支持32位的文件大小(最大4GB),而NFS V3引入了对64位文件大小的支持,这极大扩展了单个文件的最大容量。
2. **文件传输尺寸**:NFS V3不再限制传输块大小,默认情况下没有上限,相比NFS V2的8KB限制更加灵活。
3. **完整的信息返回**:NFS V3增加了更丰富的错误和成功信息反馈机制,这有助于更好地管理和调试NFS服务器。
4. **传输协议支持**:除了原有的UDP支持外,NFS V3还加入了对TCP的支持,提高了在网络条件较差情况下的可靠性和效率。
5. **异步写入特性**:NFS V3新增了异步写入功能,允许服务器在实际写入磁盘前响应客户端请求,提高了I/O性能。
6. **mount性能优化**:NFS V3改善了mount操作的性能,使得挂载过程更快捷。
7. **更好的I/O WRITE性能**:NFS V3通过优化写入操作提升了整体的I/O效率。
8. **更强的网络运行效能**:NFS V3在提高网络带宽利用率的同时,减少了不必要的网络通信开销。
9. **更强的灾难恢复功能**:异步写入等新特性提高了数据的安全性和完整性。
**异步写入特性详解**:
异步写入是一种可选特性,允许NFS V3客户端向服务器发送写入请求时,服务器无需立即完成写入磁盘的操作即可返回确认。这种机制让服务器能够在合适的时机批量处理多个写入请求,从而提高写入效率。客户端会保留一份数据副本,以备服务器写入失败时恢复。这种机制相比于NFS V2的同步写入方式更加高效和灵活。
##### V4相对V3的改进:
1. **改进了Internet上的存取和执行效能**:NFS V4在Internet环境中表现出更好的性能和可靠性。
2. **增强了安全方面的特性**:NFS V4加强了身份验证和加密机制,提升了安全性。
3. **增强的跨平台特性**:NFS V4在不同操作系统间的兼容性得到了显著提升,使得文件共享更加便捷。
#### 三、CLIENT和SERVER的具体操作和设置
##### RPC(Remote Procedure Call)
NFS依赖于RPC(远程过程调用)来实现网络文件共享的功能。RPC使得NFS能够在不同主机间传输数据,同时处理各种网络通信细节。无论是NFS服务器还是客户端都需要启动RPC服务,以便通过RPC实现程序端口的映射。
##### NFS需要启动的DAEMONS
- `rpc.nfsd`:主要负责权限检查等工作。
- `rpc.mountd`:管理客户端对服务器文件的访问权限。
##### NFSSERVER在REDHAT LINUX平台下的安装
NFSSERVER在Red Hat Linux平台上需要安装两个软件包:`nfs-utils`和`portmap`。
- `nfs-utils`:提供`rpc.nfsd`和`rpc.mountd`等守护进程。
- `portmap`:负责处理RPC程序端口映射。
##### 服务器端的设定
服务器端的配置文件位于`/etc/exports`,其格式如下:
```
/共享目录 主机名1(参数1, 参数2) 主机名2(参数3, 参数4)
```
其中,每个主机名后面括号内的参数指定了该主机对该共享目录的访问权限。可以设置的参数包括但不限于:
- `rw`:可读写权限。
- `ro`:只读权限。
- `no_root_squash`:如果客户端登录用户名为root,则在服务器上也具有root权限,但出于安全考虑,通常不推荐使用。
- `root_squash`:客户端root用户登录服务器时,其权限将被降低至匿名用户(通常为nfsnobody)。
通过上述配置,可以实现对不同主机的不同访问控制策略,满足多样化的文件共享需求。