2015年12月2日水曜日

Oracle DatabaseのASMディスクグループの空き容量を調べる

Oracle DatabaseのASMディスクグループの空き容量を調べる


JPOUG Advent Calendar 2015の2日目です。
前日は吉川 和宏さんでした。


Oracle DatabaseでRACを使用するには、ストレージにASM(Automatic Storage Management)を使用することが多いと思います。
ASMでは、データファイルの格納にディスクグループが使用されます。ディスクグループは複数のディスクをまとめたものです。
格納されたデータファイルはディスクグループ内に均等に分散されるため、ディスクのパフォーマンスは均一になります。

ASMでは、ディスク故障に備えた冗長性を備えています。
・高冗長性   HIGH   3重化
・標準冗長性 NORMAL  2重化
・外部冗長性 EXTERNAL 冗長化なし(ストレージコピーなど他の機能冗長性を保証)

さて、ASMのディスク使用量を調べるには、ASMCMDユーティリティでlsdgをする、もしくはv$asm_diskgroupビューを確認します。


lsdgにはいくつかの項目がありますが、ディスクの残量はどれを見ればよいのでしょう。
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB
MOUNTED  NORMAL  N         512   4096  4194304     12288     8835             1117            3859

容量の項目には以下のものがあります。マニュアルの説明を右に記載します。
Total_MB     : ディスク・グループのサイズ
Free_MB       : 冗長性を考慮しない場合のディスク・グループの空き領域(MB)
Req_mir_free_MB  : ディスク・グループで許容できる最悪の障害が発生した後、
             完全な冗長性をリストアするために
              ディスク・グループで使用可能にする必要のある領域の量
Usable_file_MB  : ミラー化のために調整され、新しいファイルに使用可能な空き領域の量


Free_MBは、「冗長性を考慮しない」とあるので、冗長化をしたディスクの場合はこの値で空き容量を見積もることはできません。
※冗長性が「外部冗長性」の場合はこの値を空き容量とみなして良いです。

では、残りの値を見てみましょう。Req_mir_free_MBとは何でしょう?
この値は冗長性によって違います。
標準冗長性の場合は、1個の障害グループの値となります。
高冗長性の場合は、2個の障害グループの値となります。

障害グループがそれぞれの個数が壊れても大丈夫なように容量を確保する必要があるということのようです。
障害グループを明示的に指定していない場合でも、それぞれのディスクが障害グループとして扱われています。
これらの障害グループ1つまたは2つ分がReq_mir_free_MBとして計算されます。


Usable_file_MBは、新しいファイルに使用可能な空き容量ですので、こちらの値が残り使用できるディスク容量です。
Usable_file_MBは以下の式で産出されます。

(Free_MB - Req_mir_free_MB) / Redundancy*
*冗長性によって異なります。標準冗長性は2、高冗長性は3です


この計算の結果、Usable_file_MBがマイナス値になることもあります。
ただちに問題が発生とならない可能性もありますが、
ファイルが追加できなかったり、次に障害が発生した場合にファイルの冗長性が失われることがあります。


ASMディスクグループの使用量について、実際にファイルを追加しながら表示の変化を検証しているブログが、
以下にあります。
OakTableにも参加されているBreederodeさんのものです。興味のある方は見てみてはいかがでしょうか。
https://prutser.wordpress.com/2013/01/03/demystifying-asm-required_mirror_free_mb-and-usable_file_mb/



明日は kenken0807 さんです。楽しみですね。

0 件のコメント:

コメントを投稿