为了账号安全,请及时绑定邮箱和手机立即绑定

创建ASM磁盘组

标签:
Oracle


ASM磁盘组是作为一个逻辑单元管理的一个ASM磁盘池。与其他任何LVM一样,ASM管理大量物理卷并将其作为一个或多个逻辑卷呈交给Oracle。物理卷可以是实际的磁盘或磁盘的分区,或者是隶属操作系统的卷管理器的卷。无论采用哪种方式,都不能使用任何文件系统格式化,必须是裸设备。

在Linux上,ASM能引用磁盘作为裸设备,或通过使用ASMLib软件。

直接使用裸设备的方法:

1. 在RHEL6以前的可以直接通过rawdevices的管理方法,系统安装后默认已存在/etc/init.d/rawdevices和/etc/sysconfig/rawdevices这两个文件。

# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 5.8 (Tikanga)

# rpm -qf /etc/init.d/rawdevices /etc/sysconfig/rawdevices

initscripts-8.45.42-1.el5

initscripts-8.45.42-1.el5

# cat /etc/init.d/rawdevices

#!/bin/bash

#

# rawdevices       This shell script assignes rawdevices to block devices

#

# chkconfig: 345 56 44

# description: This scripts assignes raw devices to block devices \

#              (such as hard drive partitions). This is for the use \

#              of applications such as Oracle. You can set up the \

#              raw device to block device mapping by editing \

#              the file /etc/sysconfig/rawdevices.

# config: /etc/sysconfig/rawdevices

[ -f /bin/raw ] || exit 0

[ -f /etc/sysconfig/rawdevices ] || exit 0

# Exit if the file just has the default comments.

LC_ALL=C /bin/egrep -q -v "^ *#" /etc/sysconfig/rawdevices 2>/dev/null || exit 0

. /etc/init.d/functions

function assign_raw()

{

   LC_ALL=C egrep -v '^ *#' /etc/sysconfig/rawdevices |

   while read RAW BLOCK; do

     if [ -n "$RAW" -a -n "$BLOCK" ]; then

         rawdirname=${RAW%/*}

         if [ "$rawdirname" = "/dev" -a -d /dev/raw ]; then

           echo $"  Please correct your /etc/sysconfig/rawdevices:"

           echo $"     rawdevices are now located in the directory /dev/raw/ "

           echo $"  If the command 'raw' still refers to /dev/raw as a file."

           echo $"   you'll have to upgrade your util-linux package"

           exit 0

         fi

         if [ "$rawdirname" = "/dev/raw" -a -f /dev/raw ]; then

           echo $"  Please correct your /etc/sysconfig/rawdevices:"

           echo $"     rawdevices are now located in the directory /dev/raw/ "

           echo $"  If the command 'raw' still refers to /dev/raw as a file."

           echo $"   you'll have to upgrade your util-linux package"

           exit 0

         fi

       echo "           $RAW  -->   $BLOCK";

       raw $RAW $BLOCK

     fi

   done

}

# See how we were called.

case "$1" in

  start)

        # Assign devices

        echo $"Assigning devices: "

        assign_raw

#添加以下两行(默认不存在),即默认情况下生成的裸设备为root所有,

#所以必须修改属主,否则oracle用户无法使用裸设备

        sleep 5

        chown -R oracle:oinstall /dev/raw/

        echo $"done"

        ;;

  stop)

        # No action to be taken here

        ;;

  status)

        ID=`id -u`

        if [ $ID -eq 0 ]; then

          raw -qa

        else

          echo $"You need to be root to use this command ! "

        fi

        ;;

  restart|reload)

        $0 start

        ;;

  *)

        echo $"Usage: $0 {start|stop|status|restart}"

        exit 1

esac

exit 0

# vi /etc/sysconfig/rawdevices                //映射将要绑定的裸设备

/dev/raw/raw10  /dev/sda10

/dev/raw/raw11  /dev/sda11

/dev/raw/raw12  /dev/sda12

/dev/raw/raw13  /dev/sda13

/dev/raw/raw14  /dev/sda14

# chkconfig rawdevices on

# service rawdevices start

Assigning devices:

           /dev/raw/raw10  -->   /dev/sda10

/dev/raw/raw10: bound to major 8, minor 10

           /dev/raw/raw11  -->   /dev/sda11

/dev/raw/raw11: bound to major 8, minor 11

           /dev/raw/raw12  -->   /dev/sda12

/dev/raw/raw12: bound to major 8, minor 12

           /dev/raw/raw13  -->   /dev/sda13

/dev/raw/raw13: bound to major 8, minor 13

           /dev/raw/raw14  -->   /dev/sda14

/dev/raw/raw14: bound to major 8, minor 14

done

# ls -l /dev/raw/

total 0

crw-rw----. 1 oracle oinstall 162, 10 May 27 08:37 raw10

crw-rw----. 1 oracle oinstall 162, 11 May 27 08:37 raw11

crw-rw----. 1 oracle oinstall 162, 12 May 27 08:37 raw12

crw-rw----. 1 oracle oinstall 162, 13 May 27 08:37 raw13

crw-rw----. 1 oracle oinstall 162, 14 May 27 08:37 raw14

crw-rw----. 1 oracle oinstall 162,  0 May 27 08:19 rawctl

# raw -qa

/dev/raw/raw10: bound to major 8, minor 10

/dev/raw/raw11: bound to major 8, minor 11

/dev/raw/raw12: bound to major 8, minor 12

/dev/raw/raw13: bound to major 8, minor 13

/dev/raw/raw14: bound to major 8, minor 14

2. 在RHEL6中,系统里面虽然已经不存在/etc/sysconfig/rawdevices和/etc/init.d/rawdevices文件了,但是依然支持rawdevices的方式,可以通过如下方法来管理raw文件。

手动创建/etc/sysconfig/rawdevices和/etc/init.d/rawdevices文件,然后依然以rawdevices的方式

通过udev来管理raw,同样也可以通过udev固定磁盘对应的设备名

以下介绍udev的方式:

# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         261     2096451    5  Extended

/dev/sdb5               1          25      200749+  83  Linux

/dev/sdb6              26          50      200781   83  Linux

/dev/sdb7              51          75      200781   83  Linux

/dev/sdb8              76         100      200781   83  Linux

/dev/sdb9             101         125      200781   83  Linux

# vi /etc/udev/rules.d/60-raw.rules

ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw /dev/raw/raw5 %N",OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw /dev/raw/raw6 %N",OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add",KERNEL=="sdb7",RUN+="/bin/raw /dev/raw/raw7 %N",OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add",KERNEL=="sdb8",RUN+="/bin/raw /dev/raw/raw8 %N",OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add",KERNEL=="sdb9",RUN+="/bin/raw /dev/raw/raw9 %N",OWNER="oracle", GROUP="oinstall", MODE="660"

# raw -qa

# start_udev

Starting udev: [  OK  ]

# raw -qa

/dev/raw/raw5:  bound to major 8, minor 21

/dev/raw/raw6:  bound to major 8, minor 22

/dev/raw/raw7:  bound to major 8, minor 23

/dev/raw/raw8:  bound to major 8, minor 24

/dev/raw/raw9:  bound to major 8, minor 25

# ls -l /dev/raw

total 0

crw-rw---- 1 oracle oinstall 162,  5 Jun  9 17:15 raw5

crw-rw---- 1 oracle oinstall 162,  6 Jun  9 17:15 raw6

crw-rw---- 1 oracle oinstall 162,  7 Jun  9 17:15 raw7

crw-rw---- 1 oracle oinstall 162,  8 Jun  9 17:15 raw8

crw-rw---- 1 oracle oinstall 162,  9 Jun  9 17:15 raw9

ASMLib:(非Linux系统只能使用裸设备的方法)

ASMLib是一组可选的位于ASM和硬件之间的一个内核驱动程序工具,也是作为一个应用程序库通过Oracle数据库软件访问ASM磁盘。

它是Oracle 10g和11g单实例数据库以及RAC的ASM特性支持库。ASM和数据库实例可以使用ASMLib作为可替代的磁盘访问接口。

ASMLib有以下三个组件:

内核驱动:oracleasm            Linux中支持oracle ASMLib的内核驱动程序(需根据内核版本下载)

支持工具:oracleasm-support    提供用于配置和启动ASM驱动程序的实用工具

应用程序库:oracleasmlib       提供了实际的ASM库

# uname -r

2.6.18-308.el5

# ls oracleasm*

oracleasm-2.6.18-308.el5-2.0.5-1.el5.x86_64.rpm

oracleasm-support-2.1.8-1.el5.x86_64.rpm

oracleasmlib-2.0.4-1.el5.x86_64.rpm

# rpm -ivh oracleasmlib*

warning: oracleasm-2.6.18-308.el5-2.0.5-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Preparing...                ########################################### [100%]

   1:oracleasm-support      ########################################### [100%]

   2:oracleasm-2.6.18-308.el########################################### [100%]

   3:oracleasmlib           ########################################### [100%]

# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver.  The following questions will determine whether the driver is

loaded on boot and what permissions it will have.  The current values

will be shown in brackets ('[]').  Hitting <ENTER> without typing an

answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [  OK  ]

Scanning the system for Oracle ASMLib disks: [  OK  ]

# /etc/init.d/oracleasm enable

Writing Oracle ASM library driver configuration: [  OK  ]

Loading module "oracleasm": [  OK  ]

Mounting ASMlib driver filesystem: [  OK  ]

Scanning system for ASM disks: [  OK  ]

# /etc/init.d/oracleasm createdisk VOL1 /dev/sda5

Marking disk "VOL2" as an ASM disk: [  OK  ]

# /etc/init.d/oracleasm createdisk VOL2 /dev/sda6

Marking disk "VOL2" as an ASM disk: [  OK  ]

# /etc/init.d/oracleasm createdisk VOL3 /dev/sda7

Marking disk "VOL3" as an ASM disk: [  OK  ]

# /etc/init.d/oracleasm createdisk VOL4 /dev/sda8

Marking disk "VOL4" as an ASM disk: [  OK  ]

# /etc/init.d/oracleasm createdisk VOL5 /dev/sda9

Marking disk "VOL5" as an ASM disk: [  OK  ]

# /etc/init.d/oracleasm scandisks

Scanning system for ASM disks:[  OK  ]

# /etc/init.d/oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

VOL5

# ll /dev/oracleasm/disks/

total 0

brw-rw---- 1 oracle oinstall 8, 5 Jun  3 09:53 VOL1

brw-rw---- 1 oracle oinstall 8, 6 Jun  3 10:00 VOL2

brw-rw---- 1 oracle oinstall 8, 7 Jun  3 10:00 VOL3

brw-rw---- 1 oracle oinstall 8, 8 Jun  3 10:00 VOL4

brw-rw---- 1 oracle oinstall 8, 9 Jun  3 10:00 VOL5

//到这里ASM的工作就完成了,这里的磁盘可以被Oracle所使用,使用oracleasm-discover来探测ASM硬盘:

# oracleasm-discover

Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so

[ASM Library - Generic Linux, version 2.0.4 (KABI_V2)]

Discovered disk: ORCL:VOL1 [4899762 blocks (2508678144 bytes), maxio 512]

Discovered disk: ORCL:VOL2 [4899762 blocks (2508678144 bytes), maxio 512]

Discovered disk: ORCL:VOL3 [4899762 blocks (2508678144 bytes), maxio 512]

Discovered disk: ORCL:VOL4 [4899762 blocks (2508678144 bytes), maxio 512]

Discovered disk: ORCL:VOL5 [7373772 blocks (3775371264 bytes), maxio 512]

©著作权归作者所有:来自51CTO博客作者Vnimos的原创作品,如需转载,请注明出处,否则将追究法律责任

asmudevasmlibOracle


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消