Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名-阿里云开发者社区

开发者社区> 寒凝雪> 正文

Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名

简介:
+关注继续查看

当使用ASMLIB 来管理ASM 磁盘时,设备的路径信息是不会在gv$asm_disk视图path列中显示的,如果你使用的是ASMLIB Support Tools 2.1 或者更高(oracleasm-support-2.1*的rpm包)版本,可以通过root用户运行'oracleasm querydisk -p'来获得设备路径信息:

# ls -l /dev/oracleasm/disks

total 0

brw-rw---- 1 grid asmadmin 8,  5 May  2 12:00 DISK1

brw-rw---- 1 grid asmadmin 8,  6 May  2 12:00 DISK2

brw-rw---- 1 grid asmadmin 8,  7 May  2 12:00 DISK3

...

# oracleasm querydisk -p DISK1

Disk "DISK1" is a valid ASM disk

/dev/sda5: LABEL="DISK1" TYPE="oracleasm"

译者注:译者并不推荐使用asmlib来管理ASM的磁盘,asmlib的出现本质上是为了解决设备权限、设备拥有者信息的问题,还可以提供一个“永不变化”的设备名,但是linux原生的udev同样可以做到这一点,而且做的更好,ASM INSTANCE使用ASMLIB提供的asm disk,增加了额外的层面,每次Linux Kernel更新,都需要替换新的ASMLIB包,ASMLIB的存在,还可能引入更多的bug。特别是,如果是在RHEL/OEL 5或以上版本,udev已非常成熟,你已经有充分的理由利用udev而放弃ASMLIB。

另外,通过下面的shell脚本也可以查看

#!/bin/bash

for asmlibdisk in `ls /dev/oracleasm/disks/*`

do

echo "ASMLIB disk name: $asmlibdisk"

asmdisk=`kfed read $asmlibdisk | grep dskname | tr -s ' '| cut -f2 -d' '`

echo "ASM disk name: $asmdisk"

majorminor=`ls -l $asmlibdisk | tr -s ' ' | cut -f5,6 -d' '`

device=`ls -l /dev | tr -s ' ' | grep "$majorminor" | cut -f10 -d' '`

echo "Device path: /dev/$device"

done

上面脚本是要通过操作系统中ASM或GI的owner用户执行,当然kfed二进制文件必须是已经可以使用并在相关的PATH环境变量中。运行以上命令不必使用root特权用户。

如果一个ASMLIB 磁盘已经被删除掉,那/dev/oracleasm/disks下就看不到相关的磁盘,可以通过下面的脚本来检查设备是否和ASM有关系(曾经有关系)。

#!/bin/bash

for device in `ls /dev/sd*`

do

asmdisk=`kfed read $device|grep ORCL|tr -s ' '|cut -f2 -d' '|cut -c1-4`

if [ "$asmdisk" = "ORCL" ]

then

echo "Disk device $device may be an ASM disk"

fi

done

译者注:其实使用asmlib方式管理磁盘,跟使用udev管理磁盘并没有什么不同,asmlib方式管理的磁盘,也只是在磁盘头的kfdhdb.driver.provstr位置记录了它是asmlib管理的磁盘而已,格式为:ORCLDISK+[ASM disk name],如果不是asmlib管理的磁盘,kfdhdb.driver.provstr记录的信息为ORCLDISK。

上面的脚本将扫描/dev下sd关键字打头的设备,除了kfed要在PATH 路径中之外,脚本还需要使用用超级用户运行。当然,你也可以去扫描/dev/dm*, /dev/mapper下面的设备甚至/dev/下面所有的设备,但这可能并不高效。

最近有一个问题是关于怎么样不使用kfed来达到上面操作能实现的功能,下面给出的就是一种解决办法:

#!/bin/bash

for device in `ls /dev/sd*`

do

asmdisk=`od -c $device | head | grep 0000040 | tr -d ' ' | cut -c8-11`

if [ "$asmdisk" = "ORCL" ]

then

echo "Disk device $device may be an ASM disk"

fi

done


本文来自云栖社区合作伙伴“DBGEEK”

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
高级文件系统管理_学习笔记
时间:2017.12.04作者:李强参考:man,info,magedu讲义,万能的internet实验环境:CentOS 6.9与CentOS7.4声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
830 0
【RAC】 oracleasm 工具对应的日志记录
因为删除Clusterware之后,ocr还在磁盘中,使用dd命令格式化磁盘,但是oracle提供了oracleasm工具,所以看看oracleasm deletedisk的操作具体做了什么 -----------------------------------...
609 0
HaaS UI基础教学九:JSAPI应用包管理
Package JSAPI是HaaS UI提供的一个轻量级应用包管理接口,特别适用于管理小程序应用包的安装信息。
71 0
用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)
以前的IOServer 是用VB6开发,驱动的配置方式和一般的组态软件没有什么很大的区别,配置起来比较麻烦,对一般的生手来说,要费一番功夫才能配置完毕。
564 0
【原】oracle高级工具之tkporf
作者:david_zhang@sh 【转载时请以超链接形式标明文章】 链接:http://www.cnblogs.com/david-zhang-index/archive/2012/08/16/2642261.
846 0
创建SinaSAE云账号创建和发布基于SVN代码管理的PHP空工程
1、使用Sina微博账号登录,进入【新浪云控制台】 2、选择【云应用SAE】界面,选择【创建新应用】 3、点击【继续创建】,进入应用信息编辑界面     依次编辑“二级域名”“应用程序名”,再点【运行环境】中的【PHP空应用】,再点左下角的【创建应用】完成应用创建。
846 0
+关注
5854
文章
223
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载