http://www.alidba.net/index.php/archives/312

这几天测试了一下oracle11g Direct NFS 的功能,发现ORACLE Direct NFS是通过建立多个到NFS Server的TCP连接来提高IO的并发能力的。前面,我们提过,NFS的IO能力不高的原因是,NFS client端到NFS Server的操作是串行的,正常的NFS client到NFS Server端只建立一个连接,而且只有等前一个请求处理完成后,后一个请求才能处理,这样在随机读IO上就上不去。而Oracle Directd NFS与NFS Server建立多个TCP连接,处理就可以并发进行了,这样从理论上说就可以大大提高NFS的性能。

而在实际发现Direct NFS读的时候很快,实测到达到了400Mbytes/s,基本没有发现瓶颈,但写的时候,发现比较慢,
insert数据时,写流量只有3.4Mbytes/s左右,写为何这么慢原因不明,估计是Linux的NFS Server与Oracle Direct NFS配合不好导致。
当使用rman备份时,如果备份的路径在Direct NFS指定的路径中时,也会自动走到Direct NFS模式下。

测试过程:

先修改odm库,启动支持Direct nfs的odm库:
[oracle@nfs_client lib]$ ls -l *odm*
-rw-r–r– 1 oracle oinstall 54764 Sep 11  2008 libnfsodm11.so
lrwxrwxrwx 1 oracle oinstall    12 Jul  8 18:55 libodm11.so -> libodmd11.so
-rw-r–r– 1 oracle oinstall 12755 Sep 11  2008 libodmd11.so
[oracle@nfs_client lib]$ rm libodm11.so
[oracle@nfs_client lib]$ ln -s libnfsodm11.so libodm11.so

在nfs server机器中共享一个目录,为了使用硬盘不会成为IO瓶颈,使用8块盘做一个raid0,然后做ext3文件系统,做为nfs Server的输出:
mdadm -C /dev/md0 –level raid0 -c 8 -n 8 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi
mkfs -t ext3 /dev/md0
mount /dev/md0 /nfs
然后在/etc/exportfs中配置:
/nfs 192.168.172.132(rw,no_root_squash,insecure)
service nfs restart

在数据库主机上(nfs client端):
[oracle@nfs_client dbs]$ cat oranfstab
server: node_data1
path: 192.168.172.128
export: /nfs mount: /opt/oracle/oradata/nfs

mount -t nfs 192.168.172.128:/nfs /opt/oracle/oradata/nfs

两台机器通过万兆网卡连接,测试过网络速度可以达到800Mbytes/s以上。

建一个数据库:
CREATE DATABASE oratest
   USER SYS IDENTIFIED BY sys
   USER SYSTEM IDENTIFIED BY system
   CONTROLFILE REUSE
   LOGFILE GROUP 1 (’/opt/oracle/oradata/oratest/redo_1_1.log’) SIZE 200M REUSE,
       GROUP 2 (’/opt/oracle/oradata/oratest/redo_2_1.log’) SIZE 200M REUSE,
       GROUP 3 (’/opt/oracle/oradata/oratest/redo_3_1.log’) SIZE 200M REUSE,
       GROUP 4 (’/opt/oracle/oradata/oratest/redo_4_1.log’) SIZE 200M REUSE,
       GROUP 5 (’/opt/oracle/oradata/oratest/redo_5_1.log’) SIZE 200M REUSE
   MAXLOGFILES 20
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1000
   MAXDATAFILES 1000
   MAXINSTANCES 2
   noARCHIVELOG
   CHARACTER SET US7ASCII
   NATIONAL CHARACTER SET AL16UTF16
   DATAFILE ‘/opt/oracle/oradata/oratest/system01.dbf’ SIZE 2046M REUSE
   SYSAUX DATAFILE ‘/opt/oracle/oradata/oratest/sysaux01.dbf’ SIZE 2046M REUSE
   EXTENT MANAGEMENT LOCAL
   DEFAULT TEMPORARY TABLESPACE temp
      TEMPFILE ‘/opt/oracle/oradata/oratest/temp01.dbf’ SIZE 2046M REUSE
   UNDO TABLESPACE undotbs1
      DATAFILE ‘/opt/oracle/oradata/oratest/undotbs01.dbf’ SIZE 2046M REUSE
 SET TIME_ZONE = ‘+08:00′;
 
再建一个表空间tbs_testd在在nfs上:
create tablespace tbs_test datafile ‘/opt/oracle/oradata/nfs/test01.dbf’ size 2047M;
 
 
SQL> col svrname format a40
SQL> col dirname format a40
SQL> set linesize 200
SQL> select * from v$dnfs_servers;

ID SVRNAME                                  DIRNAME                                     MNTPORT    NFSPORT      WTMAX      RTMAX
———- —————————————- —————————————- ———- ———- ———- ———-
         1 nfs_server                               /nfs                                           907       2049      32768      32768

1 row selected.

col filename format a40
select * from v$dnfs_files;

SQL> select * from v$dnfs_files;

FILENAME                                   FILESIZE       PNUM     SVR_ID
—————————————- ———- ———- ———-
/opt/oracle/oradata/nfs/test01.dbf       2145394688          9          1

SQL> col path format a30
SQL> select * from  V$DNFS_CHANNELS;

PNUM SVRNAME                                  PATH                                CH_ID     SVR_ID      SENDS      RECVS      PINGS
———- —————————————- —————————— ———- ———- ———- ———- ———-
         5 nfs_server                               192.168.172.128                         0          1          9         25          0
         9 nfs_server                               192.168.172.128                         0          1         28         75          0
        11 nfs_server                               192.168.172.128                         0          1         96        250          0
        12 nfs_server                               192.168.172.128                         0          1        166        552          0
        13 nfs_server                               192.168.172.128                         0          1        216        955          0
        14 nfs_server                               192.168.172.128                         0          1          3          7          0
        15 nfs_server                               192.168.172.128                         0          1        351       1057          0
        17 nfs_server                               192.168.172.128                         0          1        899       2708          0
        18 nfs_server                               192.168.172.128                         0          1          3          7          0
        19 nfs_server                               192.168.172.128                         0          1          2          4          0
        20 nfs_server                               192.168.172.128                         0          1         10         30          0
        21 nfs_server                               192.168.172.128                         0          1         37        109          0
        22 nfs_server                               192.168.172.128                         0          1         18         52          0

13 rows selected.

在NFS server上查看到2049端口的连接:
[root@nfs_server data]# netstat -an |grep 2049
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN
tcp        0      0 192.168.172.128:2049        192.168.172.132:14111       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:51478       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:61228       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:52532       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:10827       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:31047       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:55132       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:866         ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:32634       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:54646       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:47987       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:22448       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:49091       ESTABLISHED

执行:
insert into test select * from test;时
 
使用自已写的查看网卡流量的脚本iftop查看网络流量中,可以写流量只有3.4Mbytes/s
 ifname   in_kbytes/s out_kbytes/s all_kbytes/s in_packets/s out_packets/s all_packets/s
——— ———– ———— ———— ———— ————- ————-
     eth2        3133           99         3232         2370           770          3140
     eth2        3364          147         3511         2559           837          3396
     eth2        3630         1511         5142         2828          1845          4673
     eth2        3315          103         3419         2517           785          3302
     eth2        3380          105         3486         2535           796          3331
     eth2        3627          113         3741         2718           854          3572
     eth2        3610          112         3722         2704           853          3557
     eth2        3586          113         3700         2713           862          3575
     eth2        3471          107         3579         2589           804          3393
     eth2        3470          108         3578         2618           822          3440
     eth2        3347          105         3453         2525           807          3332
     eth2        3406          106         3512         2549           809          3358
     eth2        3351          106         3458         2547           814          3361
     eth2        3248          101         3349         2427           769          3196
     eth2        2743           87         2831         2080           666          2746

而执行select count(*) from test;时可以看到网络流量很高,高的时候达到400Mbytes/s.

在NFS Server端查看连接到2049端口的连接数,可以看到有很多个连接,这与使用操作系统的NFS client端是不一样的,
使用操作系统的NFS client端,到服务器的连接只有一个,由此可见,Oracle Direct NFS通过与服务器建立多个TCP连接
来实现高并发IO,从而提升NFS的性能。连接的数目的多少与压力的大小有关,压力越大,连接数越多。
[root@nfs_server nfs]# netstat -an |grep 2049
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN
tcp   166768      0 192.168.172.128:2049        192.168.172.132:20048       ESTABLISHED
tcp   173716    140 192.168.172.128:2049        192.168.172.132:22625       ESTABLISHED
tcp   172772      0 192.168.172.128:2049        192.168.172.132:28796       ESTABLISHED
tcp   170832      0 192.168.172.128:2049        192.168.172.132:4468        ESTABLISHED
tcp   171764    140 192.168.172.128:2049        192.168.172.132:42147       ESTABLISHED
tcp   172684      0 192.168.172.128:2049        192.168.172.132:63693       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:48835       ESTABLISHED
tcp   170500      0 192.168.172.128:2049        192.168.172.132:57326       ESTABLISHED
tcp   171772      0 192.168.172.128:2049        192.168.172.132:43246       ESTABLISHED
tcp        0      0 192.168.172.128:2049        192.168.172.132:36080       ESTABLISHED
udp        0      0 0.0.0.0:2049                0.0.0.0:*

Oracle11g Direct NFS 测试相关推荐

  1. oracle创建directirtory,oracle11g使用Direct NFS创建表空间

    NFS SERVER 10.10.10.22 NFS CLIENT 10.10.10.12 1.nfs server需要启动的服务: #service portmap start Starting p ...

  2. Veeam黑科技之Direct NFS Access

    最近这些天,碰到不少在VMware环境中使用NFS作为datastore的用户,发现NFS的场景是越来越多了.在以前,可能仅仅会是部分NetApp的用户去使用NFS作为VMware的datastore ...

  3. Oracle11G数据库重演测试

    数据库重演测试 数据库版本:11.2.0.3 OS: rhel6.5 由于数据库服务器硬件调整,参数调整,为测试新硬件环境数据库是否满足性能需求,可通过数据库重演来进行测试. 一下是否生产环境扩内存. ...

  4. kdir测试软件,[OK210开发板体验]入门篇(4)编程入门(NFS登录、驱动入门)

    前面分别介绍了 [OK210开发板体验]的第一篇:开箱验板 [OK210开发板验]的第二篇:板载资源 [OK210开发板体验]的第三篇:开发环境(软件安装,开发环境,烧写系统) 今天是[OK210开发 ...

  5. FIO – IO压力测试工具

    <存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. 1. ...

  6. AXI DMA DRIVER 阶段性 kernel driver 构建并测试(三 )

    可以使用file_operators 绑定 dma 特定的操作模式 ,明天就可以加上寄存器 整体测试 >>> 为应用层程序的打印 根据这个物理地址的打印,是分配成功了, 总感觉哪里还 ...

  7. linux 后端存储,配置NFS网络存储作为cinder的后端存储

    安装cinder和nfs yum install -y openstack-cinder yum install cifs-utils 在controller节点配置nfs [[email prote ...

  8. Ubuntu配置安装NFS服务器

    1.安装NFS服务器: sudo apt-get install nfs-kernel-server 2.创建一个NFS服务器共享文件夹,并设置777权限(可读.可写.可执行): sudo mkdir ...

  9. Linux 环境下NFS服务安装及配置

    1.NFS概述 NFS 是 Network FileSystem 的缩写,是让不同的主机.不同的操作系统可以共享存储的服务.通过 NFS,我们本地 NFS 的客户端可以透明地读写位于服务端 NFS 服 ...

最新文章

  1. Django项目test中的mock概述
  2. 在vue-cli项目中使用echarts
  3. 动软分享社区系统实现个性化导购营销平台
  4. 以太网端口类型和可插拔模块揭密
  5. 写下thinkphp5和thinkphp3.2的不同
  6. 利用Mybatis写第一个数据库操作的程序
  7. Kali Linux Web 渗透测试秘籍 第八章 中间人攻击
  8. 下面介绍几种查看linux版本信息的方法和GCC版本
  9. 使用NPOI导入导出标准Excel(源码)
  10. 将String 转换为byte[]数组
  11. 《Flutter 从0到1构建大前端应用》读后感—第4章【事件处理】
  12. opencv fillConvexPoly深究
  13. python的ctype调用_Python 使用ctypes调用 C 函数
  14. ipa文件生成扫码安装二维码的方法
  15. 注塑模具的温度对注塑工艺的影响到底有多大呢
  16. 做自媒体视频剪辑怎么赚钱呢?
  17. 什么是谐振?什么是LC谐振电路?LC谐振电路有什么用呢?
  18. Android 应用层组件安全测试基础实战技巧
  19. 基于pycharts的白蛇2影评分析
  20. 矢量叉乘能否反求矢量

热门文章

  1. 备忘录:PC(win7 64位)读取雷电2接口阵列
  2. 高通平台usb充电检测
  3. 鸿蒙版瑞幸咖啡开发日记(五)咖啡详情页逻辑实现
  4. 曲面之美:三星 S6 Edge+
  5. <input>的maxlength、size属性----<fieldset>与<legend>
  6. 【小白】学深度学习 发现一个褥百度GPU羊毛的机会
  7. vivo+x21+android版本,vivo X21参数_vivo X21配置怎么样-太平洋IT百科
  8. SSM实现登录注册和邮件激活的功能,并发布到阿里云服务器
  9. 前端 Vue3 + Vant3 + Vite2 构建移动端框架及DEMO
  10. 数据库原理及应用与实践 SQL Sever 笔记