AFD
1、从12.1.0.2开始,Oracle 引入了ASMFD(ASM Filter Driver),ASMFD只适应于Linux平台。安装完Grid Infrastructure后,你可以决定是否配置她。如果之前使用了ASMLIB(可以简单的理解为对设备做标签来标识磁盘)或者udev(可以动态管理设备),迁移到ASMFD之后,需要卸载ASMLIB或禁用udev的规则。通过Filter driver可以过滤无效的请求,避免因为非oracle的I/O请求造成意外的覆写,进而保证了系统的安全和稳定。
查询内核是否支持
[grid@rac1 ~]$ afdroot install AFD-620: AFD is not supported on this operating system version: '3.10.0-693.el7.x86_64' [grid@rac1 ~]$ acfsdriverstate -orahome $ORACLE_HOME supported ACFS-9459: ADVM/ACFS is not supported on this OS version: '3.10.0-693.el7.x86_64' ACFS-9201: Not Supported [grid@rac1 ~]$ uname -a Linux rac1 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux ----查看当前系统内核版本确实不被支持 [root@rac1 ~]$ cat /etc/redhat-release
解决办法:
REHL 7.4 + 需要升级kmod版本
ACFS and AFD report “Not Supported” after installing appropriate Oracle Grid Infrastructure Patches on RedHat (文档 ID 2303388.1)
查看kmod版本:
[root@rac2 ~]# rpm -qa|grep kmod
kmod-libs-20-15.el7.x86_64
kmod-20-15.el7.x86_64 ----20-15版本
[root@rac1 yum.repos.d]# yum install kmod
检查安装效果:
[grid@rac1:/home/grid]$rpm -qa|grep kmod
kmod-libs-20-15.el7.x86_64
kmod-20-21.el7.x86_64 --->已升级到20-21版本
查看afd驱动版本:
[root@rac1 yum.repos.d]# acfsdriverstate -orahome $ORACLE_HOME supported
ACFS-9200: Supported ---升级kmod之后afd驱动已支持
2、安装、配置
查看ASMFD是否安装 [root@db1 ~]# export ORACLE_HOME=/orgrid/oracle/product/121 [root@db1 ~]# export ORACLE_SID=+ASM1 [root@db1 ~]# export ORACLE_BASE=/tmp
[root@db1 ~]# export PATH=$ORACLE_HOME/bin:$PATH
[root@db1 ~]# $ORACLE_HOME/bin/asmcmd afd_state
Connected to an idle instance. ASMCMD-9526: The AFD state is 'NOT INSTALLED' and filtering is 'DEFAULT' on host 'db1'
安装ASMFD(必须先关掉CRS(RAC)/HAS(SIHA)服务)
[root@db1 ~]# $ORACLE_HOME/bin/asmcmd afd_configure
查看ASMFD详情
[orgrid@db1 ~]$ $ORACLE_HOME/bin/asmcmd afd_state
Connected to an idle instance.
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DEFAULT' on host 'db1'
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 OFFLINE OFFLINE STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.driver.afd
1 ONLINE ONLINE db1 STABLE
ora.evmd
1 ONLINE ONLINE db1 STABLE
--------------------------------------------------------------------------------
[root@db1 ~]#
安装成功后,你看到afd的一些文件,crsctl stat res -t -init还能看到资源ora.driver.afd
使用asmfd配置磁盘,需要以root用户执行,并且需要先配置oracle_base和oracle_home两个环境变量。配置完后执行: [root@vm19 ~]# export ORACLE_BASE=/u01/app/grid [root@vm19 ~]# export ORACLE_HOME=/u01/app/19.2.0.0/grid [root@vm19 ~]# cd /u01/app/19.2.0.0/grid/bin [root@vm19 bin]# ./asmcmd afd_label asmdisk01 /dev/sde [root@vm19 bin]# ./asmcmd afd_label asmdisk02 /dev/sdf
GI已经安装完成,添加AFD磁盘不需要带–init参数。
检查:
[root@vm19 bin]# ./asmcmd afd_lslbl
ll /ev/oracleafd/disks/
[root@db1 rules.d]# ls -ltr|tail -5 -rw-r--r--. 1 root root 789 Mar 10 05:18 70-persistent-cd.rules -rw-r--r--. 1 root root 341 Mar 10 05:25 99-vmware-scsi-udev.rules -rw-r--r-- 1 root root 190 May 16 22:11 55-usm.rules -rw-r--r-- 1 root root 600 May 16 23:03 99-oracle-asmdevices.rules -rw-r--r-- 1 root root 230 May 17 00:31 53-afd.rules [root@db1 rules.d]# [orgrid@db1 rules.d]$ pwd /etc/udev/rules.d [root@db1 rules.d]# cat 53-afd.rules # # AFD devices KERNEL=="oracleafd/.*", OWNER="orgrid", GROUP="asmadmin", MODE="0770" KERNEL=="oracleafd/*", OWNER="orgrid", GROUP="asmadmin", MODE="0770" KERNEL=="oracleafd/disks/*", OWNER="orgrid", GROUP="asmadmin", MODE="0660" [root@db1 rules.d]# cat 55-usm.rules # # ADVM devices KERNEL=="asm/*", GROUP="asmadmin", MODE="0770" KERNEL=="asm/.*", GROUP="asmadmin", MODE="0770" # # ACFS devices KERNEL=="ofsctl", GROUP="asmadmin", MODE="0664" [root@db1 rules.d]#
安装后会看到udev rules下面多了一些文件,实际上ASMFD仍使用了udev
备份并移除udev rule文件99-oracle-asmdevices.rules 重命名99-oracle-asmdevices.rules为99-oracle-asmdevices.rules.bak。如果不move 99-oracle-asmdevices.rules文件,下次重启之后,之前ASMFD标识过的磁盘,看不到。 [orgrid@db1 ~]$ asmcmd afd_lsdsk There are no labelled devices. [root@db1 ~]# ls -l /dev/oracleafd/disks total 0 [root@db1 ~]# ls -l /dev/oracleafd/ admin disks/
设置磁盘Discovery String字符串 ASMCMD> afd_dsget AFD discovery string: ASMCMD> afd_dsset '/dev/sd*' --设置ASMFD discovery string为原来物理磁盘的信息 asmcmd dsset '/dev/asm*','AFD:*'' ASMCMD> [orgrid@db1 ~]$ asmcmd afd_dsget AFD discovery string: '/dev/sd*' [orgrid@db1 ~]$ asmcmd dsget --设置ASM磁盘组iscovery string为AFD:* parameter:AFD:* profile:AFD:*
cat /etc/oracleafd.conf
afd_diskstring='/dev/xvd*'
重启服务器并验证 [root@db1 ~]# ls -l /dev/oracleafd/disks/ total 12 -rw-r--r-- 1 root root 10 May 17 00:15 ASMDISK1 -rw-r--r-- 1 root root 10 May 17 00:15 ASMDISK2 -rw-r--r-- 1 root root 10 May 17 00:15 ASMDISK3 [root@db1 ~]# ASMCMD> lsdsk --candidate Path AFD:ASMDISK2 AFD:ASMDISK3 ASMCMD> afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ ASMDISK1 DISABLED /dev/sdb1 ASMDISK2 DISABLED /dev/sdb2 ASMDISK3 DISABLED /dev/sdb3 ASMCMD> [orgrid@db1 ~]$ ls -l /dev/disk/by-label/ total 0 lrwxrwxrwx 1 root root 10 May 17 00:30 ASMDISK1 -> ../../sdb1 lrwxrwxrwx 1 root root 10 May 17 00:30 ASMDISK2 -> ../../sdb2 lrwxrwxrwx 1 root root 10 May 17 00:31 ASMDISK3 -> ../../sdb3 [orgrid@db1 ~]$ 重启后会发现,ASMFD用的磁盘的属性变成了root权限
启用Filter功能 ASMCMD> help afd_filter afd_filter Sets the AFD filtering mode on a given disk path. If the command is executed without specifying a disk path then filtering is set at node level. ASMCMD> ASMCMD> afd_filter -e /dev/sdb2 ASMCMD> afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ ASMDISK1 DISABLED /dev/sdb1 ASMDISK2 DISABLED /dev/sdb2 ASMDISK3 DISABLED /dev/sdb3 ASMCMD> afd_filter -e ASMCMD> afd_lsdsk -------------------------------------------------------------------------------- Label Filtering Path ================================================================================ ASMDISK1 ENABLED /dev/sdb1 ASMDISK2 ENABLED /dev/sdb2 ASMDISK3 ENABLED /dev/sdb3 ASMCMD>
参考网址:http://atoracle.cn/index.php?m=Article&a=show&id=81
12.2中的AFD不支持扩展分区表,也就是说,当我使用AFD做共享存储的磁盘管理时,如果使用了分区表,用户无法对分区表进行添加分区操作,那么,18的AFD支持分区表
asm磁盘组扩容 SQL>set pagesize 100 SQL>col PATH for a33 SQL>col NAME for a15 SQL>col FAILGROUP for a15 SQL>select GROUP_NUMBER,free_mb,total_mb,FAILGROUP,disk_number,MOUNT_STATUS,mode_status,STATE,HEADER_STATUS,name,PATH from v$asm_disk order by 4,5; SQL> alter diskgroup DATA add disk 'AFD:TEST1' rebalance power 10; --添加磁盘test1到磁盘组DATA。 select operation,est_minutes from v$asm_operation; select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;

浙公网安备 33010602011771号