第三十二篇:了解ASM文件的空间分配
- 格式:pdf
- 大小:182.19 KB
- 文档页数:5
ASM A 管理正做 与 o A自动㈡ASM orac 启动NOMM 与LVMASM 是OMF 理,在底层将做到了“3M 融LVM 的对比oracle 块在它 ASM diskgASM disk ASM file ASM 可以条带动平衡 I/O 以 与RDBMS M 实例和ora cle 实例管理动和停止实例MOUNT:仅 的一个扩展将存储进行自融合”。
同时也它所管理的磁group ∽ ∽ ∽ 带化和镜像磁以删除“热点实例的对比cle 实例都是的是数据库,例的命令也基仅启动实例AS ,通过ASM 我管理。
同时也是向上兼容盘组的磁盘上 VG PVLV磁盘,从而实”。
LVM 不做是由SGA 和一,而ASM 实基本一样。
SM 介和OMF 的结时,ASM 模式容的体现,简上,与LVM 实现了在数据做硬件级别的一堆后台进程实例用于对磁介绍结合,oracle 式下,备份恢简化RAC 中存基本对应。
据库被加载的的容灾,ASM 程构成,但他盘组的管理在上层将数恢复只能由r 存储端的配置的情况下添加可以实现硬他们所面对的。
数据文件进行rman 来承担置。
加或移除磁盘硬件级别的容的对象是不同行自我担,真盘以及容灾。
的,MOUNT 、OPEN:启动实例并加载磁盘,注意加载的是磁盘组,OPEN选项对于ASM实例无意义,等同于MOUNTFORCE :相当于先执行shutdown abort,然后再startup。
但是,ASM 实例没有数据字典之类的东东存储用户系统。
ASM实例的初始化参数ASM实例的初始化参数形式上与RDBMS实例相同,也有pfile和spfile,如:spfile+ASM1.ora. 但是,毕竟,ASM只有实例,而且加载的是磁盘组,所以相对RDBMS实例的初始化参数要简单。
ASM 需要的内存不多:对大多数系统,只需 64 MB。
因此内存这块相关参数就不说了。
下面说说几个ASM实例特别需要的参数。
㈠INSTANCE_TYPE> show parameter instance_typeNAME TYPE VALUE‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐ instance_type string asm初始化参数文件中的INSTANCE_TYPE,该参数必须被设置为ASM,标识要启动的实例是ASM,而不是rdbms实例.㈡ ASM_DISKSTRING> show parameter asm_diskstringNAME TYPE VALUE‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐asm_diskstring string设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。
ASM详解ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成,也可以通过sqlplus 工具来维护。
ASM 实例的创建和删除也可以用DBCA 这个命令来操作。
在dbca 的第一个界面选择配置自动存储管理就可以了。
ASM 实例需要CSS 进程,如果是非RAC 环境,在启动ASM 实例之前会提示用脚本$ORACLE_HOME/bin/localconfig add 启动CSS。
1. ASM 实例由SGA 和后台进程组成。
1.1 SGA 组成:ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。
需要注意的是Share Pool,因为Extent Map 要放在这部分的内存中,需要更具数据量来估计Extent Map 的大小做相应的调整。
Extent Map 的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:Select sum(bytes)/(1024*1024*1024) from v$datafile;Select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.Group#=b.Group#;Select sum(bytes)/(1024*1024*1024) from v$tempfile where status='online';这3个sum 的总和对应着数据库存放ASM中所有文件大小总和,对于使用External Redundancy 的磁盘组,每100G 需要1MB 的Extent Map,根据这个比例计算Extent Map 所需要的空间,在加上额外的2M B就可以了。
在实际工作中一般不需要考虑ASM SGA的配置,使用Oracle 提供的缺省值就可以了。
ASM的文件管理深入解析第一章ASM文件ASM中的文件总体上来说,分为两大类,元文件和数据文件。
数据文件包含Oracle的数据文件、控制文件、重做日志文件、归档日志文件等等。
对于ASM来说,只要是非元文件,就是数据文件。
每一个文件,在ASM中都有一个专门的索引号,也就是编号,ASM文件索引号从1开始。
其中,前255个,也就是1至255号文件,都是元文件。
256之后的是其他各种文件。
元文件中包含了各种ASM的配置、各类数据文件信息还有目录、别名等等信息,都是在元文件中的。
所有V$ASM_开头视图的信息,都来自元文件中。
其中,1号文件包含所有文件的磁盘占用信息,包括元文件、甚至1号文件自身的空间分布信息,也都是在1号文件内部。
每个文件在它里面占用一个块(4096字节,元数据块大小为4K)的空间。
从256号文件开始,是数据库的各类文件。
假设你放在ASM上的第一个文件是一个控制文件A,第二个文件是一个数据文件B。
哪么控制文件A在ASM中的索引号是256,数据文件B的索引号是257。
1号文件总是开始在0号磁盘2号AU,记住这个位置:0号盘2号AU。
这是ASM中定位文件的起点,它的作用,有点相当于磁盘上的引导区,在电脑开机后负责将OS启动起来。
1号文件在最少情况下,至少有两个AU。
上面我们提到过了,在1号文件中,每个文件占用一个元数据块,存放自身的空间分布信息。
每个元数据块大小是4K,一个AU是1M,哪么,每个AU中,可以存储256个文件的空间分布信息。
这其中,0号盘2号AU中,全是元文件的信息。
再具体一点,0号盘2号AU,第一个元数据块被系统占用,从第二个块开始,到255为止,共255个元数据块,对应索引号1至255的文件。
其实,也就是全部的元文件了。
也就是说0号盘2号AU,保存了全部元文件的空间分布信息。
1号文件的第二个AU,从第一个块开始,保存256号文件。
第二个块对应257号文件,等等。
每次从ASM中读数据时,Oracle都要先读到1号文件,从中找出要读的目标文件在磁盘上的分布位置,然后再去读取相应的文件的数据。
ASM(自动存储管理)是一个专门为Oracle数据库服务的数据文件存储机制,通过ASM管理数据文件,DBA不用再担心I/O性能问题,也不需要知道文件的名称,同时ASM也提供了文件系统到卷管理器的集成,下面依次介绍。
一、ASM的特点(1)自动调整I/O负载ASM可以在所有可用的磁盘中自动调整I/O负载,不但避免了人工调整I/O的难度,而且也优化了性能,同时,利用ASM可以在线增加数据库的大小,而无需关闭数据库。
(2)条带化存储ASM将文件分为多个分配单元(Allocation Units,AU)进行存储,并在所有磁盘间平均分配每个文件的AU。
(3)在线自动负载均衡当共享存储设备有变化时,ASM中的数据会自动均匀分配到现有存储设备中。
同时,还可以调节数据的负载均衡速度。
(4)自动管理数据库文件在ASM存储管理中,Oracle数据文件是ASM自动管理的。
ASM创建的任何文件一旦不再需要,就会被自动删除。
但是,ASM不管理二进制文件、跟踪文件、预警日志和口令文件。
(5)数据冗余ASM通过磁盘组镜像可以实现数据冗余,不需要第三方工具。
(6)支持各种Oracle数据文件ASM存储支持Oracle数据文件、日志文件、控制文件、归档日志、RMAN备份集等。
二、ASM的体系结构与后台进程图1显示了ASM的物理构成。
从图1可以看出,在顶层是ASM磁盘组,ASM实例和数据库实例可以直接访问这些磁盘组;然后是ASM文件,每个ASM文件只能包含在一个磁盘组中,不过,一个磁盘组中可以包含属于多个数据库的多个ASM文件,并且单个数据库可以使用来自多个磁盘组的存储空间;第三部分是ASM磁盘,多个ASM磁盘组成了ASM磁盘组,但每个ASM磁盘只能属于一个磁盘组;接着是AU(分配单元),AU是ASM磁盘组分配的最小连续磁盘空间,ASM 磁盘按照AU进行分区,每个AU的大小为1MB;这个结构的底层是Oracle数据块,由于AU是ASM分配的最小连续磁盘空间,因此,ASM是不允许跨分配单元拆分一个Oracle数据块的。
ORACLE_ASM_概述Oracle ASM(Automatic Storage Management)是Oracle数据库管理系统中的一项功能强大的存储管理技术。
它提供了一个集成的、高性能的存储解决方案,用于管理数据库文件、控制数据分布和提供高可用性。
下面将对Oracle ASM进行详细的概述。
Oracle ASM的主要目标是简化数据库存储的管理和维护。
它将数据文件和日志文件直接映射到操作系统的文件系统,而无需使用文件系统路径来引用它们。
这样做的好处是,ASM可以自动管理多个存储设备(如磁盘组),并为数据库文件提供统一的访问接口。
这样,数据库管理员就可以更轻松地管理存储设备,并且不需要了解底层的物理存储细节。
ASM使用逻辑概念来管理存储,这使得它与底层的物理存储设备解耦。
例如,ASM使用概念上的“磁盘组”来组织存储设备。
磁盘组是一个逻辑容器,它包含多个物理设备(如磁盘)并提供统一的命名空间。
ASM将数据文件分布在磁盘组的多个磁盘上,以提高性能和可靠性。
它还使用“重定义”来保持文件的完整性,并提供与文件相关的一致性保护机制。
使用ASM,数据库管理员可以更容易地配置和管理数据库存储。
例如,他们可以使用ASM命令来创建和管理磁盘组、向磁盘组添加/删除磁盘、创建/删除ASM实例等。
此外,ASM还提供了许多性能和可靠性方面的优势。
例如,ASM可以自动在磁盘组的多个磁盘上分布数据库文件,以提高I/O性能。
它还可以通过数据文件重定义来自动修复数据坏块,从而提供更高的数据可靠性。
另一个重要的特性是ASM可以与Oracle数据库实例无缝集成。
ASM可以自动识别ASM实例中的数据库文件,并为每个文件提供统一的命名约定。
这意味着数据库管理员可以在ASM文件系统中直接引用数据文件,而无需指定文件系统路径。
这大大简化了数据库管理中的一些重要任务,如备份和恢复操作。
值得注意的是,ASM并不是Oracle数据库的唯一存储选项。
探索ORACLE之ASM概念(完整版)⼀、 ASM(⾃动存储管理)的来由:ASM是Oracle 10g R2中为了简化Oracle数据库的管理⽽推出来的⼀项新功能,这是Oracle⾃⼰提供的卷管理器,主要⽤于替代操作系统所提供的LVM,它不仅⽀持单实例,同时对RAC的⽀持也是⾮常好。
ASM可以⾃动管理磁盘组并提供有效的数据冗余功能。
使⽤ASM(⾃动存储管理)后,数据库管理员不再需要对ORACLE中成千上万的数据⽂件进⾏管理和分类,从⽽简化了DBA的⼯作量,可以使得⼯作效率⼤⼤提⾼。
⼆、什么是ASMASM它提供了以平台⽆关的⽂件系统、逻辑卷管理以及软RAID服务。
ASM可以⽀持条带化和磁盘镜像,从⽽实现了在数据库被加载的情况下添加或移除磁盘以及⾃动平衡I/O以删除“热点”。
它还⽀持直接和异步的I/O并使⽤Oracle9i中引⼊的Oracle数据管理器API(简化的I/O系统调⽤接⼝)。
ASM是做为单独的Oracle实例实施和部署,并且它只需要有参数⽂件,不需要其它的任何物理⽂件,就可以启动ASM实例,只有它在运⾏的时候,才能被其它数据访问。
在Linux平台上,只有运⾏了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM。
三、使⽤ASM的好处:1、将I/O平均分部到所有可⽤磁盘驱动器上以防⽌产⽣热点,并且最⼤化性能。
2、配置更简单,并且最⼤化推动数据库合并的存储资源利⽤。
3、内在的⽀持⼤⽂件4、在增量增加或删除存储容量后执⾏⾃动联系重分配5、维护数据的冗余副本以提⾼可⽤性。
6、⽀持10g,11g的数据存储及RAC的共享存储管理7、⽀持第三⽅的多路径软件8、使⽤OMF⽅式来管理⽂件四、 ASM冗余:ASM使⽤独特的镜像算法:不镜像磁盘,⽽是镜像盘区。
作为结果,为了在产⽣故障时提供连续的保护,只需要磁盘组中的空间容量,⽽不需要预备⼀个热备(hot spare)磁盘。
不建议⽤户创建不同尺⼨的故障组,因为这将会导致在分配辅助盘区时产⽣问题。
ASM自动存储管理技术经历多个年头,目前已经广泛使用于各个领域的数据库存储解决方案。
谈到ASM相信大家可能会参杂着熟悉而陌生的感觉,熟悉在于目前大家使用的11g rac中基本都是使用ASM,陌生在于大家平时可能只是基本的使用,对asm了解并不全面,例如:数据库实例是怎么和asm交互和分工的、ASM存在哪些特性、数据库各种文件是怎样放于asm存储中、它的元数据怎么存放等等。
开始接下来我带大家重新全面认识ASM:Oracle10g之前,存储设备的使用情况(在UNIX或者LINUX环境中)如下:●操作系统上安装逻辑卷管理器(LVM);●通过LVM将多个磁盘做成卷组;●在卷组上划分逻辑卷(logical volume);●在逻辑卷上创建文件系统;●Rac环境下需要第三方共享集群软件。
1、Oracle10g之后引入的专用文件系统ASM,为数据库文件的管理提供了很好的支持;2、DBA 能够完全在Oracle 框架内执行许多任务。
利用ASM来将一组磁盘转换成一个高可伸缩的和高性能的文件系统/卷管理器;3、磁盘组提供了直接作为原始设备来访问这个空间,并仍提供文件系统的便利性和灵活性的好处。
RAC环境下的asm结构:ASM的出现是为RDBMS管理文件存储1、ASM中的适合存放文件类型包括:数据文件datafile、控制文件controlfile、重做日志redolog、归档日志archivelog、闪回日志flashback log、spfile、RMAN备份以及block tracking file、datapump文件2、注意ASM不会替代RDBMS去实施IO读写,很多对这一点存在误解,认为RDBMS发送IO request给ASM,ASM去做真正的IO操作,这是错误的。
3、ASM只负责将存储空间地址返回给RDBMS,真正的IO还是由RDBMS进程去完成,和不用ASM的裸设备一样4、因此ASM不是IO的中间层,也就不存在因为ASM而出现所谓的IO瓶颈ASM实例ASM instance的主要任务之一就是管理ASM metadata元数据。
oracle 10g中ASM概念以及管理2010-06-30 17:11:48标签:oracle管理概念休闲ASM版权声明:原创作品,谢绝转载!否则将追究法律责任。
一、关于oracle ASM实例的概念:ASM 实例与 ORACLE 实例差不多,都是由 sga 和一堆后台进程组成,从功能上来看,区别在于oracle实例管理的是数据库,而asm实例只是管理asm盘阵。
通过Oracle EM或DBCA都可以对asm进行一些配置,不过三思觉着管理asm括弧实例的最佳工具仍是sql*plus,在进入sql*plus前也需要设置ORACLE_SID的环境变量,该环境变量通常是+ASM[node#] 。
ASM 实例没有数据字典之类的东东存储用户系统,因此最常见的连接认证方式就是操作系统认证as sysdba进入(OSDBA组的用户)。
如果是通过远程连接的话( 比如远程通过tnsnames 或OEM管理),也可以使用密钥文件进行验证,该密钥文件直数据库的密钥文件在命名规则及使用规则上完全一模一样。
如果使用dbca建库的话,默认就会创建asm的密钥文件,当然也可以自行手动通过orapwd命令进行创建,与数据库的密钥文件有所不同的是,asm 的密钥文件对应的用户只有一个----sys。
二、启动和关闭oracle实例:前些日子,装完oralce配置完asm后一切正常,当重新启动后就发现了oracle起不来,报如下错误:ORA-01078: failure in processing system parametersORA-01565: error in identifying file '+ORADATA/db01/spfiledb01.ora'ORA-17503: ksfdopn:2 Failed to open file +ORADATA/db01/spfiledb01.oraORA-15077: could not locate ASM instance serving a required diskgroup检查了一下,并非'+ORADATA/db01/spfiledb01.ora'文件不存在,而是由于ASM磁盘组没起来导致的。
asm原理
ASM(Assemble Language)是一种低级语言,也称为汇编语言,用于编写计算机程序。
相对于高级语言来说,ASM更加
接近计算机的底层硬件架构,程序员可以直接操作寄存器、内存及其他硬件资源。
ASM的原理是将人类可读的汇编语言指令转换为机器可以执
行的二进制指令。
汇编语言指令与机器指令之间存在一一对应关系,每个汇编语言指令都对应着一条机器指令。
汇编语言通过助记符(mnemonic)来表示指令类型,例如“mov”表示数据传送,而“add”表示加法操作。
在ASM的编写过程中,程序员需要了解计算机的指令集架构,并且要按照特定的语法规则编写指令。
编写的ASM程序需要
通过汇编器将其转换为可执行的机器码,这个过程称为汇编。
汇编器会将汇编语言指令逐条转换为对应的机器指令,并将其存储到目标文件中。
最终,目标文件可以被计算机加载和执行。
ASM的主要优点是执行效率高,可以直接操作硬件资源,实
现高度的灵活性和可定制性。
因此,ASM常被用于编写计算
密集型的程序和操作系统等底层软件。
然而,ASM也存在一
些缺点,例如编写复杂程序需要花费更多的时间和精力,以及在不同的硬件平台上需要重新编写代码。
总之,ASM是一种底层的编程语言,通过将汇编语言指令转
换为机器指令实现程序执行。
它的原理是将汇编语言指令与机
器指令一一对应,并通过汇编器进行转换。
ASM具有高效、灵活和可定制性的特点,适用于编写计算密集型和底层软件。
ASM 磁盘、目录的管理ASM 磁盘是 ASM 体系结构的重要组成部分,ASM 磁盘由 ASM 实例来定位、管理,本文主要讲述 AS M 磁盘组、故障组等等。
一、相关概念 1.ASM 磁盘组 ASM 存储管理除了 ASM 实例之外,最大的组成部分就是 ASM 磁盘组。
一个 ASM 磁盘组由过多个 A SM 磁盘组成 一个磁盘组内可以存放多个数据文件, 一个数据文件仅仅只能位于一个磁盘组内, 不能跨磁盘组 多个数据库可以共享相同的或多个磁盘组 磁盘组的冗余类型可以分为三类:标准冗余,高度冗余,外部冗余 对于已创建的磁盘组,不能够更改其冗余级别,如要更改,需要删除该磁盘组后再重新创建 2.ASM 磁盘 ASM 磁盘通过标准的 OS 接口来访问,由 Oracle 用户来读写,在聚集的所有节点可以被访问 ASM 磁盘在不同的节点可以使用不同的名字 ASM 磁盘可以使网络文件系统 ASM 磁盘上的对象被冗余保护 每一个 ASM 磁盘的第块用于定义磁盘的头部信息,ASM 磁盘名字编号,创建的时间戳等 ASM 文件会均匀分布在一个 ASM 组内的各个磁盘中 3.ASM 故障组 一个磁盘组可以由两个或多个故障组组成 一个故障组由一个或多个 ASM 磁盘组成 故障组提供了共享相同资源的冗余,我们可以这样来理解标准冗余 假定有磁盘组 DG1,且创建了两个故障组 fgroup1,fgroup2,每个故障组由个 ASM 磁盘组成,则对标 准冗余而言,两个故障组互为镜像 failgroup1 --> asmdiskA , asmdiskB failgroup2 --> asmdiskC , asmdiskD 假定文件 datafileA 大小为 4MB,则个 4extent 均匀分布到 asmdiskA,asmdiskB,同样 asmdiskC,a smdiskD 也包含该文件的至个 extent 即只要有一个 extent 在故障组 fgroup1 中存在,必定有一个镜像的 extent 存在于 fgroup2 中, 反之亦然,两个 extent 互为镜像。
操作系统中的文件分配与磁盘调度算法在操作系统中,文件分配和磁盘调度算法是两个重要的概念,它们对于磁盘的利用和性能优化起着至关重要的作用。
本文将从文件分配与磁盘调度算法的基础概念、常见算法以及优化策略等方面进行探讨和分析。
一、文件分配算法文件分配算法是指操作系统中用于管理存储设备,特别是磁盘存储设备中文件分配的方法和策略。
常见的文件分配算法有顺序分配、链式分配、索引分配和混合分配等。
1.顺序分配算法:顺序分配算法是将磁盘分成固定大小的块,每个块可以分配给一个文件,文件存储时按照顺序将块分配给文件。
这种算法简单高效,但容易出现外部碎片。
2.链式分配算法:链式分配算法是将文件的地址信息记录在文件目录中,每个文件的数据块可以散布在整个磁盘中,通过链表将其连接起来。
这种算法不会产生外部碎片,但是需要有指针字段。
3.索引分配算法:索引分配算法是在磁盘上建立一个索引表,用来记录每个文件所占用的磁盘块号。
这种算法具有较好的查找性能,但是索引表本身需要占用磁盘空间。
4.混合分配算法:混合分配算法是将前面提到的多种分配算法结合起来使用,根据文件的大小、访问模式等因素来选择合适的分配方式。
二、磁盘调度算法磁盘调度算法是指操作系统中用于调度磁盘访问请求的算法,其目的是提高磁盘的性能,减少磁盘访问的平均寻道时间。
常见的磁盘调度算法有先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)等。
1.先来先服务算法(FCFS):FCFS算法是按照磁盘请求的到达顺序进行调度,即先到达的请求先被处理。
这种算法简单直观,但可能会导致某些请求长时间等待。
2.最短寻道时间优先算法(SSTF):SSTF算法是选择最短寻道时间的请求进行调度。
这种算法能够最大程度地减少寻道时间,但可能会导致某些请求长时间等待。
3.电梯算法(SCAN):SCAN算法是模拟电梯的运行方式,磁头按照一个方向移动,直到达到磁盘的一端,然后改变方向继续移动。
文件读取内存分配描述
文件读取是指从存储设备(如硬盘、闪存等)中读取文件内容并加载到计算机内存中,以便进行进一步的处理或操作。
内存分配是指为程序或进程分配一定大小的内存空间,以便存储变量、数据结构、程序指令等。
在文件读取过程中,需要分配一部分内存空间来存储读取的文件内容。
内存分配描述可以包括以下几个方面:
1. 内存大小:描述所需分配的内存空间的大小,通常以字节为单位。
2. 内存地址:描述分配的内存空间在计算机内存中的地址,用于后续访问和操作。
3. 内存分配方式:描述内存分配的方式,主要分为静态分配和动态分配两种方式。
静态分配是在编译时确定所需的内存大小并在程序执行前分配,而动态分配是在程序运行时根据需要动态地分配内存空间。
4. 内存释放:描述释放已分配内存的操作,以便回收内存空间供其他程序使用,避免内存泄漏问题。
文件读取和内存分配密切相关,文件读取需要分配一定大小的内存空间来存储文件内容,而内存分配的大小和方式会影响文件读取的效率和可靠性。
因此,在进行文件读取操作时,需要合理地进行内存分配,避免内存溢出或不足等问题。
同时,在文件读取结束后,需要及时释放已分配的内存空间,以免造成资源浪费。
1什么是ASMASM全称为Automated Storage Management,即自动存储管理,它是自Oracle10g这个版本Oracle推出的新功能。
这是Oracle提供的一个卷管理器,用于替代操作操作系统所提供的LVM,它不仅支持单实例配置,也支持RAC这样的多实例配置。
将给Oracle数据库管理员带来极大的方便,ASM可以自动管理磁盘组,并提供数据冗余和优化。
特别是对于企业极的大型数据库管理员来说,可以使管理员可以从管理成百上千个数据文件这些琐碎的日常事务中解脱开来,以便处理其它更为重要的事务上去。
在Oracle 10g这个版本之前,管理一个大型数据库成百上千个的数据文件对数据库管理员来说是一个既无技术含量又十分枯燥的工作,这要求数据库管理员要熟悉一些系统的LVM的相关知识,做好磁盘规化,LV的条带等相关的系统方面的相关操作。
而使用自动存储管理将大大减轻这方面的工作量,数据库管理员只需要管理少数几个磁盘组即可。
一个磁盘组是ASM管理的一个逻辑单元,由一组磁盘设备组成。
我们可以定义一个磁盘组作为数据库的默认磁盘组,Oracle会自动管理存储,包括创建、删除数据文件等。
Oracle会自动将这些文件与一个合适的数据库对象做关联,这样我们在管理这些对象时只需要提供对象的名称,而无需像以前那样提供详细的文件名。
ASM提供了很多有用的存储技术,如RAID和LVM(逻辑卷管理)等。
像这些技术一样,ASM允许你在一组独立的磁盘上创建一个单独的磁盘组。
这样就实现了单个磁盘组的I/O 均衡。
同时ASM还实现了条带化(Striping)和磁盘镜像(Mirroring)以提高I/O的性能和数据可靠性。
与RAID或LVM不同的是,ASM是在文件级实现的条带化和镜像,这样的实现方式给用户带了很大选择自由度,我们可以在同一个磁盘组中对不同的文件配置不同的存储属性,实现不同的存储方式。
2 11g中ASM都有哪些新特征2.1 快速重新同步(ASM Fast Mirror Resync)短暂的磁盘路径发生问题时,恢复ASM磁盘组(DISK GROUP)的允余性是很费时间的,特别是这种恢复操作需要重新布局整个磁盘组的情况下。
了解ASM文件的空间分配
本文主要是对ASM文件的空间分配进行一些探讨和研究。
ASM空间分配的最小单位是AU,默认的AU size是1MB,但在Exadata下AU 的默认大小是4MB。
ASM文件的空间分配是以extent为单位,每一个extent是由一个或多个AU组成,在11.2版本,前20000个extent,每一个extent由1个AU组成,接下来的20000个extent,每一个由4个AU组成,再超出的extent,每一个由16个AU组成。
这个特性被叫做可变extent。
而在11.1版本,extent的增长则遵循的是1-8-64倍AU的方式。
在版本10,可变extent
这个特性还没出现,因此所有的extent的大小都是1个AU。
Bytes vs space
视图V$ASM_FILE中,有两列是关于空间分配的:BYTES 和SPACE,它们的定义如下:
•BYTES - 文件的大小
•SPACE - 文件实际占用的ASM空间的大小
这两列的定义有一些细微的差异,但是这两列的数值差异可能是非常大的,下面我们就来实际的看一下,首先交代一下我的测试环境,ASM和DB的版本为11.2.0.3,使用ASMLIB 方式管理的磁盘:
可以通过如下的查询来简单的了解我的环境中磁盘组data的基本情况,例如AU的大小,冗余的级别,我的数据文件大多都位于这个磁盘组中。
现在创建一个小于60个extent的“小”文件和一个大于60个extent的“大”文件。
“小"文件的ASM文件号是272,“大”文件的ASM文件号是271。
接着我们通过前面提到的V$ASM_FILE视图来获取这两个文件的空间占用信息:
bytes字段显示了文件的实际大小,我们小文件的大小为10MB,因此占用了10个AU(AU 的size为1MB),小文件实际占用的ASM空间有22个AU,其中10个AU是实际的数据文件,1个AU为文件头,由于文件是镜像的,因此文件真正占用的ASM空间为:(10+1)*2=22个AU。
对于“大”文件,bytes字段显示了文件的实际大小为100MB也就是100个AU,到现在为止一切推论都跟原理相符,但是接着我们发现大文件的ASM空间占用为205个AU,按照上面的计算应该有202个AU才正确,多出来的3个AU是如何来的?接下来我们就来一窥究竟。
ASM space
下面的查询(在ASM实例上运行)展示了ASM 271号文件extent的分布情况:
0 0 3 1155
0 1 0 1124
1 2 0 1125
1 3
2 1131
2 4 2 1132
2 5 0 1126
100 200 3 1418
100 201 1 1412
2147483648 0 3 1122
2147483648 1 0 1137
2147483648 2 2 1137
由于ASM文件是做了镜像的,我们可以看到每一个虚拟extent有两个物理extent,而且位于不同的磁盘(其实还位于不同的failgroup),但是最有趣的是查询结果的最后三行,虚拟extent的号是2147483648,做了3副本。
我们可以通过kfed工具看下这个extent的内容,使用kfed我们首先需要知道ASM磁盘的名称。
通过如下查询获得ASM磁盘的名称:
我们来检查下这些AU中具体存放的内容:
这些额外的AU存放着ASM的元数据,更具体的讲,他们保存了extent map信息,而这些extent map信息不能够存放在ASM的文件目录块中了,因为ASM文件目录块中,只能存放60个extent的条目,一旦超出这个值,那么就要有额外的地方来记录这个信息。
由于这属于ASM的元数据,因此被做了3副本(虽然是一个normal冗余的磁盘组),因此每一个大文件都会有这么3个额外的AU,但在一个external冗余的磁盘组中,仅仅只会有这么一个额外的AU,不会被做复制。
结论
ASM空间的占用取决于2个因素:文件的实际大小和磁盘组的冗余度。
在external冗余的磁盘组中,空间的占用:文件实际大小+1个AU(文件头)+1个额外的AU(如果文件大于60个AU)。
在一个normal冗余的磁盘组中,空间的占用:两倍的文件实际大小+2个AU(文件头)+3个额外的AU(如果文件大于60个AU)
在一个high冗余的磁盘组中,空间的占用:三倍的文件实际大小+3个AU(文件头)+3个额外的AU(如果文件大于60个AU)。