专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

ASM介绍及管理(四)--磁盘组,ASM磁盘及文件概念

ins518 2024-11-09 13:19:22 技术文章 13 ℃ 0 评论

磁盘组概览

磁盘组是一个或多个磁盘的逻辑分组,ASM 将其作为一个集合来管理。每个磁盘组都包含与自身相关联的元数据。在概念上,ASM 磁盘组类似于典型存储区域网络中的逻辑卷。

从磁盘组内分配文件空间。磁盘组中存储的文件的内容将在该磁盘组的磁盘中平均分布或条带化,以便消除热点并在各磁盘上提供一致的性能。每个ASM 文件都完全包含在一个磁盘组中。但是,一个磁盘组可以包含属于多个数据库的文件,而一个数据库可以使用来自多个磁盘组的不同文件。

磁盘组的关键属性是它的冗余设置。有三种可能的磁盘组冗余设置:

? 外部冗余,其中ASM 不提供任何镜像,磁盘都假设为高度可靠。

? 正常冗余,其中ASM 默认支持双向镜像,从而保证在较不可靠的存储上实现数据完整性。

? 高冗余,其中ASM 默认支持三向镜像,从而更好地保证数据完整性。

ASM 最多支持创建63 个磁盘组;但是,对于大多数安装,你很少会需要很多磁盘组。

ASM磁盘组的管理方式比较多,比如DBCA、EM、SQL*PLUS等都可以操作,还有oracle专门提供了ASMCMD命令行方式,像操作文件系统一样来操作磁盘组。

ASM 磁盘

ASM 磁盘:

? 是为ASM 磁盘组预配的存储设备

? 通过正常O/S 接口来访问

? 必须可由ASM 所有者读取和写入

? 必须可由集群中的所有节点访问

? 在不同的节点上可以有不同的O/S 名称或路径

? 可以是:

– 整个物理磁盘或物理磁盘的分区

– 存储阵列中的磁盘或分区

– 逻辑卷(LV) 或逻辑单元(LUN)

– 网络连接文件(NFS)

ASM 磁盘组包含一个或多个ASM 磁盘。

ASM 磁盘必须可由集群中所有大,能够提供高效的后续访问

? 允许的AU 大小:

– 1、2、4、8、16、32 或64 MB 节点的ASM 所有者读取和写入。

ASM 磁盘可以是磁盘上的分区,但是Oracle 强烈建议不要与其它应用程序程序共享ASM 使用的物理磁盘。这是因为在应用ASM 条带化和镜像策略时,磁盘组内的各个ASM 磁盘的I/O 性能必须相似且一致,才能获得最佳性能。在ASM 和其它应用程序之间共享设备会难以确保磁盘性能相似且一致。

集群中不同节点上的ASM 磁盘的O/S 设备名称不必相同。ASM 通过读取ASM 磁盘的标头来识别磁盘组的成员。

通常,ASM 磁盘是以存储阵列中的裸LUN 提供给ASM 的。另外,ASM 磁盘还可以是远程NFS 文件器中的文件。

分配单元

ASM 磁盘划分为分配单元(AU):

? 在创建磁盘组时可以配置AU 大小。

? AU 默认大小为1 MB:

– 足够小,能够被数据库缓存;但又足够

– 在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大的AU 可能非常有用

在ASM 磁盘内,空间划分为分配单元(AU)。AU 默认大小是1 MB,该大小足够小,不会变为热点,但又足够大,能够提供高效的后续访问。创建磁盘组时可以设置AU 大小。你无法更改磁盘组的AU 大小。在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大的AU 大小可能会很有用。如果经常访问某个AU,则数据库内核会将其缓存以便实现更高的访问效率。

ASM 文件

ASM 文件:

? 是由AU 组成的ASM 区的集合

– 可变大小的区支持大型文件

? 对数据库内核显示为普通文件

? 文件名以“+”开头

– 例如,

+DATA/orcl/datafile/system.256.689832921

? 可以与可选的文件名别名相关联

– 例如,+DATA/dbfiles/mydb/system01.dbf

? 在磁盘组中的磁盘中平均分布

? 根据磁盘组中定义的策略进行镜像

ASM 呈现一组文件供ASM 的客户机使用。ASM 文件由一组分配单元组成,这些文件对数据库内核显示为普通文件。

每个ASM 文件都具有唯一的系统生成的名称。

生成格式为:+diskgroup/dbname/file_type/file_type_tag.file.incarnation ,

? +diskgroup :磁盘组名称;

? dbname :数据库的DB_UNIQUE_NAME参数值;

? file_type :创建的文件类型,比如CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBAC

K等等;

? file_type_tag :文件类型的标签,比如表空间对应的通常为该表空间名称;

? file.incarnation :文件序号+incarnation,用来确保文件的唯一;

sys@mesdbbackup> alter tablespace INVENTORY add datafile '+DATA';

Tablespace altered.

ASMCMD> pwd

+data/test0924/datafile

ASMCMD> ls

INVENTORY.266.829658135

示例显示了一个完全限定的ASM 文件名的示例。完全限定的ASM 文件名表示一个层次结构,其开头是加号与磁盘组名称的组合。磁盘组名称后是数据库名称和文件类型。最后的元素由标记名称、文件编号和原型编号组成。可以创建别名(可选),为管理员提供一种更用户友好的方式来引用ASM 文件。

文件使用条带化和镜像所有内容(SAME) 策略在磁盘组的各ASM 磁盘中平均分布。

ASM 本身支持大多数与数据库相关的文件类型,例如数据文件、日志文件、控制文件、

RMAN 备份及其它文件。在Oracle Database 11g发行版2 之前,ASM 仅支持与Oracle DB 相关的文件,无法用于存储和管理ASCII 跟踪文件和预警日志、Oracle 二进制文件、

Oracle 集群注册表(OCR) 和集群表决磁盘。Oracle Database 11g发行版2 提供在ASM 上运行通用文件系统的方式,从而消除了上述限制。

区映射

ASM 通过称为区映射的元数据跟踪文件的分布。区映射是一个表,将文件中的数据区映射到磁盘上的分配单元。

文件区与分配单元之间的关系如下所示。区包含:

? 一个AU 用于前20,000 个区(0-19999)

?4 个AU 用于接下来的20,000 个区(20000-39999)

? 16 个AU 用于40,000 以上的区

将可变大小的区与大型分配单元结合使用,可满足非常大的ASM 文件的需要。

条带化粒度

ASM 用于负载平衡的条带化策略与用于等待时间的条带化策略不同:

? 对于负载平衡,粗粒度条带化将多个分配单元连接起来使用。

– 例如:

在ASM 中,条带化主要具有两种用途:

? 在磁盘组的所有磁盘中执行I/O 负载平衡。

? 改善I/O 等待时间。

粗粒度条带化在磁盘组的各磁盘中分布分配单元。这用于为磁盘组提供负载平衡。分配文件时,ASM 会在所有磁盘中平均分布分配单元。有时分布无法非常平均,但是随着时间的流逝,会变得几乎相等。上图显示了一个具有五个分配单元的文件,这些分配单元在条带化之后,分布在一个外部冗余磁盘组的五个磁盘中,该磁盘组共包含八个磁盘。

对于前20,000 个区,区大小等于AU 大小。从第20,001 个区到第40,000 个区,该区组总是一次分配8 个区,区大小等于4 倍AU 大小。如果AU 大小为1 MB,这意味着ASM 文件将一次增大64 MB (8 * 4 * 1 MB)。如果文件采用粗粒度条带化,则它将在8 个区中进行条带化,条带大小为1 AU。条带化始终在AU 级别进行,而不是在区级别。因此,无论文件多大,粗粒度文件的每个AU 都与该文件的前一个AU 所在的磁盘不同。在第40,000 个区之后,仍旧是每次分配8 个区,但区大小等于16 倍AU 大小。

细粒度条带化

细粒度条带化在分配单元组中放置128 KB 条带单元来改善等待时间。

? 磁盘组具有8 个磁盘和外部冗余

? 使用默认的AU 大小:1 MB

? 第一个1 MB 区在8 个AU 中以128 KB 条带形式写入

细粒度条带化将数据区拆分为128 KB 的块,然后在许多磁盘中分布每个区的负载,从而改善特定类型文件的等待时间。默认情况下,细粒度条带化用于控制文件和联机重做日志文件。

图显示了细粒度条带化的工作原理。在此示例中,新文件的第一个1 MB 区最终占用8 个不同分配单元中的第一个128 KB 块,这8 个分配单元分布在磁盘组的八个磁盘中。因此,1 MB 的读取或写入分布在八个磁盘(而不是一个磁盘)中。

  • 细粒度条带化

示例:

? 磁盘组具有8 个磁盘和外部冗余

? 使用默认的AU 大小:1 MB

? 下一个1 MB 区以128 KB 条带的形式在相同的8 个分配单元中写入,直到这些分配单元写满

继续前面的示例,空间中的下一个1 MB 区将分布在相同分配单元组的每个单元的第二个128 KB 块中。这种模式将继续,直到第一组分配单元写满,然后分配另一组。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表