ASM翻訳シリーズ第6弾:ASMLIBが管理するディスクを対応するデバイス名にマッピングする方法について

6515 ワード

ASM翻訳シリーズガイド:
  • ASM翻訳シリーズ第6弾:asmlibが管理するディスクを対応するデバイス名
  • にマッピングする方法についての高度な知識
  • ASM翻訳シリーズ第五弾:高級知識ASMメタデータ概要
  • ASM翻訳シリーズ第4弾:高度な知識kfedメタデータエディタ
  • ASM翻訳シリーズ第3弾:ASM diskの基礎知識
  • ASM翻訳シリーズ第2弾:ASM 12 Cバージョン新特性
  • ASM翻訳シリーズ第1弾:基礎知識ASM AU,Extents,MirroringとFailgroups
  • 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。
    

    上のスクリプトは、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

    原文:How to map an ASMLIB disk to a device name作者:Bane Radulovic訳者:趙恩東、沃趣科学技術データベース技術エンジニア、主に会社の製品の実施、テスト、メンテナンス及び最適化に参与する.審査学校:魏興華責任編:金の曙光