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;

 

posted @ 2021-09-15 16:53  harrison辉  阅读(1873)  评论(0)    收藏  举报