1 Introducing Oracle Automatic Storage Management
ASM介绍的官网链接:
Oracle Automatic Storage Management (Oracle ASM), Oracle ASM Cluster File System (Oracle ACFS), and Oracle ASM Dynamic Volume Manager (Oracle ADVM) are key components of storage management.
Oracle自动存储管理(Oracle ASM)、Oracle ASM集群文件系统(Oracle ACFS)、Oracle ASM动态卷管理(Oracle ADVM)是存储管理的关键组件。
Overview of Oracle Automatic Storage Management
ASM是Oracle推荐的存储管理解决方案,它提供了传统卷管理器、文件系统和原始设备的替代方案。
ASM是一个卷管理器和一个用于Oracle数据库文件的文件系统,它支持单实例Oracle数据库和Oracle Real Application Clusters (Oracle RAC)配置。
ASM使用磁盘组来存储数据文件;ASM磁盘组是由ASM作为一个单元管理的磁盘集合。在磁盘组中,ASM为Oracle数据库文件公开一个文件系统接口。存储在磁盘组中的文件的内容被均匀地分布,以消除热点,并提供跨磁盘的统一性能。性能与原始设备的性能相当。
在数据库继续访问磁盘组中的文件时,可以从磁盘组添加或删除磁盘。当您从磁盘组中添加或删除磁盘时,ASM会自动重新分发文件内容,并且在重新分发内容时不需要停机。
ASM卷管理器功能提供了灵活的基于服务器的镜像选项。ASM普通磁盘组和高冗余磁盘组分别支持双向镜像和三向镜像。您可以使用外部冗余来启用独立磁盘冗余阵列(RAID)存储子系统来执行镜像保护功能。
ASM还使用了Oracle Managed Files (OMF)特性来简化数据库文件管理。OMF自动在指定的位置创建文件。OMF还命名文件并删除它们,同时在删除表空间或文件时释放空间。
通过将数据存储合并到少量磁盘组中,ASM减少了管理数据库存储的管理开销。更少的磁盘组可以为多个数据库整合存储,并提供更好的I/O性能。
ASM文件可以与其他存储管理选项共存,比如原始磁盘和第三方文件系统。该功能简化了将ASM集成到现有环境中的工作。
ASM具有易于使用的管理接口,如SQL*Plus、ASM命令行工具(ASMCMD)命令行接口和ASM配置助手(ASMCA)。
About Oracle Automatic Storage Management Cluster File System
Oracle自动存储管理集群文件系统(Oracle ACFS)和Oracle ASM动态卷管理器(Oracle ADVM)扩展了Oracle ASM的功能。
Oracle自动存储管理集群文件系统(Oracle ACFS)是一种多平台、可伸缩的文件系统和存储管理技术,它扩展了Oracle自动存储管理(Oracle ASM)功能,支持所有客户文件。ASM动态卷管理器(Oracle ADVM)为客户端提供卷管理服务和标准的磁盘设备驱动程序接口。
Understanding Oracle ASM Concepts 理解Oracle ASM概念
The concepts for the key Oracle ASM components are introduced in this topic.
About Oracle ASM Instances
关于ASM实例
ASM实例构建在与Oracle数据库实例相同的技术上。
ASM实例具有与Oracle数据库相似的系统全局区域(System Global Area, SGA)和后台进程。但是,由于ASM执行的任务比数据库少,所以ASM SGA比数据库SGA小得多。此外,ASM对服务器的性能影响很小。ASM实例装入磁盘组,使数据库实例可以使用Oracle ASM文件;ASM实例不挂载数据库。
在将Oracle数据库安装在单独的Oracle home之前,先将Oracle ASM安装在Oracle Grid Infrastructure home中。ASM和数据库实例需要共享对磁盘组中的磁盘的访问。ASM实例管理磁盘组的元数据,并向数据库实例提供文件布局信息。
ASM元数据是Oracle ASM用来控制磁盘组的信息,而元数据驻留在磁盘组中。ASM元数据包括以下信息:
属于磁盘组的磁盘
磁盘组中可用的空间量
磁盘组中文件的文件名
磁盘组数据文件区段的位置
一个重做日志,它记录关于原子变化的元数据块的信息
Oracle ADVM卷信息
ASM实例可以使用Oracle集群软件进行集群化;每个集群节点都有一个ASM实例。如果同一节点上有多个不同数据库的数据库实例,则该节点上的数据库实例共享同一个Oracle ASM实例。
如果标准ASM集群中某个节点上的Oracle ASM实例失败,那么该节点上的所有数据库实例也会失败。但是,在Oracle Flex ASM配置中,Oracle 12c数据库实例不会失败,因为它们可以远程访问另一个节点上的另一个Oracle ASM实例。
与文件系统驱动程序故障不同,ASM实例故障不需要重新启动操作系统。在Oracle RAC环境中,幸存节点上的Oracle ASM和数据库实例会自动从节点上的Oracle ASM实例故障中恢复。
图1-1显示了一个带有一个ASM实例和多个数据库实例的节点配置。ASM实例管理元数据并为ASM文件提供空间分配。当数据库实例创建或打开一个Oracle ASM文件时,它将这些请求发送给Oracle ASM实例。作为响应,ASM实例将文件区段映射信息提供给数据库实例。
在图1-1中,有两个磁盘组:一个磁盘组有四个磁盘,另一个磁盘组有两个磁盘。数据库可以访问这两个磁盘组。图1-1中的配置显示了多个数据库实例,但是只需要一个ASM实例来服务多个数据库实例。
图1-2显示了Oracle RAC环境中的Oracle ASM集群,其中ASM提供了一个集群存储池。对于集群中服务多个Oracle RAC或单实例数据库的每个节点,都有一个Oracle ASM实例。所有数据库都被合并并共享相同的两个ASM磁盘组。
About Mirroring and Failure Groups
镜像通过在多个磁盘上存储数据副本来保护数据完整性。
data integrity 数据完整性
在创建磁盘组时,根据以下三个冗余级别之一指定Oracle ASM磁盘组类型:
正常的双向镜像
高的3路镜像
外部不使用ASM镜像,比如配置冗余的硬件RAID
冗余级别控制在不卸载磁盘组或丢失数据的情况下容忍多少磁盘故障。磁盘组类型决定了Oracle在磁盘组中创建文件时所使用的镜像级别。
ASM镜像比传统的RAID镜像更灵活。对于指定为正常冗余的磁盘组,可以为每个文件指定冗余级别。例如,两个文件可以共享同一个磁盘组,其中一个文件被镜像,而另一个文件没有镜像。
当ASM为镜像文件分配一个区段时,ASM分配一个主副本和一个镜像副本。ASM选择将镜像副本存储在与主副本不同的故障组中的磁盘。故障组用于放置数据的镜像副本,以便每个副本都位于不同故障组的磁盘上。故障组中所有磁盘的同时故障不会导致数据丢失。
在创建ASM磁盘组时,要为磁盘组定义故障组。创建磁盘组后,不能更改磁盘组的冗余级别。如果省略了故障组规范,那么除了包含Oracle Exadata单元上磁盘的磁盘组之外,ASM将自动将每个磁盘放入其自己的故障组中。正常的冗余磁盘组至少需要两个故障组。高冗余磁盘组至少需要三个故障组。具有外部冗余的磁盘组不使用故障组。
About Oracle ASM Disks
ASM磁盘是分配给ASM磁盘组的存储设备。
ASM磁盘的例子包括:
存储阵列中的磁盘或分区
整个磁盘或磁盘的分区
逻辑卷
网络附加文件(NFS)
当您将磁盘添加到磁盘组时,您可以分配一个磁盘名,或者自动分配一个磁盘名。此名称与操作系统使用的路径名称不同。在集群中,可以在不同的节点上为磁盘分配不同的操作系统设备名称,但是磁盘在所有节点上具有相同的ASM磁盘名称。在集群中,ASM磁盘必须可以从共享磁盘组的所有实例中访问。
ASM将文件按比例分布在磁盘组中的所有磁盘上。这种分配模式将每个磁盘保持在相同的容量级别,并确保磁盘组中的所有磁盘具有相同的I/O负载。因为ASM在磁盘组中的所有磁盘之间进行负载平衡,所以不同的ASM磁盘不应该共享相同的物理驱动器。
About Oracle ASM Allocation Units
每个ASM磁盘被划分为分配单元(AU)。
分配单元是磁盘组中分配的基本单元。一个文件区段由一个或多个分配单元组成。ASM文件由一个或多个文件区段组成。
创建磁盘组时,可以使用AU_SIZE磁盘组属性设置Oracle ASM分配单元大小。值可以是1、2、4、8、16、32或64 MB,具体取决于特定的磁盘组兼容性级别。较大的AU通常为使用大顺序读取的数据仓库应用程序提供性能优势。
About Oracle ASM Files
存储在磁盘组中的文件称为Oracle ASM files.
每个ASM文件都包含在一个单独的ASM磁盘组中。Oracle数据库通过文件与ASM通信。这类似于Oracle数据库在任何文件系统上使用文件的方式。您可以存储在Oracle ASM磁盘组中的各种文件类型,包括:
控制文件
数据文件、临时数据文件和数据文件副本
SPFILEs
在线重做日志、归档日志和闪回日志
RMAN备份
灾难恢复配置
更改跟踪位图
数据泵dumpsets
ASM自动生成Oracle ASM文件名,作为文件创建和表空间创建的一部分。ASM文件名以一个加号(+)开头,后面跟着一个磁盘组名。可以为Oracle ASM文件指定用户友好的别名,并为别名创建层次目录结构。
The following topics describe Oracle ASM file components:
Understanding Oracle ASM Extents
理解Oracle ASM区块
ASM文件的内容存储在磁盘组中,是存储在磁盘组中各个磁盘上的区段的集合。
每个区段驻留在一个单独的磁盘上。区段由一个或多个分配单元(AU)组成。为了适应越来越大的文件,ASM使用可变大小的区段。
可变大小区段支持更大的Oracle ASM数据文件,减少对非常大的数据库的SGA内存需求,提高文件创建和打开操作的性能。初始区段大小等于磁盘组分配单元大小,并在预定义的阈值下增加4或16倍。本主题描述了不同的区段大小。
对于AU大小小于4 MB的磁盘组:
区段大小始终等于前20000个区段集(0 - 19999)的磁盘组AU大小。
区段大小等于4*下一个20000区段集(20000 - 39999)的AU大小。
区段大小等于16*下一个20000和更高的区段集(40000+)的AU大小。
磁盘组与非盟尺寸大于或等于4 MB磁盘组RDBMS兼容性大于或等于11.2.0.4,计数的区段大小(磁盘组盟大小、4 *盟大小,或16 *盟大小)计算使用应用程序支持最大文件大小的块大小。
当将特定的磁盘组兼容性属性设置为11.1或更高时,对于新创建和调整大小的数据文件,区段大小调整功能是自动的。有关兼容性属性的信息,请参阅磁盘组兼容性。
图1-4显示了与分配单元的ASM文件范围关系。前8个区段(0到7)分布在4个ASM磁盘上,与AU大小相等。在第一个20000区段集之后,下一个20000区段集(20000 - 39999)的区段大小变为4*AU。这显示为带有范围集编号20000到20007的粗体矩形,以此类推。ASM区段的下一个增量是16*AU(图1-4中没有显示)。
Understanding Oracle ASM Striping
理解ASM的分段
ASM分段有两个主要目的:平衡磁盘组中所有磁盘的负载并减少I/O延迟。
粗粒度剥离为磁盘组提供负载平衡,而细粒度剥离通过更广泛地分散负载减少了某些文件类型的延迟。
对于条带数据,ASM将文件分割成条带,并将数据均匀地分布在磁盘组中的所有磁盘上。细粒度的条纹大小在任何配置中总是等于128 KB;这为小型I/O操作提供了更低的I/O延迟。粗粒度的条纹大小总是等于AU大小(而不是数据范围大小)。
图1-5和图1-6是Oracle ASM文件条带的示意图。在这两张图中,为包含8个磁盘的磁盘组将分配单元大小设置为1M (AU_SIZE = 1M)。实例是Oracle ASM 11g Release 2 (11.2), ASM和RDBMS的磁盘组兼容性属性设置为11.2,因此变量区段在前20,000个区段之后显示在图中。对于前20,000个区段,区段大小为1 M,等于一个分配单元(AU)。在接下来的20,000个区段中,区段大小为4 M,等于4 AUs。
为了标识文件的条带块,它们被标记为..X(24个字母)连续使用不同的字体系列A..直到所有的数据块都被识别出来。
如图1 - 5所示,文件在128 K块条纹(标签. . X)每128 K块存储在某种程度上,从第一个磁盘1中,第一个磁盘2中程度,然后继续循环模式通过所有的磁盘,直到整个文件条纹。如本例所示,条带块首先填充每个磁盘的第一个区段,然后填充每个磁盘的第二个区段,以此类推,直到整个文件条带化为止。
In Figure 1-6, the file is striped in 1 M chunks (labeled A..X) with each 1 M chunk stored uniquely in an extent, starting at the first extent in disk 1, then the first extent in disk 2, and then continuing in a round-robin pattern through all the disks until the entire file has been striped. For the first 20,000 extents where the AU equals the extent size (1 M), the stripe equals the extent size and allocation unit size.For the variable extents, where an extent is composed of multiple allocation units, the file stripe is located in an AU of the extent. The striping chunks are placed in the allocation units of the first extents of all the disks before the striping continues to the next extent.
About Oracle ASM File Templates 关于Oracle ASM文件模板
模板是属性值的集合,用于在创建ASM文件时指定磁盘区域、文件镜像和分段属性。
在创建文件时,可以包含模板名,并根据单个文件(而不是文件类型)分配所需的属性。
每个Oracle文件类型都提供了一个默认模板,但是您可以自定义模板来满足独特的需求。每个磁盘组都有一个与每个文件类型相关联的默认模板。
Understanding Oracle ASM Disk Group Administration
理解ASM磁盘组管理
About Discovering Disks
磁盘发现过程查找Oracle ASM可以访问的磁盘的操作系统名。
磁盘发现查找组成要挂载的磁盘组的所有磁盘。所发现的磁盘集还包括可以添加到磁盘组的磁盘。
ASM实例需要一个ASM_DISKSTRING初始化参数值来指定它的发现字符串。只发现Oracle ASM实例具有打开权限的路径名。发现字符串的确切语法取决于各种因素,如平台和是否使用Oracle Exadata磁盘。操作系统接受的路径名总是可用作发现字符串。
About Mounting and Dismounting Disk Groups
在数据库实例可以访问磁盘组中的文件之前,磁盘组必须由本地的Oracle ASM实例挂载。
挂载磁盘组需要发现所有磁盘并定位正在挂载的磁盘组中的文件。
可以显式地卸载磁盘组。当打开任何磁盘组文件时,如果试图在没有force选项的情况下卸载磁盘组,Oracle将报告一个错误。磁盘的故障可能超过了ASM冗余设置。如果发生这种情况,则强制卸载磁盘组。如果强制卸载磁盘组,则数据库无法访问磁盘组中的文件。
About Adding and Dropping Disks
可以将磁盘添加到现有的磁盘组中,以增加空间和提高吞吐量。
指定的发现字符串标识您可以添加的磁盘。您添加的磁盘必须由每个ASM实例使用其ASM_DISKSTRING初始化参数来发现。添加磁盘后,ASM再平衡操作将数据移动到新磁盘。为了最小化再平衡I/O,同时添加多个磁盘更有效。
如果磁盘组发生故障或无法重新使用容量,可以从磁盘组删除磁盘。使用ASM磁盘名删除磁盘,而不是使用发现字符串设备名。如果写入磁盘时发生错误,那么ASM会自动删除磁盘。
About Online Storage Reconfigurations and Dynamic Rebalancing
Rebalancing a disk group moves data between disks to ensure that every file is evenly spread across all of the disks in a disk group.
When all of the files are evenly dispersed, all of the disks are evenly filled to the same percentage; this ensures load balancing. Rebalancing does not relocate data based on I/O statistics nor is rebalancing started based on I/O statistics. Oracle ASM rebalancing operations are controlled by the size of the disks in a disk group.
Oracle ASM automatically initiates a rebalance after storage configuration changes, such as when you add, drop, or resize disks. The power setting parameter determines the speed with which rebalancing operations occur.
You can manually start a rebalance to change the power setting of a running rebalance. A rebalance is automatically restarted if the instance on which the rebalancing is running stops. Databases can remain operational during rebalancing operations.
You can minimize the impact on database performance with the setting of the ASM_POWER_LIMIT
initialization parameter.