使用AFD(Oracle ASM Filter Driver)来配置共享磁盘

使用AFD(Oracle ASM Filter Driver)来配置共享磁盘

1、AFD特性
* ASM FILTER DRIVER 可以最大限度的限制磁盘的用户权限,即便是root用户,也无法删除AFD磁盘
* 在ASM 12.1之后支持,在12.2中,ASMFD在系统已经安装了ASMLIB的情况下无法使用安装AFD,也不支持扩展分区表;从19c以后的版本,AFD开始支持扩展分区
* 这就是ASMFD相比ASMLIB和udev的新特性,消除了在系统每次被重启后Oracle ASM需要重新绑定磁盘,简化了对磁盘的管理等
* AFD的功能强大,可以省略掉对路径绑定,规则文件授权等,可以直接使用afd完成磁盘的绑定和设置即可
* 在安装完成后,管理磁盘,磁盘识别,绑定与添加也非常方便
* 在没有使用multipath、udev等方法绑定磁盘的情况下,也可以直接使用AFD绑定磁盘即可

2、AFD 配置
要使用AFD来配置共享磁盘,必须以root用户设置环境变量,设置环境变量 $ORACLE_HOME 为Grid Home目录,设置环境变量$ORACLE_BASE为临时目录
# export ORACLE_HOME=/u01/app/19/grid
# export ORACLE_BASE=/tmp

# asmcmd afd_label DATA_1 /dev/sdd --init -- 初始化磁盘
# asmcmd afd_lslbl /dev/sdd  -- 查看已经初始化的磁盘

已安装的GRID软件重新配置AFD
# $ORACLE_HOME/bin/asmcmd dsget        -- 查看AFD磁盘路径
# asmcmd dsset '/dev/sd*','AFD:*'   -- 配置AFD磁盘路径

AFD常用操作
是否支持扩展分区表的测试,查看当前系统内核版本是否支持
# afdroot install
# acfsdriverstate -orahome $ORACLE_HOME supported
# uname -a       
# cat /etc/redhat-release 
不支持需要升级kmod版本
# rpm -qa|grep kmod
# yum install kmod
# rpm -qa|grep kmod
升级后查看afd驱动是否支持
# acfsdriverstate -orahome $ORACLE_HOME supported

3、添加磁盘 (这里采用多路径)
查询磁盘 wwid
# /usr/lib/udev/scsi_id -g -u -d /dev/sde  
添加新磁盘的 wwid\别名
# vi /etc/multipath.conf  
 multipath {
                 wwid                  47355521712ffff2a076d28ee91234520
                 alias                   DATA_3
              }
# systemctl reload multipathd.service
# multipath -ll
修改磁盘权限
# vi /etc/rc.local
chown grid:asmadmin /dev/mapper/asmssd*
chmod 660 /dev/mapper/data*

4、查看已有的afd标签
# su - grid
$ asmcmd afd_lsdsk
$ sqlplus / as sysasm
set lines 200 pages 20
col name for a25
col path for a35
col label for a15
col failgroup for a15
select GROUP_NUMBER,GROUP_NUMBER,name,path,label,os_mb,failgroup from v$asm_disk order by 1,7;

5、给需要添加的磁盘打标签,单个节点打标签就可以
例(其他磁盘打标签重复如下步骤即可):
# export ORACLE_HOME=/u01/app/19/grid
# export ORACLE_BZZHE=/tmp
# asmcmd afd_label ASM_ARCH /dev/mapper/ASM_arch_1
# asmcmd afd_label ASM_OCR /dev/mapper/ASM_ocr_1
# asmcmd afd_label ASM_FRA /dev/mapper/ASM_fra_1
# asmcmd afd_label ASM_DATA_3 /dev/mapper/ASM_data_3

其他节点刷新afd磁盘标签信息即可
$ asmcmd afd_refresh
$ asmcmd afd_lsdsk

给磁盘组中添加新磁盘
alter diskgroup DATA add disk 'AFD:DATA_3','AFD:DATA_4','AFD:DATA_5','AFD:DATA_6' rebalance power 8;
 
创建新磁盘组 external 模式 
create diskgroup DATA_2 EXTERNAL REDUNDANCY DISK 'AFD:DATA_5','AFD:DATA_6';

6、删除磁盘、磁盘组
检查磁盘组占用情况
select * from dba_data_files;
select * from dba_temp_files;
select * from v$logfile;
解除磁盘的占用后才能删除磁盘组
sqlplus / as sysasm
alter diskgroup DATA dismount;
查看磁盘组状态
select GROUP_NUMBER,NAME,BLOCK_SIZE,STATE,TYPE,VOTING_FILES from v$asm_diskgroup;
删除DATA磁盘组
drop diskgroup DATA force including contents;
检查当前磁盘组
select GROUP_NUMBER,NAME,BLOCK_SIZE,STATE,TYPE,VOTING_FILES from v$asm_diskgroup;
取消afd标签(若使用的是UDEV或multipath方式,也需将对应资源释放,修改器相应的配置文件,删除相关磁盘的配置等)
查看当前的标签:
$ asmcmd afd_lsdsk
清除标签,只需在一个节点删除,其他节点刷新即可:
$ asmcmd afd_unlabel DATA_1
$ asmcmd afd_refresh
删除磁盘
alter diskgroup DATA drop disk 'DATA_1' rebalance power 5; -- 磁盘重平衡进程数 默认值1.
 
注意:如果是对OCR磁盘的删除变更等操作需要特别小心,不能出错,出错会导致集群异常。
$ crsctl query css votedisk
查看rebalance过程是否完成
select * from V$ASM_OPERATION;
select name,path,total_mb,free_mb from v$asm_disk;

7、AFD是否支持扩展分区表的测试
官方文档12.2中的AFD不支持扩展分区表,也就是说,当我使用AFD做共享存储的磁盘管理时,如果使用了分区表,用户无法对分区表进行添加分区等操作,本人并未在12.2做过测试,是否支持不得而知,如有兴趣可以按照如下测试方法做测试验证。
我们在19.3上面做测试,测试步骤如下:
在已经配置好采用AFD管理的RAC集群数据库上面创建分区表,并创建相关约束与索引,如下:
我们创建一个以时间为分区标准的分区表,该分区表创建了一个截至到2024年1月1日之前的分区,没有开启启动扩展,也就是说,当用户插入一个创建时间位于2024-01-01之后的日期后,则会报错,此时需要扩展一个新的分区来满足插入操作
create table zzh_part_tb
(
   ID NUMBER(20) not null,
   NAME VARCHAR2(1000),
   create_time DATE
)
PARTITION BY RANGE (CREATE_TIME)
(partition P_1 values less than(to_date('2024-01-01', 'yyyy-mm-dd')));
alter table zzh_part_tb add constraint zzh_part_tb_pk primary key (ID) using INDEX;
create index zzh_part_tb_create_time on zzh_part_tb (create_time);  
 
检查创建结果
select table_name,partition_name from user_tab_partitions where table_name = upper('zzh_part_tb');
TABLE_NAME  PARTITION_NAME
--------------- ------------------------------------------------------------------
zzh_part_tb  P_1
插入一条符合分区条件的数据
insert into zzh_part_tb values (1,'ZZH',to_date('2023-01-08','yyyy-mm-dd'));
select * from zzh_part_tb; 
ID      NAME      CREATE_TIME 
---------- -------------------- ------------------
 1      ZZH      08-JAN-19
commit;
插入一条不符合分区条件的数据插入失败
insert into zzh_part_tb values (2,'ZZH',to_date('2024-01-08','yyyy-mm-dd'));
ORA—14400: inserted partition key does not map to any partition
 
扩展分区
alter table zzh_part_tb add partition P_2 values less than(to_date('2025-01-01', 'yyyy-mm-dd'));
查看表分区信息
select table_name,partition_name from user_tab_partitions where table_name = upper('zzh_part_tb');
TABLE_NAME  PARTITION_NAME
--------------- --------------------------------------------------
zzh_part_tb  P_1
zzh_part_tb  P_2
重新插入2024-01-08的数据
insert into zzh_part_tb values (2,'ZZH',to_date('2024-01-08','yyyy-mm-dd'));
 select * from zzh_part_tb;
 ID    NAME       CREATE_TIME
---------- -------------------------------- ------------------
  1    ZZH        08-JAN-19
  2    ZZH        08-JAN-20
查看新分区中的数据
select * from zzh_part_tb partition(P_2); 
 ID    NAME       CREATE_TIME
---------- -------------------------------- ------------------
说明19.3版本ASM磁盘采用AFD方式管理的情况下支持增加或者扩展分区表。

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahern_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值