本篇内容主要讲解“Oracle ASM Filter Driver的相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle ASM Filter Driver的相关知识点有哪些”吧!

Oracle ASM Filter Driver(Oracle ASMFD)消除了在系统每次被重启后Oracle ASM需要重新绑定磁盘设备来简化对磁盘设备的配置与管理。Oracle ASM Filter Driver(Oracle ASMFD)是一种内置在Oracle ASM磁盘的IO路径中的内核模块。Oracle ASM使用filter driver来验证对Oracle ASM磁盘的写IO操作。Oracle ASM Filter Driver会拒绝任何无效的IO请求。这种操作消除了意外覆盖Oracle ASM磁盘而损坏磁盘组中的磁盘与文件。例如,Oracle ASM Filter Driver会过滤掉所有可能意外覆盖磁盘的非Oracle IO操作。从Oracle 12.2开始,Oracle ASM Filter Driver(Oracle ASMFD)在系统安装Oracle ASMLIB的情况下不能被安装,如果你想安装与配置Oracle ASMFD,那么必须首先卸载Oracle ASMLIB。Oracle 12.2的ASMFD不支持扩展分区表。

配置Oracle ASM Filter Driver
可以在安装Oracle Grid Infrastructure时或在安装Oracle Grid Infrastructure后对磁盘设备永久性配置Oracle ASM Filter Driver(Oracle ASMFD)。

在安装Oracle Grid Infrastructure时配置Oracle ASM Filter Driver
在安装Oracle Grid Infrastructure时,可以选择启用自动安装与配置Oracle ASM Filter Driver。如果在安装Oracle Grid Infrastructure所在的系统中没有使用udev,那么可以在在安装Oracle Grid Infrastructure之前执行下面的操作来为Oracle ASMFD准备磁盘。下面的操作必须在Oracle Grid Infrastructure软件包在Oracle Grid Infrastructure home目录中必须解压后,但在配置ASMFD之前执行。

1.为了使用Oracle ASM Filter Driver来配置共享磁盘,以root用户来设置环境变量$ORACLE_HOME为Grid Home目录,设置环境变量$ORACLE_BASE为临时目录

#setORACLE_HOME=/u01/app/oracle/12.2.0/grid#setORACLE_BASE=/tmp

ORACLE_BASE变量被设置为临时目录可以避免在安装Oracle Grid Infrastructure之前在Grid Home目录中创建诊断或跟踪文件。在执行下面的操作之前,确保是在$ORACLE_HOME/bin目录中执行命令。

2.使用ASMCMD afd_label命令来为Oracle ASM Filter Driver来准备磁盘.

#asmcmdafd_labelDATA1/dev/disk1a--init

3.使用ASMCMD afd_lslbl命令来验证磁盘是否已经被标记可以为Oracle ASMFD所使用

#asmcmdafd_lslbl/dev/disk1a

查看某块磁盘

[rootd@cs1~]./asmcmdafd_lslbl/dev/asmdisk01--------------------------------------------------------------------------------LabelDuplicatePath================================================================================CRS2/dev/asmdisk01

列出已经标记可以为Oracle ASMFD所使用的所有磁盘

[grid@jytest1~]$asmcmdafd_lslbl--------------------------------------------------------------------------------LabelDuplicatePath================================================================================CRS1/dev/asmdisk02CRS2/dev/asmdisk01DATA1/dev/asmdisk03DATA2/dev/asmdisk04FRA1/dev/asmdisk07TEST1/dev/asmdisk05TEST2/dev/asmdisk06

4.当为Oracle ASMFD准备完磁盘后清除变量ORACLE_BASE

#unsetORACLE_BASE

5.运行安装脚本(gridSetup.sh)来安装Oracle Grid Infrastructure并启用Oracle ASM Filter Driver配置。

在安装Oracle Grid Infrastructure后配置Oracle ASM Filter Driver
如果在安装Grid Infrastructure时没有启用配置Oracle ASMFD,那么可以使用Oracle ASMFD来手动配置Oracle ASM设备。

为Oracle Grid Infrastructure Clusterware环境配置Oracle ASM,具体操作如下:
1.以Oracle Grid Infrastructure用户来更新Oracle ASM磁盘发现路径来使Oracle ASMFD来发现磁盘。
首先检查当前Oracle ASM磁盘发现路径并更新

[grid@cs1~]$asmcmddsgetparameter:/dev/sd*,/dev/asm*profile:/dev/sd*,/dev/asm*

将'AFD:*'增加到发现磁盘路径中

[grid@cs1~]$asmcmddsset'dev/sd*','/dev/asm*','AFD:*'[grid@cs1~]$asmcmddsgetparameter:dev/sd*,/dev/asm*,AFD:*profile:dev/sd*,/dev/asm*,AFD:*

2.以Oracle Grid Infrastructure用户来获取cluster中的节点列表与角色

[grid@cs1~]$olsnodes-acs1Hubcs2Hub

3.在每个Hub与Leaf节点上,可以以回滚或非回滚模式来执行以下操作
3.1以root用户来停止Oracle Grid Infrastructure

#$ORACLE_HOME/bin/crsctlstopcrs

如果命令返回错误,那么执行下面的命令来强制停止Oracle Grid Infrastructure

#$ORACLE_HOME/bin/crsctlstopcrs-f

3.2在节点层面以root用户来配置Oracle ASMFD

#$ORACLE_HOME/bin/asmcmdafd_configure

3.3以Oracle Grid Infrastructure用户来验证Oracle ASMFD的状态

[grid@cs2~]$asmcmdafd_stateASMCMD-9526:TheAFDstateis'LOADED'andfilteringis'ENABLED'onhost'cs2.jy.net'

3.4以root用户来启动Oracle Clusterware stack

#$ORACLE_HOME/bin/crsctlstartcrs

3.5以Oracle Grid Infrastructure用户来设置Oracle ASMFD发现磁盘路径为步骤3.1中所检索到的原始Oracle ASM磁盘发现路径

[grid@cs1~]$asmcmddsset'dev/sd*','/dev/asm*'

迁移不包含OCR或vote文件的磁盘组到Oracle ASMFD
1.以Oracle Grid Infrastructure用户来执行以下操作

2.列出已经存在的磁盘组

[grid@cs2~]$asmcmdlsdgStateTypeRebalSectorLogical_SectorBlockAUTotal_MBFree_MBReq_mir_free_MBUsable_file_MBOffline_disksVoting_filesNameMOUNTEDEXTERNN51251240964194304409601544015440YCRS/MOUNTEDEXTERNN512512409641943044096086008600NDATA/MOUNTEDNORMALN5125124096419430440960407040203520NDN/

3.列出相关磁盘

[grid@cs2~]$asmcmdlsdsk-GDNPath/dev/asmdisk03/dev/asmdisk05

从下面的查询可以看到/dev/asmdisk03和/dev/asmdisk05的label字段为空

SQL>selectgroup_number,disk_number,name,label,pathfromv$asm_disk;GROUP_NUMBERDISK_NUMBERNAMELABELPATH---------------------------------------------------------------------------------------------------------------------------------------------------------00CRS2/dev/asmdisk0101CRS1/dev/asmdisk0202DATA1/dev/asmdisk0430DN_0000/dev/asmdisk0331DN_0001/dev/asmdisk0510CRS1CRS1AFD:CRS120DATA1DATA1AFD:DATA111CRS2CRS2AFD:CRS2

4.检查Oracle ASM是否是活动状态

[grid@cs2~]$srvctlstatusasmASMisrunningoncs1,cs2

5.在所有节点上停止数据库与dismount磁盘组

[grid@cs2~]$srvctlstopdiskgroup-diskgroupDN-f

6.在每个Hub节点上执行以下命令来为磁盘组中的所有已经存在的磁盘进行标记

[grid@cs2~]$asmcmdafd_labelDN1/dev/asmdisk03--migrate[grid@cs2~]$asmcmdafd_labelDN2/dev/asmdisk05--migrate

7.在所有Hub节点上扫描磁盘

[grid@cs1~]$asmcmdafd_scan[grid@cs2~]$asmcmdafd_scan

8.在所有节点启动数据库并mount磁盘组

[grid@cs2~]$srvctlstartdiskgroup-diskgroupDN

从下面的查询可以看到/dev/asmdisk03和/dev/asmdisk05的label字段分别显示为DN1和DN2

SQL>selectgroup_number,disk_number,name,label,pathfromv$asm_disk;GROUP_NUMBERDISK_NUMBERNAMELABELPATH---------------------------------------------------------------------------------------------------------------------------------------------------------00CRS2/dev/asmdisk0101DN2/dev/asmdisk0502DN1/dev/asmdisk0303CRS1/dev/asmdisk0204DATA1/dev/asmdisk0411CRS2CRS2AFD:CRS220DATA1DATA1AFD:DATA110CRS1CRS1AFD:CRS130DN_0000DN1AFD:DN131DN_0001DN2AFD:DN2

现在可以将原先的 udev rules 文件移除。当然,这要在所有节点中都运行。以后如果服务器再次重启,AFD 就会完全接管了。

[root@cs1bin]#cd/etc/udev/rules.d/[root@cs1rules.d]#ls-lrttotal16-rw-r--r--.1rootroot709Mar6201570-persistent-ipoib.rules-rw-r--r--1rootroot1416Mar912:2399-my-asmdevices.rules-rw-r--r--1rootroot224Mar915:5253-afd.rules-rw-r--r--1rootroot190Mar915:5455-usm.rules[root@cs1rules.d]#mv99-my-asmdevices.rules99-my-asmdevices.rules.bak[root@cs1rules.d]#cat53-afd.rules##AFDdevicesKERNEL=="oracleafd/.*",OWNER="grid",GROUP="asmadmin",MODE="0775"KERNEL=="oracleafd/*",OWNER="grid",GROUP="asmadmin",MODE="0775"KERNEL=="oracleafd/disks/*",OWNER="grid",GROUP="asmadmin",MODE="0664"[root@cs1rules.d]#ls-l/dev/oracleafd/diskstotal20-rwxrwx---1gridoinstall15Aug3014:30CRS1-rwxrwx---1gridoinstall15Aug3014:30CRS2-rwxrwx---1gridoinstall15Aug3014:30DATA1-rwxrwx---1gridoinstall15Aug3017:42DN1-rwxrwx---1gridoinstall15Aug3017:42DN2[root@cs2bin]#cd/etc/udev/rules.d/[root@cs2rules.d]#ls-lrttotal16-rw-r--r--.1rootroot709Mar6201570-persistent-ipoib.rules-rw-r--r--1rootroot1416Mar912:2399-my-asmdevices.rules-rw-r--r--1rootroot224Mar915:5253-afd.rules-rw-r--r--1rootroot190Mar915:5455-usm.rules[root@cs2rules.d]#mv99-my-asmdevices.rules99-my-asmdevices.rules.bak[root@cs2rules.d]#cat53-afd.rules##AFDdevicesKERNEL=="oracleafd/.*",OWNER="grid",GROUP="asmadmin",MODE="0775"KERNEL=="oracleafd/*",OWNER="grid",GROUP="asmadmin",MODE="0775"KERNEL=="oracleafd/disks/*",OWNER="grid",GROUP="asmadmin",MODE="0664"[root@cs2rules.d]#ls-l/dev/oracleafd/diskstotal20-rwxrwx---1gridoinstall15Aug3014:30CRS1-rwxrwx---1gridoinstall15Aug3014:30CRS2-rwxrwx---1gridoinstall15Aug3014:30DATA1-rwxrwx---1gridoinstall15Aug3017:42DN1-rwxrwx---1gridoinstall15Aug3017:42DN2

其实,AFD 也在使用 udev

迁移包含OCR或vote文件的磁盘组到Oracle ASMFD
1.以root用户来列出包含OCR和vote文件的磁盘组

[root@cs1~]#cd/u01/app/product/12.2.0/crs/bin[root@cs1bin]#shocrcheck-configOracleClusterRegistryconfigurationis:Device/FileName:+CRSDevice/FileName:+DATA[root@cs1bin]#shcrsctlquerycssvotedisk##STATEFileUniversalIdFileNameDiskgroup------------------------------------------1.ONLINE750a78e1ae984fcdbfb4dbf44d337a77(/dev/asmdisk02)[CRS]Located1votingdisk(s).

2.以Oracle Grid Infrastructure用户来列出与磁盘组相关的磁盘

[grid@cs2~]$asmcmdlsdsk-GCRSPath/dev/asmdisk01/dev/asmdisk02

3.以root用户来在所有节点上停止数据库与Oracle Clusterware

[root@cs1bin]#./crsctlstopcluster-allCRS-2673:Attemptingtostop'ora.crsd'on'cs2'CRS-2673:Attemptingtostop'ora.crsd'on'cs1'CRS-2790:StartingshutdownofClusterReadyServices-managedresourcesonserver'cs2'CRS-2790:StartingshutdownofClusterReadyServices-managedresourcesonserver'cs1'CRS-2673:Attemptingtostop'ora.cs.db'on'cs1'CRS-2673:Attemptingtostop'ora.qosmserver'on'cs2'CRS-2673:Attemptingtostop'ora.cs.db'on'cs2'CRS-2673:Attemptingtostop'ora.chad'on'cs2'CRS-2673:Attemptingtostop'ora.gns'on'cs2'CRS-2677:Stopof'ora.gns'on'cs2'succeededCRS-2677:Stopof'ora.cs.db'on'cs2'succeededCRS-2673:Attemptingtostop'ora.CRS.dg'on'cs2'CRS-2673:Attemptingtostop'ora.DATA.dg'on'cs2'CRS-2673:Attemptingtostop'ora.LISTENER.lsnr'on'cs2'CRS-2673:Attemptingtostop'ora.LISTENER_SCAN2.lsnr'on'cs2'CRS-2673:Attemptingtostop'ora.LISTENER_SCAN3.lsnr'on'cs2'CRS-2673:Attemptingtostop'ora.cvu'on'cs2'CRS-2673:Attemptingtostop'ora.gns.vip'on'cs2'CRS-2677:Stopof'ora.cs.db'on'cs1'succeededCRS-2677:Stopof'ora.CRS.dg'on'cs2'succeededCRS-2673:Attemptingtostop'ora.LISTENER.lsnr'on'cs1'CRS-2673:Attemptingtostop'ora.LISTENER_SCAN1.lsnr'on'cs1'CRS-2677:Stopof'ora.DATA.dg'on'cs2'succeededCRS-2673:Attemptingtostop'ora.asm'on'cs2'CRS-2677:Stopof'ora.asm'on'cs2'succeededCRS-2677:Stopof'ora.LISTENER.lsnr'on'cs1'succeededCRS-2673:Attemptingtostop'ora.ASMNET1LSNR_ASM.lsnr'on'cs2'CRS-2677:Stopof'ora.LISTENER_SCAN1.lsnr'on'cs1'succeededCRS-2673:Attemptingtostop'ora.scan1.vip'on'cs1'CRS-2677:Stopof'ora.LISTENER.lsnr'on'cs2'succeededCRS-2677:Stopof'ora.LISTENER_SCAN3.lsnr'on'cs2'succeededCRS-2677:Stopof'ora.LISTENER_SCAN2.lsnr'on'cs2'succeededCRS-2677:Stopof'ora.scan1.vip'on'cs1'succeededCRS-2673:Attemptingtostop'ora.cs2.vip'on'cs2'CRS-2673:Attemptingtostop'ora.scan2.vip'on'cs2'CRS-2673:Attemptingtostop'ora.scan3.vip'on'cs2'CRS-2677:Stopof'ora.gns.vip'on'cs2'succeededCRS-2677:Stopof'ora.scan3.vip'on'cs2'succeededCRS-2677:Stopof'ora.cs2.vip'on'cs2'succeededCRS-2677:Stopof'ora.qosmserver'on'cs2'succeededCRS-2677:Stopof'ora.scan2.vip'on'cs2'succeededCRS-2677:Stopof'ora.ASMNET1LSNR_ASM.lsnr'on'cs2'succeededCRS-2673:Attemptingtostop'ora.chad'on'cs1'CRS-2677:Stopof'ora.cvu'on'cs2'succeededCRS-2677:Stopof'ora.chad'on'cs2'succeededCRS-2673:Attemptingtostop'ora.ons'on'cs2'CRS-2677:Stopof'ora.ons'on'cs2'succeededCRS-2673:Attemptingtostop'ora.net1.network'on'cs2'CRS-2677:Stopof'ora.net1.network'on'cs2'succeededCRS-2792:ShutdownofClusterReadyServices-managedresourceson'cs2'hascompletedCRS-2677:Stopof'ora.crsd'on'cs2'succeededCRS-2673:Attemptingtostop'ora.ctssd'on'cs2'CRS-2673:Attemptingtostop'ora.evmd'on'cs2'CRS-2673:Attemptingtostop'ora.storage'on'cs2'CRS-2677:Stopof'ora.storage'on'cs2'succeededCRS-2673:Attemptingtostop'ora.asm'on'cs2'CRS-2677:Stopof'ora.ctssd'on'cs2'succeededCRS-2677:Stopof'ora.evmd'on'cs2'succeededCRS-2677:Stopof'ora.chad'on'cs1'succeededCRS-2673:Attemptingtostop'ora.mgmtdb'on'cs1'CRS-2677:Stopof'ora.mgmtdb'on'cs1'succeededCRS-2673:Attemptingtostop'ora.MGMTLSNR'on'cs1'CRS-2673:Attemptingtostop'ora.CRS.dg'on'cs1'CRS-2673:Attemptingtostop'ora.DATA.dg'on'cs1'CRS-2677:Stopof'ora.CRS.dg'on'cs1'succeededCRS-2677:Stopof'ora.DATA.dg'on'cs1'succeededCRS-2673:Attemptingtostop'ora.asm'on'cs1'CRS-2677:Stopof'ora.MGMTLSNR'on'cs1'succeededCRS-2673:Attemptingtostop'ora.cs1.vip'on'cs1'CRS-2677:Stopof'ora.cs1.vip'on'cs1'succeededCRS-2677:Stopof'ora.asm'on'cs2'succeededCRS-2673:Attemptingtostop'ora.cluster_interconnect.haip'on'cs2'CRS-2677:Stopof'ora.cluster_interconnect.haip'on'cs2'succeededCRS-2673:Attemptingtostop'ora.cssd'on'cs2'CRS-2677:Stopof'ora.cssd'on'cs2'succeededCRS-2677:Stopof'ora.asm'on'cs1'succeededCRS-2673:Attemptingtostop'ora.ASMNET1LSNR_ASM.lsnr'on'cs1'CRS-2677:Stopof'ora.ASMNET1LSNR_ASM.lsnr'on'cs1'succeededCRS-2673:Attemptingtostop'ora.ons'on'cs1'CRS-2677:Stopof'ora.ons'on'cs1'succeededCRS-2673:Attemptingtostop'ora.net1.network'on'cs1'CRS-2677:Stopof'ora.net1.network'on'cs1'succeededCRS-2792:ShutdownofClusterReadyServices-managedresourceson'cs1'hascompletedCRS-2677:Stopof'ora.crsd'on'cs1'succeededCRS-2673:Attemptingtostop'ora.ctssd'on'cs1'CRS-2673:Attemptingtostop'ora.evmd'on'cs1'CRS-2673:Attemptingtostop'ora.storage'on'cs1'CRS-2677:Stopof'ora.storage'on'cs1'succeededCRS-2673:Attemptingtostop'ora.asm'on'cs1'CRS-2677:Stopof'ora.ctssd'on'cs1'succeededCRS-2677:Stopof'ora.evmd'on'cs1'succeededCRS-2677:Stopof'ora.asm'on'cs1'succeededCRS-2673:Attemptingtostop'ora.cluster_interconnect.haip'on'cs1'CRS-2677:Stopof'ora.cluster_interconnect.haip'on'cs1'succeededCRS-2673:Attemptingtostop'ora.cssd'on'cs1'CRS-2677:Stopof'ora.cssd'on'cs1'succeeded

4.以Oracle Grid Infrastructure用户来执行下面的命令为每个Hub节点上的磁盘组中的磁盘进行标记

[grid@cs2~]$asmcmdafd_labelDN1/dev/asmdisk03[grid@cs2~]$asmcmdafd_labelDN2/dev/asmdisk05

5.以Oracle Grid Infrastructure用户来执行下面的命令对每个Hub节点进行磁盘重新扫描

[grid@cs1~]$asmcmdafd_scan[grid@cs2~]$asmcmdafd_scan

6.以root用户来在所有节点上启用Oracle Clusterware stack并mount OCR与vote文件磁盘与数据库

[root@cs1bin]#./crsctlstartcluster-allCRS-2672:Attemptingtostart'ora.cssdmonitor'on'cs1'CRS-2672:Attemptingtostart'ora.evmd'on'cs1'CRS-2672:Attemptingtostart'ora.cssdmonitor'on'cs2'CRS-2672:Attemptingtostart'ora.evmd'on'cs2'CRS-2676:Startof'ora.cssdmonitor'on'cs1'succeededCRS-2672:Attemptingtostart'ora.cssd'on'cs1'CRS-2672:Attemptingtostart'ora.diskmon'on'cs1'CRS-2676:Startof'ora.diskmon'on'cs1'succeededCRS-2676:Startof'ora.evmd'on'cs1'succeededCRS-2676:Startof'ora.cssdmonitor'on'cs2'succeededCRS-2672:Attemptingtostart'ora.cssd'on'cs2'CRS-2672:Attemptingtostart'ora.diskmon'on'cs2'CRS-2676:Startof'ora.diskmon'on'cs2'succeededCRS-2676:Startof'ora.evmd'on'cs2'succeededCRS-2676:Startof'ora.cssd'on'cs1'succeededCRS-2672:Attemptingtostart'ora.ctssd'on'cs1'CRS-2672:Attemptingtostart'ora.cluster_interconnect.haip'on'cs1'CRS-2676:Startof'ora.cssd'on'cs2'succeededCRS-2672:Attemptingtostart'ora.ctssd'on'cs2'CRS-2672:Attemptingtostart'ora.cluster_interconnect.haip'on'cs2'CRS-2676:Startof'ora.ctssd'on'cs1'succeededCRS-2676:Startof'ora.ctssd'on'cs2'succeededCRS-2676:Startof'ora.cluster_interconnect.haip'on'cs1'succeededCRS-2672:Attemptingtostart'ora.asm'on'cs1'CRS-2676:Startof'ora.cluster_interconnect.haip'on'cs2'succeededCRS-2672:Attemptingtostart'ora.asm'on'cs2'CRS-2676:Startof'ora.asm'on'cs2'succeededCRS-2672:Attemptingtostart'ora.storage'on'cs2'CRS-2676:Startof'ora.asm'on'cs1'succeededCRS-2672:Attemptingtostart'ora.storage'on'cs1'CRS-2676:Startof'ora.storage'on'cs1'succeededCRS-2672:Attemptingtostart'ora.crsd'on'cs1'CRS-2676:Startof'ora.crsd'on'cs1'succeededCRS-2676:Startof'ora.storage'on'cs2'succeededCRS-2672:Attemptingtostart'ora.crsd'on'cs2'CRS-2676:Startof'ora.crsd'on'cs2'succeeded

判断Oracle ASM Filter Driver是否已经配置
可以通过判断Oracle ASM实例的SYS_ASMFD_PROPERTIES的AFD_STATE参数值来判断Oracle ASMFD是否被配置。也可以使用ASMCMD afd_state命令来检查Oracle ASMFD的状态

[grid@cs1~]$asmcmdafd_stateASMCMD-9526:TheAFDstateis'LOADED'andfilteringis'DISABLED'onhost'cs1.jy.net'[grid@cs2~]$asmcmdafd_stateASMCMD-9526:TheAFDstateis'LOADED'andfilteringis'ENABLED'onhost'cs2.jy.net'

下面的查询如果AFD_STATE参数值等于NOT AVAILABLE就表示Oracle ASMFD没有被配置

SQL>selectsys_context('SYS_ASMFD_PROPERTIES','AFD_STATE')fromdual;SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_STATE')---------------------------------------------------------------------------CONFIGURED

设置Oracle ASM Filter Driver的AFD_DISKSTRING参数
AFD_DISKSTRING参数来指定Oracle ASMFD磁盘发现路径来标识由Oracle ASMFD来管理的磁盘。也可以使用ASMCMD afd_dsset和afd_dsget命令来设置和显示AFD_DISKSTRING参数:

[grid@cs1~]$asmcmdafd_dsset'/dev/sd*','/dev/asm*','AFD:*'[grid@cs2~]$asmcmdafd_dsset'/dev/sd*','/dev/asm*','AFD:*'[grid@cs1~]$asmcmddsgetparameter:dev/sd*,/dev/asm*,AFD:*profile:dev/sd*,/dev/asm*,AFD:*[grid@cs2~]$asmcmddsgetparameter:dev/sd*,/dev/asm*,AFD:*profile:dev/sd*,/dev/asm*,AFD:*

可以使用alter system语句来设置AFD_DISKSTRING。标识已经被创建在磁盘头中通过Oracle ASMFD磁盘发现路径来识别磁盘

SQL>ALTERSYSTEMAFD_DISKSTRINGSET'dev/sd*','/dev/asm*','AFD:*';Systemaltered.SQL>SELECTSYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_DISKSTRING')FROMDUAL;SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_DISKSTRING')-----------------------------------------------------------------------------------dev/sd*,/dev/asm*,AFD:*

为Oracle ASM Filter Driver磁盘设置Oracle ASM ASM_DISKSTRING参数
可以更新Oracle ASM磁盘发现路径来增加或删除Oracle ASMFD 磁盘标识名到ASM_DISKSTRING参数,可以使用alter system语句或asmcmd dsset命令

SQL>showparameterasm_diskstringNAMETYPEVALUE----------------------------------------------------------------------------------------asm_diskstringstringdev/sd*,/dev/asm*,AFD:*[grid@cs1~]$asmcmddsset'dev/sd*','/dev/asm*','AFD:*'[grid@cs2~]$asmcmddsset'dev/sd*','/dev/asm*','AFD:*'

测试Filter功能
首先检查filter功能是否开启

[grid@cs1~]$asmcmdafd_stateASMCMD-9526:TheAFDstateis'LOADED'andfilteringis'ENABLED'onhost'cs1.jy.net'[grid@jytest1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk03DATA2ENABLED/dev/asmdisk04FRA1ENABLED/dev/asmdisk07TEST1ENABLED/dev/asmdisk05TEST2ENABLED/dev/asmdisk06

上面的结果显示filter功能已经开启,如果要禁用filter功能执行asmcmd afd_filter -d

[grid@cs1~]$asmcmdafd_filter-d[grid@cs1~]$asmcmdafd_stateASMCMD-9526:TheAFDstateis'LOADED'andfilteringis'ENABLED'onhost'jytest1.jydba.net'[grid@cs1~]$asmcmdafd_lsdskTherearenolabelleddevices.

如果要开启filter功能执行asmcmd afd_filter -e

[grid@jytest1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk03DATA2ENABLED/dev/asmdisk04FRA1ENABLED/dev/asmdisk07TEST1ENABLED/dev/asmdisk05TEST2ENABLED/dev/asmdisk06

先用 KFED 读取一下TEST磁盘组的AFD:TEST1的磁盘头,验证一下确实无误

[grid@jytest1~]$kfedreadAFD:TEST1kfbh.endian:1;0x000:0x01kfbh.hard:130;0x001:0x82kfbh.type:1;0x002:KFBTYP_DISKHEADkfbh.datfmt:1;0x003:0x01kfbh.block.blk:0;0x004:blk=0kfbh.block.obj:2147483648;0x008:disk=0kfbh.check:3275580027;0x00c:0xc33d627bkfbh.fcn.base:0;0x010:0x00000000kfbh.fcn.wrap:0;0x014:0x00000000kfbh.spare1:0;0x018:0x00000000kfbh.spare2:0;0x01c:0x00000000kfdhdb.driver.provstr:ORCLDISKTEST1;0x000:length=13kfdhdb.driver.reserved[0]:1414743380;0x008:0x54534554kfdhdb.driver.reserved[1]:49;0x00c:0x00000031kfdhdb.driver.reserved[2]:0;0x010:0x00000000kfdhdb.driver.reserved[3]:0;0x014:0x00000000kfdhdb.driver.reserved[4]:0;0x018:0x00000000kfdhdb.driver.reserved[5]:0;0x01c:0x00000000kfdhdb.compat:203424000;0x020:0x0c200100kfdhdb.dsknum:0;0x024:0x0000kfdhdb.grptyp:2;0x026:KFDGTP_NORMALkfdhdb.hdrsts:3;0x027:KFDHDR_MEMBERkfdhdb.dskname:TEST1;0x028:length=5kfdhdb.grpname:TEST;0x048:length=4kfdhdb.fgname:TEST1;0x068:length=5kfdhdb.fgname:DN1;0x068:length=3

下面直接用dd尝试将磁盘头清零。dd 命令本身没有任何错误返回。

[root@cs1~]#ddif=/dev/zeroof=/dev/asmdisk03bs=1024count=1000010000+0recordsin10000+0recordsout10240000bytes(10MB)copied,1.24936s,8.2MB/s

备份磁盘的前1024字节并清除,普通用户没权限读

[root@jytest1~]#ddif=/dev/asmdisk05of=asmdisk05_headerbs=1024count=11+0recordsin1+0recordsout1024bytes(1.0kB)copied,0.000282638s,3.6MB/s[root@jytest1~]#ls-lrt-rw-r--r--1rootroot1024Aug3101:22asmdisk05_header[root@jytest1~]#ddif=/dev/zeroof=/dev/asmdisk05bs=1024count=11+0recordsin1+0recordsout1024bytes(1.0kB)copied,0.000318516s,3.2MB/s

再用KFED读取一下TEST磁盘组的AFD:TEST1的磁盘头,验证一下确实无误

[grid@jytest1~]$kfedreadAFD:TEST1kfbh.endian:1;0x000:0x01kfbh.hard:130;0x001:0x82kfbh.type:1;0x002:KFBTYP_DISKHEADkfbh.datfmt:1;0x003:0x01kfbh.block.blk:0;0x004:blk=0kfbh.block.obj:2147483648;0x008:disk=0kfbh.check:3275580027;0x00c:0xc33d627bkfbh.fcn.base:0;0x010:0x00000000kfbh.fcn.wrap:0;0x014:0x00000000kfbh.spare1:0;0x018:0x00000000kfbh.spare2:0;0x01c:0x00000000kfdhdb.driver.provstr:ORCLDISKTEST1;0x000:length=13kfdhdb.driver.reserved[0]:1414743380;0x008:0x54534554kfdhdb.driver.reserved[1]:49;0x00c:0x00000031kfdhdb.driver.reserved[2]:0;0x010:0x00000000kfdhdb.driver.reserved[3]:0;0x014:0x00000000kfdhdb.driver.reserved[4]:0;0x018:0x00000000kfdhdb.driver.reserved[5]:0;0x01c:0x00000000kfdhdb.compat:203424000;0x020:0x0c200100kfdhdb.dsknum:0;0x024:0x0000kfdhdb.grptyp:2;0x026:KFDGTP_NORMALkfdhdb.hdrsts:3;0x027:KFDHDR_MEMBERkfdhdb.dskname:TEST1;0x028:length=5kfdhdb.grpname:TEST;0x048:length=4kfdhdb.fgname:TEST1;0x068:length=5

测试dismount磁盘组TEST,再mount磁盘组TEST都能成功

[grid@jytest1~]$asmcmdumountTEST[grid@jytest1~]$asmcmdlsdgStateTypeRebalSectorLogical_SectorBlockAUTotal_MBFree_MBReq_mir_free_MBUsable_file_MBOffline_disksVoting_filesNameMOUNTEDEXTERNN512512409641943044096026402640YCRS/MOUNTEDEXTERNN5125124096419430440960247320247320NDATA/MOUNTEDEXTERNN5125124096419430440960184520184520NFRA/[grid@jytest1~]$asmcmdmountTEST[grid@jytest1~]$asmcmdlsdgStateTypeRebalSectorLogical_SectorBlockAUTotal_MBFree_MBReq_mir_free_MBUsable_file_MBOffline_disksVoting_filesNameMOUNTEDEXTERNN512512409641943044096026402640YCRS/MOUNTEDEXTERNN5125124096419430440960247320247320NDATA/MOUNTEDEXTERNN5125124096419430440960184520184520NFRA/MOUNTEDNORMALN512512409641943044096011128055640NTEST/

现在对磁盘/dev/asmdisk05禁用filter功能

[grid@jytest1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk03DATA2ENABLED/dev/asmdisk04FRA1ENABLED/dev/asmdisk07TEST1ENABLED/dev/asmdisk05TEST2ENABLED/dev/asmdisk06[grid@jytest1~]$asmcmdafd_filter-d/dev/asmdisk05[grid@jytest1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk03DATA2ENABLED/dev/asmdisk04FRA1ENABLED/dev/asmdisk07TEST1DISABLED/dev/asmdisk05TEST2ENABLED/dev/asmdisk06

清除磁盘的前1024字节

[root@jytest1~]#ddif=/dev/zeroof=/dev/asmdisk05bs=1024count=11+0recordsin1+0recordsout1024bytes(1.0kB)copied,0.000318516s,3.2MB/s[grid@jytest1~]$asmcmdumountTEST[grid@jytest1~]$asmcmdmountTESTORA-15032:notallalterationsperformedORA-15017:diskgroup"TEST"cannotbemountedORA-15040:diskgroupisincomplete(DBDERROR:OCIStmtExecute)[grid@jytest1~]$kfedreadAFD:TEST1kfbh.endian:0;0x000:0x00kfbh.hard:0;0x001:0x00kfbh.type:0;0x002:KFBTYP_INVALIDkfbh.datfmt:0;0x003:0x00kfbh.block.blk:0;0x004:blk=0kfbh.block.obj:0;0x008:file=0kfbh.check:0;0x00c:0x00000000kfbh.fcn.base:0;0x010:0x00000000kfbh.fcn.wrap:0;0x014:0x00000000kfbh.spare1:0;0x018:0x00000000kfbh.spare2:0;0x01c:0x0000000000000000000000000000000000000000000000000[................]Repeat255timesKFED-00322:invalidcontentencounteredduringblocktraversal:[kfbtTraverseBlock][InvalidOSMblocktype][][0]

可以看到当filter功能被禁用时就失去了保护功能

使用之前备份的磁盘前1024字节信息来恢复磁盘头

[root@jytest1~]#ddif=asmdisk05_headerof=/dev/asmdisk05bs=1024count=11+0recordsin1+0recordsout1024bytes(1.0kB)copied,0.000274822s,3.7MB/s[grid@jytest1~]$kfedread/dev/asmdisk05kfbh.endian:1;0x000:0x01kfbh.hard:130;0x001:0x82kfbh.type:1;0x002:KFBTYP_DISKHEADkfbh.datfmt:1;0x003:0x01kfbh.block.blk:0;0x004:blk=0kfbh.block.obj:2147483648;0x008:disk=0kfbh.check:1645917758;0x00c:0x621ab63ekfbh.fcn.base:0;0x010:0x00000000kfbh.fcn.wrap:0;0x014:0x00000000kfbh.spare1:0;0x018:0x00000000kfbh.spare2:0;0x01c:0x00000000kfdhdb.driver.provstr:ORCLDISKTEST1;0x000:length=13kfdhdb.driver.reserved[0]:1414743380;0x008:0x54534554kfdhdb.driver.reserved[1]:49;0x00c:0x00000031kfdhdb.driver.reserved[2]:0;0x010:0x00000000kfdhdb.driver.reserved[3]:0;0x014:0x00000000kfdhdb.driver.reserved[4]:0;0x018:0x00000000kfdhdb.driver.reserved[5]:0;0x01c:0x00000000kfdhdb.compat:203424000;0x020:0x0c200100kfdhdb.dsknum:0;0x024:0x0000kfdhdb.grptyp:2;0x026:KFDGTP_NORMALkfdhdb.hdrsts:3;0x027:KFDHDR_MEMBERkfdhdb.dskname:TEST1;0x028:length=5kfdhdb.grpname:TEST;0x048:length=4kfdhdb.fgname:TEST1;0x068:length=5

再次mount磁盘组TEST

[grid@jytest1~]$asmcmdlsdgStateTypeRebalSectorLogical_SectorBlockAUTotal_MBFree_MBReq_mir_free_MBUsable_file_MBOffline_disksVoting_filesNameMOUNTEDEXTERNN512512409641943044096026402640YCRS/MOUNTEDEXTERNN5125124096419430440960247320247320NDATA/MOUNTEDEXTERNN5125124096419430440960184520184520NFRA/[grid@jytest1~]$asmcmdmountTEST[grid@jytest1~]$asmcmdlsdgStateTypeRebalSectorLogical_SectorBlockAUTotal_MBFree_MBReq_mir_free_MBUsable_file_MBOffline_disksVoting_filesNameMOUNTEDEXTERNN512512409641943044096026402640YCRS/MOUNTEDEXTERNN5125124096419430440960247320247320NDATA/MOUNTEDEXTERNN5125124096419430440960184520184520NFRA/MOUNTEDNORMALN512512409641943044096011120055600NTEST/

设置,清除与扫描Oracle ASM Filter Driver Labels
给由Oracle ASMFD管理的磁盘设置一个标识,在标识设置后,指定的磁盘将会由Oracle ASMFD来管理。可以使用ASMCMD afd_label,afd_unlabel与afd_scan来增加,删除和扫描标识查看已经标识过的磁盘可以看到磁盘/dev/asmdisk03和 /dev/asmdisk05没有被标识。

[grid@cs1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk04SQL>selectgroup_number,disk_number,name,label,pathfromv$asm_disk;GROUP_NUMBERDISK_NUMBERNAMELABELPATH---------------------------------------------------------------------------------------------------------------------------------------------------------00CRS1AFD:CRS101/dev/asmdisk0502DATA1AFD:DATA103/dev/asmdisk0304CRS2AFD:CRS210CRS1CRS1/dev/asmdisk0211CRS2CRS2/dev/asmdisk0120DATA1DATA1/dev/asmdisk04

设置标识

[grid@cs2~]$asmcmdafd_labelDN1/dev/asmdisk03[grid@cs2~]$asmcmdafd_labelDN2/dev/asmdisk05

查看已经标识过的磁盘可以看到磁盘/dev/asmdisk03和 /dev/asmdisk05已经被标识

[grid@cs1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk04DN1ENABLED/dev/asmdisk03DN2ENABLED/dev/asmdisk05SQL>selectgroup_number,disk_number,name,label,pathfromv$asm_disk;GROUP_NUMBERDISK_NUMBERNAMELABELPATH---------------------------------------------------------------------------------------------------------------------------------------------------------------------00CRS1AFD:CRS101DN2/dev/asmdisk0502DN1AFD:DN103DATA1AFD:DATA104DN1/dev/asmdisk0306CRS2AFD:CRS205DN2AFD:DN211CRS2CRS2/dev/asmdisk0110CRS1CRS1/dev/asmdisk0220DATA1DATA1/dev/asmdisk04

清除标识

[grid@cs1~]$asmcmdafd_unlabel'DN1'[grid@cs1~]$asmcmdafd_unlabel'DN2'

注意在清除标识时,如果标识所标记的磁盘已经用来创建磁盘组了那么是不能清除的,例如

[grid@cs1~]$asmcmdafd_unlabel'TEST1'diskAFD:TEST1isalreadyprovisionedforASMNodevicestobeunlabeled.ASMCMD-9514:ASMdisklabelclearoperationfailed.

扫描标识

[grid@cs1~]$asmcmdafd_scan

查看已经标识过的磁盘可以看到 /dev/asmdisk03和 /dev/asmdisk05的标识已经清除了

[grid@cs1~]$asmcmdafd_lsdsk--------------------------------------------------------------------------------LabelFilteringPath================================================================================CRS1ENABLED/dev/asmdisk02CRS2ENABLED/dev/asmdisk01DATA1ENABLED/dev/asmdisk04SQL>selectgroup_number,disk_number,name,label,pathfromv$asm_disk;GROUP_NUMBERDISK_NUMBERNAMELABELPATH---------------------------------------------------------------------------------------------------------------------------------------------------------------------00CRS1AFD:CRS101/dev/asmdisk0502DATA1AFD:DATA103/dev/asmdisk0304CRS2AFD:CRS211CRS2CRS2/dev/asmdisk0110CRS1CRS1/dev/asmdisk0220DATA1DATA1/dev/asmdisk04

到此,相信大家对“Oracle ASM Filter Driver的相关知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!