ASM装置をAIXシステムの物理装置にマップするためにこのシェルスクリプトを作成しました。しかし、私が得た出力は期待したものとは異なるため、デバッグできません。あなたの助けを求めてください。詳細は次のとおりです。
ASMデバイス:
test160 orainfra +ASM1 >> ls -l /dev | grep orainfra
crw-rw-r-- 1 orainfra dba 34, 35 Jan 23 01:16 ebs_arch_31
crw-rw-r-- 1 orainfra dba 34, 36 Jan 23 01:16 ebs_arch_32
crw-rw-r-- 1 orainfra dba 34, 37 Jan 23 01:15 ebs_arch_33
crw-rw-r-- 1 orainfra dba 34, 38 Jan 23 01:16 ebs_arch_34
crw-rw-r-- 1 orainfra dba 34, 39 Jan 22 20:01 ebs_data1_31
crw-rw-r-- 1 orainfra dba 34, 40 Jan 23 19:39 ebs_data1_32
crw-rw-r-- 1 orainfra dba 34, 41 Jan 10 19:39 ebs_data1_33
crw-rw-r-- 1 orainfra dba 34, 42 Dec 25 02:22 ebs_data1_34
crw-rw-r-- 1 orainfra dba 34, 43 Jan 24 07:34 ebs_data1_35
crw-rw-r-- 1 orainfra dba 34, 44 Jan 25 07:41 ebs_data1_36
crw-rw-r-- 1 orainfra dba 34, 45 Jan 25 19:44 ebs_data1_37
crw-rw-r-- 1 orainfra dba 34, 46 Jan 1 19:49 ebs_data1_38
crw-rw-r-- 1 orainfra dba 34, 47 Jan 22 09:23 ebs_data1_39
crw-rw-r-- 1 orainfra dba 34, 48 Jan 15 07:01 ebs_data1_40
crw-rw-r-- 1 orainfra dba 34, 49 Jan 23 07:54 ebs_data1_41
crw-rw-r-- 1 orainfra dba 34, 50 Jan 22 09:13 ebs_data1_42
crw-rw-r-- 1 orainfra dba 34, 51 Jan 22 09:13 ebs_data1_43
crw-rw-r-- 1 orainfra dba 34, 10 Jun 17 2019 ebs_gg_data31
crw-rw-r-- 1 orainfra dba 34, 11 Jun 17 2019 ebs_gg_data32
crw-rw-r-- 1 orainfra dba 34, 12 Oct 21 16:20 ebs_gg_data33
crw-rw-r-- 1 orainfra dba 34, 13 Oct 21 16:19 ebs_gg_data34
crw-rw-r-- 1 orainfra dba 34, 5 Jun 17 2019 ebs_ocr11
crw-rw-r-- 1 orainfra dba 34, 6 Jun 17 2019 ebs_ocr12
crw-rw-r-- 1 orainfra dba 34, 52 Jul 23 2019 ebs_redoa_35
crw-rw-r-- 1 orainfra dba 34, 53 Jan 25 22:28 ebs_redoa_36
crw-rw-r-- 1 orainfra dba 34, 54 Jan 25 22:28 ebs_redoa_37
crw-rw-r-- 1 orainfra dba 34, 55 Jan 23 01:15 ebs_redoa_38
crw-rw-r-- 1 orainfra dba 34, 56 Jul 12 2019 ebs_temp_35
crw-rw-r-- 1 orainfra dba 34, 57 Jan 22 09:13 ebs_temp_36
crw-rw-r-- 1 orainfra dba 34, 58 Oct 21 18:23 ebs_temp_37
crw-rw-r-- 1 orainfra dba 34, 59 Jan 22 09:13 ebs_temp_38
crw-rw-r-- 1 orainfra dba 34, 7 Jan 26 05:25 ebs_voting11
crw-rw-r-- 1 orainfra dba 34, 8 Jan 26 02:02 ebs_voting12
crw-rw-r-- 1 orainfra dba 34, 9 Jun 17 2019 ebs_voting13
test160 orainfra +ASM1 >>
物理デバイス:
test160 orainfra +ASM1 >> ls -l /dev | grep rhdiskpower
crw-rw---- 1 root system 34, 0 Jun 17 2019 rhdiskpower0
crw-rw---- 1 root system 34, 1 Jun 17 2019 rhdiskpower1
crw-rw---- 1 root system 34, 10 Jun 17 2019 rhdiskpower10
crw-rw---- 1 root system 34, 11 Jun 17 2019 rhdiskpower11
crw-rw---- 1 root system 34, 12 Jun 17 2019 rhdiskpower12
crw-rw---- 1 root system 34, 13 Jun 17 2019 rhdiskpower13
crw-rw---- 1 root system 34, 2 Jun 17 2019 rhdiskpower2
crw-rw---- 1 root system 34, 3 Jun 17 2019 rhdiskpower3
crw-rw---- 1 root system 34, 34 Jul 10 2019 rhdiskpower34
crw-rw---- 1 root system 34, 35 Jul 10 2019 rhdiskpower35
crw-rw---- 1 root system 34, 36 Jul 10 2019 rhdiskpower36
crw-rw---- 1 root system 34, 37 Jul 10 2019 rhdiskpower37
crw-rw---- 1 root system 34, 38 Jul 10 2019 rhdiskpower38
crw-rw---- 1 root system 34, 39 Jul 10 2019 rhdiskpower39
crw-rw---- 1 root system 34, 4 Jun 17 2019 rhdiskpower4
crw-rw---- 1 root system 34, 40 Jul 10 2019 rhdiskpower40
crw-rw---- 1 root system 34, 41 Jul 10 2019 rhdiskpower41
crw-rw---- 1 root system 34, 42 Jul 10 2019 rhdiskpower42
crw-rw---- 1 root system 34, 43 Jul 10 2019 rhdiskpower43
crw-rw---- 1 root system 34, 44 Jul 10 2019 rhdiskpower44
crw-rw---- 1 root system 34, 45 Jul 10 2019 rhdiskpower45
crw-rw---- 1 root system 34, 46 Jul 10 2019 rhdiskpower46
crw-rw---- 1 root system 34, 47 Jul 10 2019 rhdiskpower47
crw-rw---- 1 root system 34, 48 Jul 10 2019 rhdiskpower48
crw-rw---- 1 root system 34, 49 Jul 10 2019 rhdiskpower49
crw-rw---- 1 root system 34, 5 Jun 17 2019 rhdiskpower5
crw-rw---- 1 root system 34, 50 Jul 10 2019 rhdiskpower50
crw-rw---- 1 root system 34, 51 Jul 10 2019 rhdiskpower51
crw-rw---- 1 root system 34, 52 Jul 10 2019 rhdiskpower52
crw-rw---- 1 root system 34, 53 Jul 10 2019 rhdiskpower53
crw-rw---- 1 root system 34, 54 Jul 10 2019 rhdiskpower54
crw-rw---- 1 root system 34, 55 Jul 10 2019 rhdiskpower55
crw-rw---- 1 root system 34, 56 Jul 10 2019 rhdiskpower56
crw-rw---- 1 root system 34, 57 Jul 10 2019 rhdiskpower57
crw-rw---- 1 root system 34, 58 Jul 10 2019 rhdiskpower58
crw-rw---- 1 root system 34, 59 Jul 10 2019 rhdiskpower59
crw-rw---- 1 root system 34, 6 Jun 17 2019 rhdiskpower6
crw-rw---- 1 root system 34, 7 Jun 17 2019 rhdiskpower7
crw-rw---- 1 root system 34, 8 Jun 17 2019 rhdiskpower8
crw-rw---- 1 root system 34, 9 Jun 17 2019 rhdiskpower9
test160 orainfra +ASM1 >>
スクリプト:
ls -l /dev | grep orainfra > /home/orainfra/TEST/asm_disks_8.lst
input_file="/home/orainfra/TEST/asm_disks_8.lst"
while IFS= read -r line
do
major=`echo "$line" | awk '{ print $5 }'`
minor=`echo "$line" | awk '{ print $6 }'`
asm_disk=`echo "$line" | awk '{ print $10 }'`
physical_disk=`ls -l /dev | grep rhdiskpower | grep "$major *$minor" | awk '{ print $10 }'`
echo "The ASM disk: '$asm_disk' is mapped to PHYSICAL Disk: '$physical_disk' " >> asm_physical_disks_mapping_8.lst
done <"$input_file"
出力:
The ASM disk: 'ebs_arch_31' is mapped to PHYSICAL Disk: 'rhdiskpower35'
The ASM disk: 'ebs_arch_32' is mapped to PHYSICAL Disk: 'rhdiskpower36'
The ASM disk: 'ebs_arch_33' is mapped to PHYSICAL Disk: 'rhdiskpower37'
The ASM disk: 'ebs_arch_34' is mapped to PHYSICAL Disk: 'rhdiskpower38'
The ASM disk: 'ebs_data1_31' is mapped to PHYSICAL Disk: 'rhdiskpower39'
The ASM disk: 'ebs_data1_32' is mapped to PHYSICAL Disk: 'rhdiskpower40'
The ASM disk: 'ebs_data1_33' is mapped to PHYSICAL Disk: 'rhdiskpower41'
The ASM disk: 'ebs_data1_34' is mapped to PHYSICAL Disk: 'rhdiskpower42'
The ASM disk: 'ebs_data1_35' is mapped to PHYSICAL Disk: 'rhdiskpower43'
The ASM disk: 'ebs_data1_36' is mapped to PHYSICAL Disk: 'rhdiskpower44'
The ASM disk: 'ebs_data1_37' is mapped to PHYSICAL Disk: 'rhdiskpower45'
The ASM disk: 'ebs_data1_38' is mapped to PHYSICAL Disk: 'rhdiskpower46'
The ASM disk: 'ebs_data1_39' is mapped to PHYSICAL Disk: 'rhdiskpower47'
The ASM disk: 'ebs_data1_40' is mapped to PHYSICAL Disk: 'rhdiskpower48'
The ASM disk: 'ebs_data1_41' is mapped to PHYSICAL Disk: 'rhdiskpower49'
The ASM disk: 'ebs_data1_42' is mapped to PHYSICAL Disk: 'rhdiskpower50'
The ASM disk: 'ebs_data1_43' is mapped to PHYSICAL Disk: 'rhdiskpower51'
The ASM disk: 'ebs_gg_data31' is mapped to PHYSICAL Disk: 'rhdiskpower10'
The ASM disk: 'ebs_gg_data32' is mapped to PHYSICAL Disk: 'rhdiskpower11'
The ASM disk: 'ebs_gg_data33' is mapped to PHYSICAL Disk: 'rhdiskpower12'
The ASM disk: 'ebs_gg_data34' is mapped to PHYSICAL Disk: 'rhdiskpower13'
The ASM disk: 'ebs_ocr11' is mapped to PHYSICAL Disk: 'rhdiskpower5
rhdiskpower50
rhdiskpower51
rhdiskpower52
rhdiskpower53
rhdiskpower54
rhdiskpower55
rhdiskpower56
rhdiskpower57
rhdiskpower58
rhdiskpower59'
The ASM disk: 'ebs_ocr12' is mapped to PHYSICAL Disk: 'rhdiskpower6'
The ASM disk: 'ebs_redoa_35' is mapped to PHYSICAL Disk: 'rhdiskpower52'
The ASM disk: 'ebs_redoa_36' is mapped to PHYSICAL Disk: 'rhdiskpower53'
The ASM disk: 'ebs_redoa_37' is mapped to PHYSICAL Disk: 'rhdiskpower54'
The ASM disk: 'ebs_redoa_38' is mapped to PHYSICAL Disk: 'rhdiskpower55'
The ASM disk: 'ebs_temp_35' is mapped to PHYSICAL Disk: 'rhdiskpower56'
The ASM disk: 'ebs_temp_36' is mapped to PHYSICAL Disk: 'rhdiskpower57'
The ASM disk: 'ebs_temp_37' is mapped to PHYSICAL Disk: 'rhdiskpower58'
The ASM disk: 'ebs_temp_38' is mapped to PHYSICAL Disk: 'rhdiskpower59'
The ASM disk: 'ebs_voting11' is mapped to PHYSICAL Disk: 'rhdiskpower7'
The ASM disk: 'ebs_voting12' is mapped to PHYSICAL Disk: 'rhdiskpower8'
The ASM disk: 'ebs_voting13' is mapped to PHYSICAL Disk: 'rhdiskpower9'
次の出力がキャプチャされる理由がわかりません。
rhdiskpower50
rhdiskpower51
rhdiskpower52
rhdiskpower53
rhdiskpower54
rhdiskpower55
rhdiskpower56
rhdiskpower57
rhdiskpower58
rhdiskpower59
ありがとう、RA
答え1
スクリプトがebs_ocr11
変数に到達するmajor="34,"
と、minor="5". So the
リストから正しい行を取得するgrepコマンドはrhdiskpower
次のとおりです。
... | grep rhdiskpower | grep rhdiskpower | grep rhdiskpower grep "34,*5" |マウサー
$minor
正規表現では、変数の後にスペースが必要であることを指定しないため、式は同様34, 5
に34, 50
...34, 51
まで最後まで一致します34, 59
。したがって、grep
複数行が出力され、awk
10番目の要素を除くすべての要素は各行から削除されますが、別々の行のままです。
最終値は改行文字など$physical_disk
を含む文字列です。"rhdiskpower5\nrhdiskpower50\nrhdiskpower51\n..."
修理する
この行を修正することをお勧めします。
physical_disk=`ls -l /dev | grep rhdiskpower | grep "$major *$minor" | awk '{ print $10 }'`
これに関して:
physical_disk=`ls -l /dev | grep "$major *$minor .* rhdiskpower[0-9]*$" | awk '{ print $10 }'`
これはまた余分なgrep
。
AIXls
コマンドが出力でスペースの代わりにタブを使用している場合は、正規表現の一部のスペースを\t
同様のスペースに置き換える必要があります。
その他の提案
ASMディスク名は、ディスク自体から簡単に読み取れる必要があります。公開説明を見るとASMメタデータブロックヘッダそしてASMディスクヘッダこれにより、オフセットを計算すると、ASMディスクを識別するのが非常に簡単であることがわかります。
- ASMデバイスの先頭からオフセット0x0020に定数文字列が必要です
ORCLDISK
。この文字列の直後には、プラットフォーム固有のドライバ情報文字列が続くことも、単にnull終端文字が続くこともあります。 - オフセット0x0048でnullで終わるASMディスクの名前を見つけることができます。
- オフセット0x0068には、ディスクが現在属しているASMディスクグループの名前があり、それもnullで終了します。
- オフセット0x0088には、ディスクが属するASM障害グループの名前があり、それもnullで終わります。
ルートアクセス権があり、ブロックデバイスの固定オフセットから文字列を読み取るコマンドがある場合は、その情報を使用してすべてのデバイスを繰り返し、すべてがrhdiskpower*
ASMディスクであることを確認し、その場合は識別情報を読み取ることができます。これは、出力を解析する代わりにASMディスクをマッピングするより強力な方法を提供できますls
。