欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

创建ASM磁盘组

程序员文章站 2022-06-01 09:20:00
...

ASM磁盘组是作为一个逻辑单元管理的一个ASM磁盘池。与其他任何LVM一样,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库