美文网首页
ASM管理1

ASM管理1

作者: 苏水的北 | 来源:发表于2021-06-19 23:29 被阅读0次

    ASM管理

    ASM:automatic storage management 自动存储管理
    Oracle 10g
    database软件,建库方式(dbca建库):
    1、file system 文件系统建库
    2、row 裸设备建库
    3、asm建库:已经安装了asm软件,asm集成在database软件中。
    dbca配置asm:
    1、必须启动CSS进程;
    2、创建“+ASM”实例;
    3、创建dg(disk group磁盘组),用来给数据库文件提供存储空间。
    如何访问+ASM实例:
    oracle用户:
    export ORACLE_SID=+ASM
    sqlplus / as sysdba
    如何查看当前数据库的ASM实例名:cat /etc/oratab
    Oracle 11g
    database软件,建库方式(dbca建库):
    1、file system 文件系统建库
    2、asm建库:11g中asm软件被集成在grid软件中,所以要先安装grid软件。
    注意:在安装grid软件的时候,选择“配置grid软件给独立服务器”(实际的意思就是:仅使用grid软件中的asm功能)。最后的结果就是:安装grid软件的过程中,需要配置ASM。


    image.png
    dbca配置asm:

    1、创建“+ASM” 使用的dg(griddg)


    image.png

    2、创建“+ASM”实例;
    3、grid软件安装过程中的root.sh一定要执行(76%的位置执行脚本,才会有后续的ASM实际配置操作)
    asmca--->创建“+ASM”实例、asm磁盘组(griddg)
    netca--->创建监听
    注意:安装grid软件过程中,会自动运行CSS等ASM的守护进程,在安装/配置过程中进程没有体现。可以通过查看集群资源(crs_stat -t)了解守护进程。

    asmca命令:

    grid用户:完成grid软件安装,asmca创建dg。
    oracle用户:dbca建库,使用datadg存放数据。
    1、创建dg(datadg)用来存放数据。


    image.png

    ASM自动存储管理:

    最终提供dg,database软件可以在dg中存放数据。
    database软件可以将数据库数据以不同的方式进行管理:fs(便于管理但性能差)、raw(不便管理但性能好)、asm(两者的结合体)。

    思考:对于dba的管理是否方便,是如何定义的?
    1、环境准备的不同:

    1.1、fs建库:oracle将数据托管给文件系统,数据最终以文件的形式存在。
    对于DBA,只需要准备足够大的设备,创建文件系统,在进行挂载即可。
    优点:多个文件可以保存在一个设备中,无需对设备进行过度管理。
    如:sdb硬盘(1T空间),然后挂载/oradata.
    注意:存储工程师只需要划分足够大的lun,映射给服务器,我们拿到硬盘只需要格式化挂载即可。
    1.2、raw建库:oracle直接管理设备,将数据写入裸设备。
    准备裸设备:
    1、Linux系统中必须进行设备映射,将块设备映射成字符设备文件使用。
    2、设备数量:裸设备一个设备只能存放一段数据。
    oracle建库生成N段数据(10g --->11段数据、11g --->10段数据),N段数据最终对应N个字符设备。
    1.1、N个设备的映射(让第一步(1、Linux系统中必须进行设备映射,将块设备映射成字符设备文件使用。)操作更加繁琐);
    1.2、N个设备(设备:硬盘、分区、lv等,以硬盘居多)的来源;
    思考硬盘来源?
    硬盘来源于存储中的lun(如:10个硬盘对应10个LUN)。
    1、本地磁盘:插在服务器上的硬盘;
    2、存储磁盘:插在存储上的硬盘。
    存储三大特点:扩展容量、提高性能、提高安全性。
    存储:选择磁盘创建disk array(磁盘阵列),然后划分lun(logical unit 逻辑单元)。
    Oracle数据库服务器中用于存放数据库数据的硬盘往往是存储中的lun。就是部分disk array,能够提供RAID特性。
    注意:设备准备的复杂性,主要是体现在存储中lun的划分,以及存储中lun映射到服务器,这些都是存储工程师的工作。
    注意:存储工程师需要准备N个lun,分别映射到服务器。在服务器中我们还需要将这些块设备映射成字符设备,然后才能使用。

    2、管理期间的不同:

    fs建库:可以直接从文件系统中查看文件名,最后修改时间,文件大小等信息。
    注意:硬盘设备被文件系统管理,Oracle仅负责将数据交给文件系统处理,文件系统实现最终的存储。本身文件系统存在缓存机制,会导致IO性能下降。
    raw建库:我们只是将数据保存在设备中, 设备中数据的信息查看繁琐,不能从文件的层面获取部分信息,只能在数据库中进行查找。
    注意:Oracle直接对(硬盘、裸设备、raw字符设备文件)进行IO操作,性能好。
    总结:Oracle为了结合fs和raw的优点,研发出了asm工具。

    asm管理磁盘:性能好、管理方便

    ASM自动存储管理机制最早诞生场景:


    image.png
    image.png
    image.png
    image.png

    管理ASM实例:

    1、创建asm实例的方法就是asmca:
    如果不存在“+ASM”实例,asmca用于创建asm实例。
    如果检测到已经存在asm实例并运行,则asmca用于创建dg。
    2、11g安装grid软件,务必选择standalone server(独立服务器配置asm),安装软件过程中自动创建“+ASM”实例,后续可以使用ps -ef查看ASM进程,以及使用asmdb创建dg
    3、11g安装grid软件,选择仅安装软件(不建议使用),也就不会去配置集群/不配置asm。这样做就会的结果就是:grid软件安装成功,但是没有“+ASM”实例。
    需要创建“+ASM”实例:
    1、直接执行asmca--->出现创建“+ASM”实例的界面(会发生报错)。
    报错信息--->grid软件进程没有运行,不能创建“+ASM”实例。(此处的grid软件进程未运行实际上是指asm实例的守护进程未运行)
    asm实例的守护进程:ohas(oracle高可用服务)、cssd(集群同步服务守护进程)

    正确创建“+ASM”实例的方法如下:
    1、运行ASM的守护进程ohas:crsctl start has;
    2、asmca创建“+ASM”实例;
    3、asmca创建dg;

    ASM对于管理员的好处:

    image.png

    1、ASM IO性能优化:
    1.1、asm使用字符设备文件,直接对硬盘IO操作,没有文件系统缓存,性能好;
    1.2、asm中dg中的disk自动条带化(类似RAID0)。
    2、ASM中文件名管理、逻辑卷管理、文件系统管理、集群文件系统管理、裸设备管理统统省略。
    对文件的操作异常方便,因为OMF(oracle managed file)的使用。
    ASM中的文件被ASM自动管理。
    例1:给user表空间添加一个数据文件,将数据保存在asm中时,仅需要指定dg名即可,asm会自动给文件命名。
    注意:但凡在asm中指定dg名,必须写“+”加号。
    如果不适用“+”号,则按照相对路径处理,相对于$ORACLE_HOME/dbs。
    这样做确实可以创建成功:
    1、fs存放数据文件性能差;
    2、会占用系统空间,数据库的数据和操作系统放在一起了。

    SQL> alter tablespace users add datafile '+datadg' size 10M;
    

    例2:给user表空间添加一个数据文件,将数据保存在文件系统中时,需要准确的指定路径和文件名。

    SQL> alter tablespace users add datafile '/oradata/asmdb/user03.dbf' size 10M;
    

    总结:使用asm管理的dg存放数据时,实际上比文件系统还要便捷。

    ASM体系结构

    image.png

    1、数据库系统:实例+数据库文件
    例如:asmdb数据库:asmdb实例+ “+datadg”中保存的数据库文件
    asmdb实例:

    [oracle@oracle ~]$ . oraenv
    ORACLE_SID = [+ASM] ? asmdb
    The Oracle base has been changed from /u01/app/grid to /u01/app/oracle
    [oracle@oracle ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.3.0 Production on Sat Jun 19 21:43:35 2021
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Automatic Storage Management, OLAP, Data Mining
    and Real Application Testing options
    
    SQL> select status from v$instance;
    
    STATUS
    ------------
    OPEN    /正常数据库实例开启的状态。
    SQL> show parameter instance_type;   /查看实例类型
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    instance_type                        string      RDBMS  /数据库实例的实例类型是RDBMS(关系型数据库管理系统),只有这种类型数据库实例才能到open阶段。
    SQL> show parameter spfile;   /查看实例参数文件
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/app/oracle/product/11.2/d
                                                     b_1/dbs/spfileasmdb.ora
    

    2、ASM实例:只有实例本身,没有对应的数据库文件。asm实例只具有参数文件,永远只工作在nomount阶段。
    总结:“+ASM”实例提供的仅是查询功能,我们不涉及对“+ASM”实例中的对象进行增删改的操作。
    1、“+ASM”实例提供了大量视图,供我们查询;
    2、“+ASM”实例负责dg的维护,给数据库实例提供存储空间。

    [grid@oracle ~]$ . oraenv
    ORACLE_SID = [grid] ? +ASM
    The Oracle base remains unchanged with value /u01/app/grid
    [grid@oracle ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.3.0 Production on Sat Jun 19 21:43:26 2021
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Automatic Storage Management option
    
    SQL> select status from v$instance;
    
    STATUS
    ------------
    STARTED    /数据库状态started,但是所处的阶段叫nomount阶段。
    SQL> show parameter instance_type;   /查看实例类型
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    instance_type                        string      asm
    SQL> show parameter spfile;   /查看实例参数文件
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      +GRIDDG/asm/asmparameterfile/r
                                                     egistry.253.1069241919
    备注:可以看出之前创建的+GRIDDG,保存的是“+ASM”实例的相关数据。
    

    ASM实例:

    ASM 实例是 ASM 的进程和内存组件的组合:


    image.png

    asm负责对disk和disk group进行管理。
    1、重新平衡(rebalance):dg中的disk是自动条带的。
    例如:
    datadg中只有一个disk(raw1为1G)
    此时向datadg中添加新的disk(raw2为2G),这个时候就会自动rebalance(重新平衡),重新平衡的结果就是:raw1(1.5G)和raw2(1.5G),也就是会把数据平均分配在每块盘上,这个过程我们不用管。
    注意:rebalance操作会占用大量的物理IO,不建议在业务高峰期执行添加disk操作。
    总结:当向dg中添加disk时,会自动rebalance,将数据平均分布在disk上,所有的disk进行条带。
    2、在dg中添加/删除disk都会触发rebalance(重新平衡),这个过程由RBAL和ARBn负责。
    3、ASM 组件:ASM 实例
    一些进程如下所示:
    • ARCn:归档进程
    • CKPT:检查点进程
    • DBWn:数据库写进程
    • DIAG:诊断进程
    • Jnnn:作业队列进程
    • LGWR:日志写进程
    • PMON:进程监视器进程
    • PSP0:进程衍生进程
    • QMNn:队列监视器进程
    • RECO:恢复器进程
    • SMON:系统监视器进程
    • VKTM:虚拟计时器进程
    • MMAN:内存管理器进程

    [grid@oracle ~]$ ps -ef | grep +ASM
    grid       2323      1  0 19:36 ?        00:00:01 asm_pmon_+ASM
    grid       2325      1  0 19:36 ?        00:00:01 asm_psp0_+ASM
    grid       2327      1  0 19:36 ?        00:02:12 asm_vktm_+ASM
    grid       2331      1  0 19:36 ?        00:00:00 asm_gen0_+ASM
    grid       2333      1  0 19:36 ?        00:00:00 asm_diag_+ASM
    grid       2337      1  0 19:36 ?        00:00:03 asm_dia0_+ASM
    grid       2339      1  0 19:36 ?        00:00:00 asm_mman_+ASM
    grid       2341      1  0 19:36 ?        00:00:00 asm_dbw0_+ASM
    grid       2343      1  0 19:36 ?        00:00:00 asm_lgwr_+ASM
    grid       2345      1  0 19:36 ?        00:00:00 asm_ckpt_+ASM
    grid       2347      1  0 19:36 ?        00:00:00 asm_smon_+ASM
    grid       2349      1  0 19:36 ?        00:00:00 asm_rbal_+ASM
    grid       2351      1  0 19:36 ?        00:00:02 asm_gmon_+ASM
    grid       2353      1  0 19:36 ?        00:00:00 asm_mmon_+ASM
    grid       2355      1  0 19:36 ?        00:00:01 asm_mmnl_+ASM
    

    注意:“+ASM”实例是没有数据库文件(数据文件+日志文件),不涉及数据落盘,但是存在dbwn等进程。这些进程的存在什么意义也没有,什么活也不干。
    4、ASM实例的主要进程:


    image.png

    RBAL进程:是重新平衡操作的协调进程(指挥)。
    ARBn进程:是重新平衡操作的工作进程(干活)。
    GMON进程:ASM实例的主进程。负责管理磁盘级活动,例如删除或脱机以及提高 ASM 磁盘组兼容性。
    其他进程:无关紧要,不用记。
    5、ASM 实例初始化参数:


    image.png
    SQL> create pfile='/tmp/init+ASM.ora' from spfile;
    
    File created.
    [grid@oracle ~]$ cat /tmp/init+ASM.ora
    +ASM.asm_diskgroups='DATADG'#Manual Mount
    *.asm_power_limit=1   /用于控制rebalance的速度,控制ARBn的并发数。
    *.diagnostic_dest='/u01/app/grid'    /diag用于存放+ASM实例的日志。
    *.instance_type='asm'  /实例类型
    *.large_pool_size=12M  /定义大型池大小。“+ASM”实例对资源占用很少。
    *.remote_login_passwordfile='EXCLUSIVE'
    

    ASM_DISKSTRING = '/dev/sda1','/dev/sdb*' /disk discover path指定发现disk的路径。


    image.png

    ASM_DISKGROUPS = DATA2, FRA /指定asm实例启动时自动挂载的dg。


    image.png

    ASM 实例由参数文件控制,其方式与常规数据库实例相同。通常设置的参数包括:
    • INSTANCE_TYPE 应该设置为 ASM,表示 ASM 实例。这是唯一一个必须定义的
    参数。对于数据库实例,该参数值设置为 RDBMS。
    • ASM_POWER_LIMIT 控制重新平衡操作的速度。值的范围从 1 到 11,11 表示最快。
    如果省略,该值默认为 1。
    • ASM_DISKSTRING 是一个与操作系统相关的值,ASM 使用它来限制搜索时考虑的
    磁盘集。默认值为空字符串,这在大都数情况下就足够了。如上所示的约束性更强
    的值可以减少 ASM 执行搜索所需的时间,从而提高磁盘组装载次数。
    • ASM_DISKGROUPS 是 ASM 实例启动时或使用 ALTER DISKGROUP ALL MOUNT
    命令时,ASM 实例要装载的磁盘组的名称列表。Oracle Restart 会装载列为相关磁盘
    组的磁盘组,即使这些磁盘组未与 ASM_DISKGROUPS 参数列在一起也是如此。该
    参数没有默认值。
    • ASM_PREFERRED_READ_FAILURE_GROUPS 指定包含首选读取磁盘的故障组。
    对于包含数据的镜像副本且有一个副本非常接近于服务器的扩展或延伸集群数据库,
    该参数非常有用。
    6、数据库实例与 ASM 之间的交互:
    “+ASM”实例和数据库实例是存在关联关系的。
    数据库实例:进行数据管理(业务角度)。需要存放数据,存放到dg中。
    +ASM实例:维护disk和disk group--->创建了dg--->可以给数据库实例提供存储。
    存储映射的lun,磁盘柜中的磁盘都是asm中的disk用于保存数据,这些概念都是真实存在的。
    dg是什么?
    答:vg(卷组)、dg(磁盘组)、disk array(磁盘阵列),这些全都是通过软件实现的逻辑概念,就是为了整合物理空间。


    image.png
    image.png
    image.png
    image.png
    image.png

    数据库实例与 ASM 之间的交互

    image.png

    ASM 系统权限

    image.png

    磁盘组概览

    image.png

    理论上来说:
    一个dg可以让多个数据库实例使用。一个数据库实例可以使用多个dg存放文件。
    虽然理论上可行,但是在生产环境,为了管理方便,都是一个dg分配给一套数据库实例使用。

    ASM磁盘:

    image.png

    分配单元

    image.png

    1、检查一下当前资源情况:
    通过查看发现之前只用了sdb(分区了sdb1和sdb2)。

    [root@oracle ~]# cd /dev/raw/
    [root@oracle raw]# ls
    raw1  raw2  rawctl
    
    [root@oracle raw]# fdisk -l
    Disk /dev/sda: 42.9 GB, 42949672960 bytes
    255 heads, 63 sectors/track, 5221 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000b1a5d
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          64      512000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              64        5222    41430016   8e  Linux LVM
    
    Disk /dev/sdb: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xb0326c21
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         132     1060258+  83  Linux
    /dev/sdb2             133         652     4176900   83  Linux
    
    Disk /dev/sdc: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    
    Disk /dev/sdd: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    [root@oracle raw]# vim /etc/udev/rules.d/60-raw.rules
    # Enter raw device bindings here.
    #
    # An example would be:
    #   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
    # to bind /dev/raw/raw1 to /dev/sda, or
    #   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
    # to bind /dev/raw/raw2 to the device with major 8, minor 1.
    ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
    KERNEL=="raw*",OWNER="grid",GROUP="asmadmin",MODE="0660"
    

    2、现在对sdc进行分区,把sdc分为4个区:

    [root@oracle raw]# fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x0b5bb516.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-652, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (133-652, default 133):
    Using default value 133
    Last cylinder, +cylinders or +size{K,M,G} (133-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 3
    First cylinder (265-652, default 265):
    Using default value 265
    Last cylinder, +cylinders or +size{K,M,G} (265-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Selected partition 4
    First cylinder (397-652, default 397):
    Using default value 397
    Last cylinder, +cylinders or +size{K,M,G} (397-652, default 652):
    Using default value 652
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    3、现在对sdd进行分区,把sdd分为4个区:

    [root@oracle raw]# fdisk /dev/sdd
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x944926c5.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-652, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (133-652, default 133):
    Using default value 133
    Last cylinder, +cylinders or +size{K,M,G} (133-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 3
    First cylinder (265-652, default 265):
    Using default value 265
    Last cylinder, +cylinders or +size{K,M,G} (265-652, default 652): +1G
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Selected partition 4
    First cylinder (397-652, default 397):
    Using default value 397
    Last cylinder, +cylinders or +size{K,M,G} (397-652, default 652):
    Using default value 652
    
    Command (m for help):
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    4、对于分区情况进行查看:

    [root@oracle raw]# fdisk -l
    
    Disk /dev/sda: 42.9 GB, 42949672960 bytes
    255 heads, 63 sectors/track, 5221 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000b1a5d
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          64      512000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              64        5222    41430016   8e  Linux LVM
    
    Disk /dev/sdb: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xb0326c21
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         132     1060258+  83  Linux
    /dev/sdb2             133         652     4176900   83  Linux
    
    Disk /dev/sdc: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0b5bb516
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1               1         132     1060258+  83  Linux
    /dev/sdc2             133         264     1060290   83  Linux
    /dev/sdc3             265         396     1060290   83  Linux
    /dev/sdc4             397         652     2056320   83  Linux
    
    Disk /dev/sdd: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x944926c5
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdd1               1         132     1060258+  83  Linux
    /dev/sdd2             133         264     1060290   83  Linux
    /dev/sdd3             265         396     1060290   83  Linux
    /dev/sdd4             397         652     2056320   83  Linux
    

    5、分完区后添加raw设备:

    [root@oracle raw]# vim /etc/udev/rules.d/60-raw.rules
    # Enter raw device bindings here.
    #
    # An example would be:
    #   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
    # to bind /dev/raw/raw1 to /dev/sda, or
    #   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
    # to bind /dev/raw/raw2 to the device with major 8, minor 1.
    ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
    ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw3 %N"
    ACTION=="add", KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw4 %N"
    ACTION=="add", KERNEL=="sdc3", RUN+="/bin/raw /dev/raw/raw5 %N"
    ACTION=="add", KERNEL=="sdc4", RUN+="/bin/raw /dev/raw/raw6 %N"
    ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw7 %N"
    ACTION=="add", KERNEL=="sdd2", RUN+="/bin/raw /dev/raw/raw8 %N"
    ACTION=="add", KERNEL=="sdd3", RUN+="/bin/raw /dev/raw/raw9 %N"
    ACTION=="add", KERNEL=="sdd4", RUN+="/bin/raw /dev/raw/raw10 %N"
    KERNEL=="raw*",OWNER="grid",GROUP="asmadmin",MODE="0660"
    

    6、raw裸设备添加完后,重启:

    [root@oracle raw]# start_udev
    Starting udev:                                             [  OK  ]
    

    7、在grid用户下用asmca进行添加:
    7.1、执行asmca后,我们可以在图形界面看到我们刚才添加所有设备:


    image.png
    image.png

    AU:分配单元。
    asm将disk划分成基本的AU,不同大小的AU提供的特性不同。
    越小的AU能够避免空间浪费,易于数据库实例加载。
    越大的AU能够在硬盘上实现更多的顺序IO,提升后期业务性能。
    思考:数据块大小8k,asm中的AU单元是1M,他们之间的关系?
    答:当oracle数据库大小是8k的时候,在oracle中128个连续块构成一个区(区:每次申请空间的基本单位是区)。asm中的AU默认是1M,其实就是一个区的大小。
    粗粒度:在粗粒度条带中,AU决定了条带的size。AU就意味着数据量大于AU才会进行条带。
    粗粒度虽然会有空间浪费但是性能好。
    细粒度虽然节省了空间,但是性能差。
    OLTP业务:在线事务处理系统。
    特点:高并发、小事务(数据量小)。更适合使用较小的AU,一般默认1M即可。
    OLAP业务:在线分析处理系统。
    特点:低并发、大事务(单次事务数据量大)。更适合使用较大的AU。

    ASM故障组:

    image.png

    一体机中没有存储管理机制,使用ASM保证数据安全,提出数据的冗余机制,此处的冗余其实就叫asm故障组。
    冗余策略三种:
    1、high:一份数据+两份副本。
    2、normal:一份数据+一份副本。
    3、external:一份数据。
    注意:asm管理的是一体机,才能使用冗余策略。即使使用一体机,才会使用ASM的冗余策略,也仅使用normal冗余策略。(normal中包含的硬盘越多越好,条带性能就越好,安全性越高)
    如果asm管理的disk是lun,则一律使用外部冗余,避免磁盘空间浪费。

    asm冗余策略同raid1的冗余策略不同:
    ASM的故障组:组间冗余,组内条带(相当于raid 0+1)


    image.png

    故障示例:

    image.png

    ASM磁盘兼容性:

    image.png
    image.png

    为什么有ASM兼容性概念?
    asm功能来自于grid软件,数据库功能来自于databases软件。这两个是独立的软件,各自都有各自的版本号。
    正常情况下,同版本的database和grid搭配使用(如11.2.03 database+11.2.03 grid搭配)。
    grid能够提供dg,dg存在兼容性。当我们使用11.2.0.1 grid软件创建dg,并把兼容性设置为“11.2.0.0.0”的时候,只要是11.2版本的database软件都能用这个dg。
    总结:grid创建的dg能够让不同版本的database使用,提高兼容性。一般都会将dg的兼容性设置为此版本的最低版本(如11.2.0.0.0--->11.2中的最低版本号)。

    创建磁盘组:

    方法1:asmca创建磁盘组;


    image.png

    方法2:sql语句进行创建:

    CREATE DISKGROUP dg_name(磁盘组名称)  external(冗余策略) REDUNDANCY 
    DISK  '/dev/raw/raw3','/dev/raw/raw4'  
    ATTRIBUTE 'compatible.asm'='11.2'(兼容性级别);
    

    AU和条带化粒度:

    image.png
    image.png

    AU(分配单元):asm管理disk期间,disk被加入到dg中时,会被切分成很多的AU,AU就是asm的基本单位。AU默认是1MB(AU就相当于区的概念)
    条带:asm中的disk是自动条带化的。
    例如:磁盘组datadg(external外部冗余属性):包含了raw1和raw2.
    在存储设备中,条带是指存储设备对来自服务器的数据进行切分,切分成数据切片,将数据切片均匀分散在不同的磁盘中。
    asm中的条带化虽然是自动的,但是这种自动的条带又取决于条带的机制。
    asm中条带机制有两种:
    1、粗粒度条带:在asm的组粒度条带机制中,AU就意味着条带大小,只有数据量大于AU的时候,才会真正的进行条带存放数据。
    例如:当前AU=1M,当数据库交给asm的数据量<1M时,存放数据时是不进行条带的。
    1.1、0.5M数据--->保存在raw1中(一个AU),不用进行条带;
    1.2、0.75M数据--->保存在raw2中(一个AU),不用进行条带;
    1.3、3.5M数据--->保存在raw1(两个AU)也会保存在raw2(两个AU)。这种情况就是进行了条带。
    2、细粒度条带:在asm的细粒度条带机制中,对数据进行进一步拆分,拆成128k(单位)的切片,分布到不同的AU中。
    注意:在细粒度条带中,AU不再决定条带大小,因为他一直都是按128k进行条带。


    image.png
    image.png
    image.png

    总结:粗细粒度比较:
    细粒度优点:细粒度条带能够充分的,更精细的使用存储空间。相较于粗粒度能够避免空间浪费。
    细粒度缺点:在后期使用过程中,细粒度条带的性能相较于粗粒度来讲较差。
    在当前的OLTP业务中,更倾向于使用粗粒度条带的小AU。
    在当前OLAP业务中,建议使用粗粒度的大AU。

    相关文章

      网友评论

          本文标题:ASM管理1

          本文链接:https://www.haomeiwen.com/subject/mpplyltx.html