ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第十六章 ASM 管理

第十六章 ASM 管理

原创 Linux操作系统 作者:tolywang 时间:2011-09-02 17:06:03 0 删除 编辑

---  基础知识

1. 常见普通文件系统类型了解

ext2
ext2文件系统是为解决ext文件系统的缺陷而设计的可扩展、高性能的文件系统,称为
二级扩展文件系统,是Linux系统中标准的文件系统,支持256个字节的长文件名,文件
存取性能比ext有很大的提高。

ext3
ext3文件系统是ext2的升级版本,兼容ext2。与ext2文件系统相比,ext3增加了文件
系统日志记录功能,称为日志式文件系统,是目前Linux默认采用的文件系统。由于具
有了日志功能,当因断电或其他异常事件而非正常关机时,重启系统后操作系统会根据
文件系统的日志,快速检测并恢复文件系统到正常的状态,提高数据的安全性。

MS-DOS
这是DOS、Windows和一些OS/2计算机使用的文件系统。对于MS-DOS文件系统,文件名
长度不能超过8个字符,扩展名不能超过3个字符。
备注:  OS/2 allows computers to handle several tasks at once, making them
faster and more efficient than ever.

VFAT
这是Windows 9x、Windows XP使用的扩展的DOS文件系统,增加对长文件名的支持。

ISO9660
这是一种针对ISO9660标准的CD-ROM文件系统,允许用户在PC、Mac和其他主要计算机
平台上读取CD-ROM文件。几乎所有带有CD-ROM的计算机都可以从ISO9660文件系统读取文件。

NFS
网络文件系统,这是用于存取远程计算机硬盘的文件系统。

SWAP
这是一种特殊的分区,用于在内存和硬盘间交换数据的文件系统。

NTFS
这是Windows NT文件系统,Windows 2000/XP及以后的操作系统都支持该文件系统。

 

 

2. 常见集群文件系统类型了解

GFS:全局文件系统
GFS是应用最广泛的集群文件系统。它是由红帽公司开发出来的,允许所有集群
节点并行访问。元数据通常会保存在共享存储设备或复制存储设备的一个分区里。

OCFS:甲骨文集群文件系统
从概念上来说,OCFS与GFS非常相似,现在OCFS2已经被应用于Linux系统之中。

VMFS:VMware的虚拟计算机文件系统
VMFS是ESX服务器用来允许多个服务器访问同一个共享存储设备的集群文件系统。
这样就可以实现虚拟机在不同服务器之间的无缝迁移,因为源服务器和目标服务器
都可以访问同一个存储设备。日志是分布式的,ESX服务器之间也不会出现单节点故障。

Lustre:Sun的集群分布式文件系统。
Lustre是专门用于包含数千个节点的大型集群的分布式文件系统。Lustre已经
支持Linux系统,但是高速计算环境之外的应用程序是有限的。

 

 

16.1  ASM的概念

ASM :  Automatic Storage Management 

ASM 是 Oracle 数据库 10g 中一个非常出色的新特性,它以平台无关的方式提供了文
件系统、逻辑卷管理器以及软件 RAID 等服务。ASM 可以条带化和镜像磁盘,从而实现
了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。

ASM 不是一个通用的文件系统,并只能用于 Oracle 数据文件、重做日志以及控制文件。
ASM 中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也
可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用
ASM 文件的数据库执行备份和恢复操作的唯一途径就是通过恢复管理器 (RMAN)。

ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。在 Linux 上,
只有运行 OCSSD 服务(由 Oracle 通用安装程序默认安装)才能使用 ASM。ASM 需要的
内存不多:对大多数系统,只需 64 MB。

 

 


--------------------------------------------------------- 

1、UNIX 或者LINUX 操作系统上安装逻辑卷管理器(LVM) 通过LVM将多个磁盘(PV)做成
卷组(VG),  在卷组上划分逻辑卷(logical volume), 在逻辑卷上创建文件系统 将文件系
统挂载到某个目录下面

2、windows 将磁盘划分成不同的分区, 分区上创建文件系统, 上面的都是通过文件系统
对空间进行管理,软件通过文件系统来访问存储空间

3、裸设备:不通过文件系统,而是直接由Oracle 数据库实例来读写磁盘,这个空间是
谁也不管理的,只有oracle 自己并发访问,oracle 有并发机制,文件系统就不能做到,
对文件系统来说,管理文件相对容易,文件系统层次清晰,但不能支持并发,速度慢;
对裸设备来说,管理文件相对困难,性能好

 

ASM, 即自动存储管理,它是自Oracle10g 这个版本Oracle 推出的新功能。这是Oracle
提供的一个卷管理器,用于替代操作系统所提供的LVM,它不仅支持单实例配置,也支持
RAC 这样的多实例配置。将给Oracle 数据库管理员带来极大的方便,ASM 可以自动管理
磁盘组,并提供数据冗余和优化。特别是对于企业极的大型数据库管理员来说,可以使
管理员可以从管理成百上千个数据文件这些琐碎的日常事务中解脱开来,以便处理其它
更为重要的事务上去。


在Oracle 10g 这个版本之前,管理一个大型数据库成百上千个的数据文件对数据库管
理员来说是一个既无技术含量又十分枯燥的工作,这要求数据库管理员要熟悉一些系统
的LVM 的相关知识,做好磁盘规化,LV 的条带等相关的系统方面的相关操作。而使用
自动存储管理将大大减轻这方面的工作量,数据库管理员只需要管理少数几个磁盘组即可。


一个磁盘组(disk group)是ASM 管理的一个逻辑单元,由一组磁盘设备组成。我们可以
定义一个磁盘组作为数据库的默认磁盘组, Oracle 会自动管理存储,包括创建、删除
数据文件等。Oracle 会自动将这些文件与一个合适的数据库对象做关联,这样我们在管
理这些对象时只需要提供对象的名称,而无需像以前那样提供详细的文件名。 ASM 提供
了很多有用的存储技术,如RAID 和LVM(逻辑卷管理)等。像这些技术一 样,ASM 允许
你在一组独立的磁盘上创建一个单独的磁盘组。这样就实现了单个磁盘组的I/O 均衡。


同时ASM 还实现了条带化(Striping)和磁盘镜像(Mirroring)以提高I/O 的性能和数据
可靠性。与RAID 或LVM 不同的是,ASM 是在文件级实现的条带化和镜像,这样的实现
方式给用户带了 很大选择自由度,我们可以在同一个磁盘组中对不同的文件配置不同
的存储属性,实现不同的存储方式。 一个裸设备只能放一个文件,不能将所有文件放
在一个裸设备上。

而 ASM :裸设备+裸设备+.......,  格式化裸设备的头部信息,将这些磁盘组成一个
磁盘组,文件存在磁盘中,实现了负载均衡和冗余

ASM 是裸设备,因为他只格式化了头部信息,asm mount 后,asm磁盘组就被打开,

 

oracle 看到的就是裸设备,ASM 就是把这些裸设备组成一个磁盘组,而且asm中也有目录,
有文件,不建议对这些目录进行管理,但他很像一个文件系统。


ASM本身由两大部分组成: ASM实例和ASM磁盘组


ASM磁盘组里面只能存放Oracle文件:数据文件、联机重做日志文件、控制文件等

 


ASM存储结构

ASM 并没有替代现有的概念。 磁盘组是 oracle 默认的管理单元,一个磁盘组包括
若干块磁盘,每块磁盘就是一个 asm 磁盘

1、ASM磁盘组可以包含多个磁盘
2、ASM磁盘中可以包含多个文件,多个文件也可以打散以后放在多个磁盘上,
   因此磁盘和文件是多对多的关系
3、一个ASM磁盘被分成多个AU,每个AU 大小是1M,一个Oracle 数据块一定放在一个 AU
中,不会跨多个AU,一个AU 则由多个物理磁盘块组成,AU 是ASM进行扩张和收缩时的最
小单位 (一个windows 系统默认系统块是4K)


ASM 实例的主要进程和普通的实例也不一样。


对ASM磁盘组的管理,则由ASM实例来完成


ASM实例有3 个类型的后台进程 RBAL 全称为
Rebalancing Daemon。ASM相关的管理进程,负责执行ASM所管理磁盘资源的
rebalance 操作。这个进程用来确定何时需要执行重新平衡操作及估计该操
作花费的时间 ARBn 这些进程在RBAL 进程的管理下做实际的ASM所管理磁盘
资源的rebalance 操作,n 的多少由asm_power_limit 参数决定。 GMON diskgrou
p 监视器 每个使用了ASM存储的数据库实例也有2 个新的进程 1、RBAL:
用来打开磁盘组里的磁盘,然后通过DBWn 进程将数据写入到这些打开的磁盘里去


2、ASMB:在第一次访问ASM文件时动态创建,他作为前台进程连入到ASM实例,
从而使得数据库实例和ASM实例之间建立了一个连接通道。通过该通道,定期在两
个实例之间传递数据,负责向ASM实例提供I/O 统计数据。访问Group Services,
从中获取有关ASM 实例所管理的磁盘组的信息。 数据库实例只能与其所在的同
一台主机上的ASM实例通信,如果当前主机上存在多个数据库,则这些数据库可
以共享同一个ASM实例。

 

创建ASM实例

ASM实例与数据库实例类似,也需要参数文件spfile 可以使用dbca 完成spfile
的创建 也可以手工编辑pfile,然后创建spfile 。 ASM 实例同数据库实例一样,
也有自己的sga,spfile,等等 使用DBCA 创建的ASM 实例的名字是+ASM。
我们可以以后再创建ASM磁盘组。

 


C:\Documents and Settings\li>set ORACLE_SID=+asm
C:\Documents and Settings\li>sqlplus / as sysdba
SQL> show parameter instance_type

NAME TYPE ------------------------------------ -----------
----------- VALUE ----------------------------
-- instance_type string asm SQL> show parameter instance_name NAME TYPE -
----------------------------------- ---------------------- VALUE ---
-----
---------------------- instance_name string +asm SQL> create pfile='c:\init+asm.ora' from spfile; 文件已创建。 Init+asm.ora 文件内容如下 *.core_dump_dest='E:\oracle\product\10.2.0\admin\+ASM\cdump' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='SHARED' *.user_dump_dest='E:\oracle\product\10.2.0\admin\+ASM\udump' 默认sid 就是+asm large_pool_size 是asm进程空间 SQL> show parameter db_unique; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ db_unique_name string +ASM 数据库名称在多实例的rac 环境下会使用到,默认适合db_name 相同 SQL> show parameter asm_power NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ asm_power_limit integer 1 SQL> show parameter asm_disk NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ asm_diskgroups string asm_diskstring string SQL> show parameter large_pool NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ large_pool_size big integer 12M

1、db_unique_name:ASM实例的名字
2、asm_power_limite:默认为1,表示ASM磁盘组在进行rebalance 时的速度。
取值从1 到 11,1 表示最小,对前台的影响最小,11 表示最大,对前台用
户的影响也越大

3、asm_disk_string:表示在创建磁盘组时,在指定的路径
下搜索磁盘。如果要创建磁盘组,必须设置该参数,如果设置为/dev/raw/raw,
那么表示磁盘组里面的磁盘都位于/dev/raw 下面,以raw 开头
4、asm_diskgroup:表示启动实例时,自动mount 那些磁盘组,可以写多个
磁盘组名。中间以逗号分开,不要在磁盘组名两边加引号diskgroupa,diskgroupb

5、large_pool_size,必须定义,至少为1MB 创建完成ASM以后,我们可以对ASM实
例进行启动和关闭。


ASM实例的启动分为以下两个阶段

1、nomount:该阶段读取spfile,根据其中的参数定义启动ASM实例
2、mount:将初始化参数asm_diskgroup 所定义的磁盘组mount 起来
C:\Documents and Settings\li>sqlplus / as sysdba
SQL> startup ASM
实例已启动
ORA-15110: ??????

这个错误只是说明我们没有定义ASM实例启动时默认要mount 起来的磁盘组而已,可以忽略。


SQL> startup nomount

ASM 实例已启动

 

 


实例启动起来以后,可以手工的mount 磁盘组

关闭ASM实例,也可以有四个参数:normal、transactional、immediate、abort

如果
没有以abort 选项关闭ASM实例,且这个时侯数据库实例正在使用ASM实例,则无法关闭
ASM实例;  如果以abort 关闭ASM 实例,首先会使用abort 选项关闭连接在ASM 上的数
据库实例,然后关闭ASM实例

对ASM发出startup force 命令,这与数据库实例一样,
先以abort 选项关闭ASM实例,然后再startup,从而启动ASM实例

对于单实例的ASM来说,
如果ASM实例异常中断或发出shutdown abort、startup force 命令时,则当ASM实例启
动的以后,会读取磁盘组里的日志文件,进行实例的恢复,如果是多ASM实例,也就是
配置了ASM集群,如果其中一个实例崩溃,其他ASM实例会负责恢复该实例的数据。

 SQL> shutdown immediate
ORA-15100: ?????????? ASM 实例已关闭

以transactional 方式关闭数据库,当客户端的事务完成后(commit 或 rollback),
客户端就不能再次开始一个新的事务,但是可以进行查询。当所有客户端的事务
完成后,服务器就会强制断开所有连接,然后关闭数据库。 管理ASM磁盘组 ASM
磁盘组就是将多块磁盘组合在一起,在逻辑上作为一个整体,磁盘组里的每块物
理磁盘都有一个ASM的磁盘名称,该名称可以由ASM自动生成,也可以由我们指定。
 磁盘本身的名称在 ASM 磁盘组里叫做路径,例如一块磁盘的物理路径是 /dev/rdsk/c0b0t2d0s1,
我们可以给这个磁盘起一个名字disk1 ASM 磁盘组将每块磁盘都分割成多个大小1MB
的单元,叫做分配单元(allocation unit),对于磁盘组里的数据文件来说,ASM会
将数据文件分割成多个大小为1MB 的块(chunk),并将这些 chunk 均匀的分布在所
有的磁盘上,这叫做 coarse striping。对于联机重做日志文件和控制文件来说,因
为文件较小,因此分割成 128KB 大小的 chunk,这叫做 fine-grained striping。
一个AU 里面就存放多个128KB 的chunk。 控制文件可以多个放在一个au 中

 


Asm想办法将文件放在多个au 中 通过将文件分割成多个 chunk,平均分布在 ASM 磁
盘组里所有的磁盘上,并进行条带化,我们应该确保 ASM 磁盘组里面的磁盘尺寸应
该是一致的、转速应该是一致的。


ASM 磁盘组的个数不应该过多,两个就够用了,一个用来存放数据、一个用来存放
flash recovery area。 通过将文件分割成多个 chunk,平均分布在 ASM 磁盘组里
所有的磁盘上,并进行条带化

故障组(failure group FG) 在磁盘组这么一个逻辑组里面,再次划分成更小的逻
辑组,这个更小的逻辑组就叫做故障组。通过故障组将多块磁盘组织起来。故障组主
要是为了镜像。 ASM 实例不知道给定磁盘的硬件和软件相关性。因此,除非专门将

一个磁盘赋给故障组,否则磁盘组中的每个磁盘都赋给它自己的故障组 在ASM磁盘
组里面,镜像是在AU 级别上完成的,而不是文件级别上。

三种镜像级别
1、外部镜像(external redundancy)不在ASM磁盘组里面提供镜像功能,如果ASM本身
就建立在硬件冗余的基础上,或者容忍数据的丢失,可以配置成外部镜像。

2、普通镜像(normal redundancy)提供两重镜像功能,对于文件里面的每个AU,都会
存在该AU 的一份副本。

3、高镜像(high redundancy)提供三重镜像功能,对于文件里面的每个 AU,都会存
在该 AU 的两份副本 单独建一个磁盘做闪回,对镜像必须是偶数 ASM在进行镜像的时
候,有一条规则:永远不会将AU(主AU)与他的副本放在同一个故障组里面。假设我们
有一个数据文件,由6 个AU 组成。其所在的磁盘组上定义了两重镜像。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-706504/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13783160