在11g以前的版本里,NFS被证实了有明确的弊端,比如说性能变差以及NFS客户端的复杂的配置要求。到了11g的时候,oracle已经在它的内核里整合了DNFS客户端。这种客户端允许oracle直接优化ORACLE和NFS服务器之间的IO路径。使用DNFS优化性能也是自动化的,并且简化了配置。

Direct NFS的优点

DNFS在提升性能方面有两个大的优化。

1, DNFS能够实现同时性的直连IO。这一点免去了对操作系统缓存的需求,并且绕过了操作系统设置的限制。比如说,原本使用NFS需要先在操作系统上配置NFS客户端,然后当你要把数据从数据库写入到NFS里面的时候,你需要先把数据从ORACLE的内存里面读到操作系统的缓存里面,然后再从缓存里面拷贝到NFS上。如果使用的是DNFS客户端,数据就不再需要先缓存在操作系统上了。这个过程能够减少总的内存消耗和写入网络设备时的CPU使用。

2,除了减少对操作系统缓存的依赖之外,第二个大的优化是DNFS支持NFS文件系统的异步I/O。异步IO也叫非阻塞IO,允许IO进程持续进行而不用等其他IO进程完成,这种方式对于读写的性能有巨大的不同。

 

从oracle 11.1版本开始,DNFS支持4个并行的网络路径,它会自动在所有指定的路径之间进行负载均衡。

 

DNFS的另一个优点是由oracle来在所有平台管理配置,这极大地简化了管理NFS的任务。消除了管理不同平台(或者使用特定存储设备)不同配置的问题。这个功能同样在存储的连接上使用简单的以太网(局域网),消除了额外的架构组成部分,比如说过多的主机总线适配器,光纤交换机,或者捆绑网卡层。

 

DNFS支持单实例或者RAC环境。客户端会识别一个实例是不是RAC环境的一部分并且自动对NFS进行优化。

DNFS客户端按以下顺序查找挂载设置:

  • $ORACLE_HOME/dbs/oranfstab 单个实例使用的设置
  • /etc/oranfstab用于配置同一台主机上的所有DB都可使用的配置
  • 挂载表格文件,/etc/mtab, 用来查看当前已挂载的文件系统以及它们的初始化选项

oranfstab应该要包含服务器,路径,导出路径和挂载点

比如说:

server: MyServer
path: 135.34.28.11
path: 135.34.28.12
export: /vol/oradata mount: C:\oracle\11g\oradata\ora11gr1
Server - NFS server name
Path - Up to four network paths to the NFS server
Export - Exported path from the NFS server
Mount - Local mount point for NFS server

在启用DNFS客户端之前,需要先挂载可用的NFS文件系统。然后必须把常规的Oracle磁盘管理库替换成支持DNFS的。可以通过以下命令来完成:

cd $ORACLE_HOME/lib
cp libodm11.so libodm11.so_stub
ln -s libnfsodm11.so libodm11.so 
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_on

监控DNFS

  • v$dnfs_servers - 查看哪些服务器使用了DNFS
  • v$dnfs_files - 查看当前哪些文件是使用DNFS打开的
  • v$dnfs_channels - 查看打开的网络路径和通道,通向那些提供文件的服务器
  • v$dnfs_stats - 查看DNFS的性能统计信息

OLTP和DSS的DNFS

DSS是指decision support services,也就是用于支撑决策服务的环境

大概的预估上,DNFS在DSS环境(因为添加了额外的网络接口层)上有差不多40%的提升,然后OLTP环境上有11%的性能提升。这种预估还没有算上配置和管理上的优势。

RAC

DNFS能够通过网络连接的模式节约成本,也就是多路径和统一化的存储。并且,DNFS甚至可以在windows上工作,即便windows不支持NFS。另一个好处就是NFS文件可以用常规的操作系统命令进行管理,比如说ls, mv, cp。 

最后,DNFS默认支持直连和异步IO。RAC环境下使用DNFS必须在节点上安装客户端,即便RAC已经在运行了也可以。

1. Stop any RAC databases
2. cd $ORACLE_HOME/lib
3. 备份libodm11.so
4. ln -s libfsodm11.so libodm11.so
5. Start the RAC databases

 

Note: Oracle 11g DNFS只支持和NAS设备兼容的NFS V3协议。

在使用DNFS之前必须先在OS上设置NFS。每一个OS都有配置和使用NFS的不同要求。包括mount, /etc/fstab这些。