DNFS由Oracle 11g引入的新特性,旨在提高系统自带NFS的IO性能。DNFS相对于系统级NFS的降低了网络和IO传输的消耗。普通NFS的IO能力不高的原因是:
1.低效的数据传输,多链路实现较难;
2.系统的RPC堆栈IO以队列方式实现,限制了发送到TCP层的数据;
3.oracle实例到nfs客户端的IO传输效率低下;

NFS与DNFS数据传输的路径:


普通NFS:
ORACLE Direct NFS安装_第1张图片


DNFS
ORACLE Direct NFS安装_第2张图片


可以看到dnfs比nfs少了TCP->IP的数据传输阶段,直接通过RPC进行连接。


安装过程:

环境
NFS SERVER:172.10.10.10 PROD2 
NFS CLIENT:172.10.10.20 PROD1 

nfs的配置请参考:https://docs.oracle.com/cd/E37670_01/E37355/html/ol_setupnfssvr_btrfs.html

1.安装软件

PROD2#yum install nfs-utils -y



2.配置SERVER

1)PROD2上创建共享目录
PROD2#mkdir -p /u01/nfs_torage
PROD2#vi /etc/exports
2)修改exports
PROD2#cat /etc/exports
/u01/nfs_torage *(rw,sync,no_wdelay,insecure,insecure_locks,no_root_squash)

挂载选项:

a.https://docs.oracle.com/cd/E11882_01/install.112/e47689/post_inst_task.htm#LADBI1297
b.Mount Options for Oracle files for RAC databases and Clusterware when used with NFS on NAS devices (Doc ID 359515.1)


3)启动服务
PROD2# service rpcbind start
PROD2# service nfs start
PROD2# service nfslock start
PROD2# chkconfig rpcbind on
PROD2# chkconfig nfs on
PROD2# chkconfig nfslock on


4)检查配置
PROD2# exportfs -rv
PROD2# showmount -e localhost

3.配置client

1)创建挂载路径
PROD1# mkdir -p /vol/nfs_oradta
PROD1# chown -R oracle:oinstall /vol/nfs_oradata
PROD1# chmod -R 755 /vol/nfs_oradata


2)启动服务
PROD1# service rpcbind status
PROD1# chkconfig rpcbind on
PROD1# service restart rpcbind


3)查看服务端信息
PROD1#showmount -e PROD2


4)手动挂载
格式:mount -t nfs : 
PROD1#mount -t nfs PROD2:/u01/nfs_storage /vol/nfs_oradata


5)配置自动挂载
PROD1#cat /etc/fstab
PROD2:/u01/nfs_storage /vol/nfs_oradata nfs rw,bg,hard,nointr,tcp,vers=3,timeo=300,rsize=32768,wsize=32768,actimeo=0 0 0
或者
PROD1#vi /etc/rc.local
mount -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0,suid PROD2:/u01/nfs_storage /vol/nfs_oradata 



4.配置DNFS

1)DNFS配置文件
挂载时dnfs通过查找以下文件决定挂载点的信息:
$ORCLE_HOME/dbs/oranfstab
/etc/orafnstab
/etc/mtab
内容格式如下:
Server:NFS服务器名
Path:NFS服务器IP或主机名
Export:从NFS服务器导出的路径
Mount:NFS的本地装载点

$vi /etc/oranfstab
server:PROD2
path:172.10.10.10
export:/u01/nfs_storage
mount:/vol/nfs_oradata


2)修改odm库
$sqlplus / as sysdba
sql>shutdown immediate;
$cd $ORACLE_HOME/rdbms/lib
$make -f ins_rdbms.mk dnfs_on
sql>startup


3)创建表空间
sql>create tablespace testnfs datfile '/u01/nfs_oradta/PROD1/testnfs01.dbf' size 100m;


4)检查dnfs是否生效
$grep NFS /u01/ap/oracle/diag/rdbms/prod1/PROD1/trace/alert_PROD1.log



5.与dsnfs相关的视图

v$dnfs_servers;
v$dnfs_files;
v$dnfs_chanels;
v$dnfs_tas;



6.禁用dnfs

1).删除表空间,停库
drop tablespace testnfs including contents andatfiles;
shutdown imediate

2).禁用dnfs:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_of

3).启动数据库
startup

4).删除相关的nfs配置

参考:

Step by Step - Configure Direct NFS Client (DNFS) on Linux (Doc ID 762374.1)