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