前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【ASM】ASM官方文档-Part I 介绍

【ASM】ASM官方文档-Part I 介绍

作者头像
甚至熊熊
发布2021-06-10 15:46:35
1.9K0
发布2021-06-10 15:46:35
举报

准备把ASM这部分好好捋一下,主要是学习ASM部分的官方文档,去掉一些废话,补充一些大佬的总结。也有看不太明白的地方,暂时先放原文。

参考的文档是19c版本:

本文是Part I Introduction。

一、名词说明

  • Automatic Storage Management (ASM):自动存储管理
  • ASM Cluster File System (ACFS) :ASM群集文件系统
  • ASM Dynamic Volume Manager (ADVM) :ASM动态卷管理器
  • ASM Configuration Assistant (ASMCA) :配置助手,在图形界面查看、添加和删除磁盘等操作

二、ASM概要介绍

官方这一部分主要还是让学习者对ASM有个框架式的了解

  • ASM是Oracle推荐的存储管理解决方案
  • ASM使用磁盘组来存储数据文件等
  • ASM支持单实例和RAC环境
  • ASM磁盘组(disk group)是ASM作为单元管理的磁盘集合
  • 存储在磁盘组中的文件数据均匀分布在各个磁盘上,可以消除热点
  • 数据库在访问ASM中的数据文件时,也可以添加或删除磁盘组中的磁盘
  • 添加或删除磁盘后,ASM会自动重新分发文件内容,并且不需要停机 (这就是条带化)
  • ASM镜像功能:同样的数据会有多份,High(3份)、normal(2份)、external(1份)三个级别
  • ASM使用OMF(Oracle Managed Files)功能简化数据库文件管理,OMF会在指定的位置自动创建文件,相关参数是:db_create_file_dest,举例:
代码语言:javascript
复制
--db_create_file_dest参数指向+DATA磁盘组
SQL> show parameter db_create_file_dest
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_create_file_dest                  string                 +DATA

--无需指定datafile路径,自动创建在+DATA磁盘组下,目录自动
SQL> create tablespace xk;
Tablespace created.
SQL> select * from v$dbfile;
     FILE# NAME
---------- ------------------------------------------------------------
         1 +DATA/xkdb/datafile/system.259.1072125889
	 ...
         6 +DATA/xkdb/datafile/xk.268.1072399269
  • 数据库访问ASM中的数据不需要经过操作系统,IO效率更高
  • ACFS和ADVM拓展了ASM的功能

Oracle自动存储管理群集文件系统(ACFS)是一种多平台、可扩展的文件系统和存储管理技术,它扩展了ASM的功能,以支持所有用户文件。ASM动态卷管理器(ADVM)为客户提供卷管理服务和标准磁盘设备驱动程序接口。

下面介绍ASM的组件:

1.ASM实例(ASM Instances)

  • ASM也有实例,类似数据库实例,有SGA跟后台进程(ps -ef | grep asm_)
  • ASM实例挂载磁盘组,以使ASM文件可用于数据库实例
  • ASM实例管理磁盘组的元数据,并向数据库实例提供文件布局信息(provide file layout information to the databaseinstances)
  • ASM实例能通过集群软件集群化,每个集群节点都有单独的ASM实例。如果在同一节点上存在多个不同数据库的数据库实例,则该数据库实例将在该节点上共享相同的单个OracleASM实例。

ASM元数据是ASM用来控制磁盘组以及存储磁盘组信息,包含:

  • 磁盘属于哪个磁盘组
  • 磁盘组的可用空间情况
  • 磁盘组中文件的名称
  • 磁盘组中数据文件区的位置(The location of disk group data file extents)
  • redo log 用于记录元数据块的改变
  • ADVM卷信息

图1-1 展示了具有一个ASM实例和多个数据库实例的单个节点配置。ASM实例管理元数据,并为ASM文件提供空间分配。当一个数据库实例创建时或者打开ASM文件,它将这些请求发送到ASM实例。ASM实例返回指向数据库实例的文件范围映射信息。多个数据库实例,但仅需要一个ASM实例就可以为多个数据库实例提供服务

图1-2 显示RAC环境中的ASM群集,ASM提供了集群存储池。在集群中服务于多个RAC或单实例数据库的每个节点都有一个ASM实例。

图1-3 多个单实例数据库共享ASM集群存储池,这种情况下多个数据库共享共用磁盘组。

2.ASM磁盘组

磁盘组由多个磁盘组成,是OracleASM管理的基本对象

每个磁盘组都包含管理磁盘组中的空间所需的元数据

磁盘组组件包括:磁盘、文件和AU(allocation units)

任何ASM文件都完全包含在单个磁盘组中

磁盘组可能包含属于多个数据库的文件,并且单个数据库可以使用来自多个磁盘组的文件

3.镜像和故障组(Mirroring and Failure Groups)

镜像: 镜像通过将数据的副本存储在多个磁盘上来保护数据的完整性。

三个冗余级别:

  • External 外部冗余,不使用ASM镜像,功能由外部存储系统实现,如RAID
  • High 3份镜像,镜像数据两次,最少需要三块磁盘,有效空间是磁盘总大小的1/3
  • Normal 2份镜像,镜像数据一次,有效磁盘空间是所有磁盘设备大小之和的1/2

冗余级别控制可容忍多少次磁盘故障,而无需卸载磁盘组或丢失数据。

同一个磁盘组中的两个文件AB,可以设置A镜像,B不镜像(见文档66页,这好像没什么意义)

故障组: 故障组用于放置数据的镜像副本,以使每个副本都位于不同故障组中的磁盘上。故障组中的所有磁盘同时发生故障并不会导致数据丢失。

在创建ASM磁盘组时定义磁盘组的故障组。创建磁盘组后,将无法更改磁盘组的冗余级别。

  • Normal冗余至少需要两个故障组
  • High冗余至少需要三个故障组
  • External冗余不使用故障组

4.ASM磁盘

ASM磁盘可以是:

  • 存储阵列(storage array)中的磁盘或分区
  • 一块磁盘或一块磁盘的分区
  • 逻辑卷LV
  • Network-attached files (NFS)

添加磁盘到磁盘组时,可以手工指定磁盘名或者ASM自动指定名字。这个名称不同于操作系统所使用的路径名称。在群集中,磁盘可以在不同节点上分配不同的操作系统设备名称,但该磁盘在所有节点上都具有相同的ASM磁盘名称。

ASM将文件分散分布在磁盘组中的各个磁盘上,这样每个磁盘保持在相同的容量级别,并确保磁盘组中的所有磁盘都具有相同的I/O负载。由于ASM在磁盘组中所有磁盘之间的负载平衡,因此不同的ASM磁盘不应共享相同的物理驱动器。

5.AU(storage array)

AU是磁盘组内的基本分配单元,一个extent由一个或多个au组成,ASM里的文件又由extent组成

ASM文件系统:file --> extent --> au 普通文件系统:segment --> extent --> block

创建磁盘组的时候指定AU大小,可选值有:1, 2, 4, 8, 16, 32, 64 MB,至于大小的选择文档上说依赖于磁盘组的compatibility level。数据仓库通常使用较大的AU。

6.ASM文件

存储在ASM磁盘组中的文件称为ASM文件

每个ASM文件都包含在单个OracleASM磁盘组中

存储在ASM中的文件类型:

  • Control files
  • Data files, temporary data files, and data file copies
  • SPFILEs
  • Online redo logs, archive logs, and Flashback logs
  • RMAN backups
  • Disaster recovery configurations
  • Change tracking bitmaps
  • Data Pump dumpsets

ASM会自动生成ASM文件名,作为文件创建和表空间创建的一部分。ASM文件名以+开头,后面是磁盘组名。另外可以为ASM文件创建别名,并为这些别名创建分层目录结构。

代码语言:javascript
复制
--使用mkalias命令创建别名,help查看详细
ASMCMD> help mkalias

7.ASM区(ASM Extents)

Extent由一个或多个AU组成 Extent不能跨磁盘 ASM使用了可变大小的区(variable size extents) variable size extents 允许支持更大的ASM数据文件,减少了对非常大的数据库的SGA内存需求,并提高了文件创建和打开操作的性能。Extent初始大小等于AU大小,可增加4或16倍。

对于AU大小小于4MB的磁盘组:

  • 第0~19999个extent的大小等于AU大小
  • 第20000~39999个extent的大小等于 4*AU size
  • 大于40000个的extent大小等于 16*AU size

下面这块没明白是什么意思,先放上原文:

For disk groups with AU size greater than or equal to 4 MB and the disk group RDBMS compatibility greater than or equal to 11.2.0.4, the counts for extents of sizes (the disk group AU size, 4*AU size, or 16*AU size) are calculated using the application block size to support maximum file size. The extent sizing feature is automatic for newly created and resized data files when specific disk group compatibility attributes are set to 11.1 or higher. For information about compatibility attributes, see Disk Group Compatibility.

图1-4 显示Extent跟AU的关系。前8个Extent(0~7)分布在四个ASM磁盘上,等于AU大小。20000个extents之后就变成了4倍AU大小。

8.条带化(Striping)

ASM会将文件划分为条带,并将数据均匀地分布在磁盘组中的所有磁盘上。

条带化主要目的:

  • 平衡磁盘组中所有磁盘上的负载
  • 减少I/O延迟

粗粒度条带(Coarse-grained striping)为磁盘组提供了负载均衡,大小为128KB,降低了 small I/O operations 的I/O延迟 细粒度条带(fine-grained striping)则通过更广泛地扩展负载来减少某些文件类型的延迟(还得再品品),大小等于AU大小

下面通过两张图介绍条带化,图上均为由8块磁盘组成的磁盘组,AU大小为1M,使用A-X两种字体标记文件的条带块(striping chunks)

图1-5 图上可见的是ASM文件被划分为128k每个的条带块,一个AU是1024k,可以容载8个条带块。从磁盘1中的第一个块开始,然后是磁盘2中的第一个块,然后以循环模式贯穿所有磁盘,直到整个文件被条带化。另外图上虚线框起的代表上面说的可变大小区,2-4万之间的extent,extent就变成4倍AU大小了。

图1-6 也是用A-X不同字体标记条带块,这里每个条带块是1M大小,等于AU的大小。循环存储到磁盘的时候,正好1个AU存储1个条带块。

9.ASM文件模板(ASM File Templates)

模板是属性值的集合,用于在创建ASM文件时指定磁盘区域、文件镜像和条带化属性。

创建文件时,可以包含模板名称,并根据单个文件而不是文件类型分配所需的属性。

每种Oracle文件类型都有一个默认模板,可以自定义模板。每个磁盘组都有一个与每个文件类型关联的默认模板。

三、ASM磁盘组管理

这一块是简单介绍磁盘组管理,不涉及具体操作

1.发现磁盘(Discovering Disks)

就是定位ASM可使用的磁盘。相关参数是ASM_DISKSTRING,在启动ASM实例的时候会发现和检查该路径下的磁盘。

2.挂载和拆卸磁盘组(Mounting and Dismounting Disk Groups)

数据库实例访问ASM中的文件,首先需要由ASM实例挂载磁盘组。

ASM文件被使用中,卸载磁盘需要强制卸载。

3.添加和删除磁盘(Adding and Dropping Disks)

要添加的磁盘需要在ASM_DISKSTRING参数指定的路径下,而且需要在每个ASM实例下都能被发现。磁盘被添加到磁盘组后,ASM会重新平衡操作会将数据移动到新磁盘上。

如果在写入磁盘时发生错误,则ASM会自动删除该磁盘。

4.在线存储重新配置和动态重新平衡(Online Storage Reconfigurations and Dynamic Rebalancing)

重新平衡磁盘组会在磁盘之间移动数据,以确保每个文件均匀地分布在磁盘组中的所有磁盘上。

当所有文件均匀分散时,所有磁盘都均匀填充到相同的百分比,实现负载平衡。

重新平衡不会基于I/O统计信息重新定位数据,也不会基于I/O统计信息开始重新平衡。ASM重新平衡操作由磁盘组中的磁盘的大小来控制。

存储配置更改后,ASM会自动启动重新平衡,例如添加、删除或根据磁盘大小调整磁盘。参数asm_power_limit确定重新平衡操作发生的速度。

手工重新平衡:

代码语言:javascript
复制
alter diskgroup DATA rebalance power 3;

如果正在运行重新平衡的实例停止,则会自动重新启动重新平衡。在重新平衡操作期间,数据库可以保持运行。

四、ASM的一些注意事项

在配置ASM之前,应考虑有关存储子系统的几个问题。

1.针对磁盘组的存储资源

可以使用以下存储资源创建ASM磁盘组:

  • 磁盘分区(Disk Partition):可以是整个磁盘驱动器或是一部分。但是ASM磁盘不能在包含分区表的分区中,因为分区表将被覆盖(这里没明白)
  • Logical Unit Number (LUN):逻辑单元号,LUN是由存储阵列提供给计算机系统的磁盘。Oracle建议使用硬件RAID创建LUN。说明:https://support.huawei.com/enterprise/zh/doc/EDOC1100096895/
  • 逻辑卷(Logical Volume) Oracle不推荐
  • Network File System (NFS)

ASM存储资源准备步骤:

  • 添加磁盘,要在/dev路径下可被识别
  • 确认磁盘权限是可读写,用户属组是grid:asmadmin
  • 使用UDEV绑定磁盘,保证ownership and permission不会因为系统重启改变

2.ASM和多路径

多路径就是提供多条物理路径,避免单条链路故障导致无法读取磁盘信息,冗余的路径存在与服务器和存储子系统之间。

这块与之间写的【多路径】CentOS7.7下使用Openfiler+Multipath+UDEV 相关

当I/O被发送到设置好多路径的磁盘设备时,多路径驱动程序会拦截它,并为底层子路径提供负载平衡。

3.储存准备的建议

  • 以下内容应放到单独的磁盘组:
    • OCR和表决文件
    • Grid Infrastructure Management Repository (GIMR) files
    • 数据文件
    • Fast recovery area 快速恢复区
  • The number of LUNs (Oracle ASM disks) for each disk group should be at least equal to four times the number of active I/O paths. For example, if a disk group has two active I/O paths, then minimum of eight LUNs should be used. The LUNs should be of equal size and performance for each disk group. An I/O path is a distinct channel or connection between storage presenting LUNs and the server. An active I/O path is an I/O path in which the I/O load on a LUN is multiplexed through multipathing software.
  • 要保证磁盘组中每块磁盘有相似的存储性能和可用性特性。如果性能不同,I/O会受到性能差的磁盘影响
  • ASM数据分发策略是基于容量的。确保磁盘组中的磁盘具有相同的容量来保持平衡
  • 正常冗余磁盘组配置至少三个故障组,高冗余磁盘组配置五个故障组
  • ASM磁盘组中专用磁盘,将最小化ASM磁盘和其他应用程序之间的I/O竞争
  • Choose a hardware RAID stripe size that is a power of 2 and less than or equal to the size of the Oracle ASM allocation unit.
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、名词说明
  • 二、ASM概要介绍
    • 1.ASM实例(ASM Instances)
      • 2.ASM磁盘组
        • 3.镜像和故障组(Mirroring and Failure Groups)
          • 4.ASM磁盘
            • 5.AU(storage array)
              • 6.ASM文件
                • 7.ASM区(ASM Extents)
                  • 8.条带化(Striping)
                    • 9.ASM文件模板(ASM File Templates)
                    • 三、ASM磁盘组管理
                      • 1.发现磁盘(Discovering Disks)
                        • 2.挂载和拆卸磁盘组(Mounting and Dismounting Disk Groups)
                          • 3.添加和删除磁盘(Adding and Dropping Disks)
                            • 4.在线存储重新配置和动态重新平衡(Online Storage Reconfigurations and Dynamic Rebalancing)
                            • 四、ASM的一些注意事项
                              • 1.针对磁盘组的存储资源
                                • 2.ASM和多路径
                                  • 3.储存准备的建议
                                  相关产品与服务
                                  对象存储
                                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档