Oracle Direct NFS (DNFS)
Oracle数据库可以通过两种方式使用NFS。
首先、它可以使用通过操作系统中的本机NFS客户端挂载的文件系统。这有时称为内核NFS或kNFS。Oracle数据库挂载和使用NFS文件系统的方式与任何其他应用程序使用NFS文件系统的方式完全相同。
第二种方法是Oracle Direct NFS (DNFS)。这是在Oracle数据库软件中实施的NFS标准。它不会更改数据库管理程序配置或管理Oracle数据库的方式。只要存储系统本身具有正确的设置、DNFS的使用就应该对DBA团队和最终用户透明。
启用了DNFS功能的数据库仍会挂载常见的NFS文件系统。数据库打开后、Oracle数据库将打开一组TCP/IP会话并直接执行NFS操作。
直接NFS
Oracle的直接NFS的主要价值是绕过主机NFS客户端、直接在NFS服务器上执行NFS文件操作。要启用此功能、只需更改Oracle磁盘管理器(ODM)库即可。Oracle文档提供了此过程的说明。
使用DNFS可以显著提高I/O性能、并减少主机和存储系统上的负载、因为I/O是以尽可能最高效的方式执行的。
此外,Oracle DNFS还包括一个*选项*,用于实现网络接口多路径和容错。例如、可以将两个10 Gb接口绑定在一起、以提供20 Gb的带宽。一个接口发生故障会导致在另一个接口上重试I/O。整体操作与FC多路径非常相似。多路径早在几年前就已很常见、当时1 Gb以太网是最常用的标准。10 Gb NIC足以满足大多数Oracle工作负载的需求、但如果需要更多NIC、则可以绑定10 Gb NIC。
使用DNFS时、请务必安装Oracle文档1495104.1中所述的所有修补程序。如果无法安装修补程序、则必须对环境进行评估、以确保该文档中所述的错误不会出现发生原因问题。在某些情况下、无法安装所需的修补程序会导致无法使用DNFS。
请勿将DNFS与任何类型的轮叫名称解析结合使用、包括DNS、DDNS、NIS或任何其他方法。其中包括ONTAP中提供的DNS负载平衡功能。当使用DNFS的Oracle数据库将主机名解析为IP地址时、它在后续查找中不得更改。这可能会导致Oracle数据库崩溃并可能导致数据损坏。
启用DNFS
Oracle DNFS可以与NFSv3结合使用、除了启用DNFS库之外、无需进行任何配置(有关所需的特定命令、请参见Oracle文档)、但如果DNFS无法建立连接、则可以静默还原到内核NFS客户端。如果发生这种情况、可能会严重影响性能。
如果要在多个接口之间使用DNFS多路复用、使用NFSv4.X或使用加密、则必须配置oranfstab文件。语法极为严格。文件中的小错误可能会导致启动挂起或绕过oranfstab文件。
在编写本报告时、DNFS多路径不能与最新版本的Oracle数据库中的NFSv4.1结合使用。将NFSv4.1指定为协议的oranfstab文件只能对给定导出使用一个路径语句。原因是ONTAP不支持客户端ID中继。我们将来可能会提供用于解决此限制的Oracle数据库修补程序。
要确保DNFS按预期运行、唯一的方法是查询v$dnfs表。
下面是一个示例oranfstab文件、该文件位于/等 位置这是可以放置oranfstab文件的多个位置之一。
[root@jfs11 trace]# cat /etc/oranfstab server: NFSv3test path: jfs_svmdr-nfs1 path: jfs_svmdr-nfs2 export: /dbf mount: /oradata export: /logs mount: /logs nfs_version: NFSv3
第一步是检查指定文件系统的DNFS是否正常运行:
SQL> select dirname,nfsversion from v$dnfs_servers; DIRNAME ------------------------------------ NFSVERSION ---------------- /logs NFSv3.0 /dbf NFSv3.0
此输出表示DNFS正在与这两个文件系统结合使用、但它不表示oranfstab正常运行。如果出现错误、DNFS可能已自动发现主机的NFS文件系统、您仍可能会看到此命令的相同输出。
可以按如下所示检查多路径:
SQL> select svrname,path,ch_id from v$dnfs_channels; SVRNAME ------------------------------------ PATH ------------------------------------ CH_ID ---------- NFSv3test jfs_svmdr-nfs1 0 NFSv3test jfs_svmdr-nfs2 1 SVRNAME ------------------------------------ PATH ------------------------------------ CH_ID ---------- NFSv3test jfs_svmdr-nfs1 0 NFSv3test jfs_svmdr-nfs2 [output truncated] SVRNAME ------------------------------------ PATH ------------------------------------ CH_ID ---------- NFSv3test jfs_svmdr-nfs2 1 NFSv3test jfs_svmdr-nfs1 0 SVRNAME ------------------------------------ PATH ------------------------------------ CH_ID ---------- NFSv3test jfs_svmdr-nfs2 1 66 rows selected.
这些是DNFS正在使用的连接。对于每个SVRNAME条目、可以看到两个路径和通道。这意味着多路径正在工作、这意味着已识别并处理oranfstab文件。
直接NFS和主机文件系统访问
对于依赖主机上挂载的可见文件系统的应用程序或用户活动、使用DNFS有时可能会出现发生原因问题、因为DNFS客户端会从主机操作系统带外访问文件系统。DNFS客户端可以在不了解操作系统的情况下创建、删除和修改文件。
如果使用单实例数据库的挂载选项、则可以缓存文件和目录属性、这也意味着可以缓存目录的内容。因此、DNFS可以创建文件、在操作系统重新读取目录内容和文件对用户可见之前、存在一个短暂的延迟。这通常不是问题,但在极少数情况下,SAP BR*Tools等实用程序可能会出现问题。如果发生这种情况、请更改挂载选项以使用针对Oracle RAC的建议来解决此问题。此更改会导致禁用所有主机缓存。
只有在以下情况下才更改挂载选项:(a)使用DNFS;(b)问题是由于文件可见性滞后而导致的。如果未使用DNFS、则在单实例数据库上使用Oracle RAC挂载选项会导致性能下降。
有关可能会产生异常结果的Linux特定DNFS问题、请参见中的"Linux NFS挂载选项"注释 nosharecache 。
|