ASM を味わう ~ DISK へのデータ配置を確認する ~ その10
<ASM を味わう ~ DISK へのデータ配置を確認する ~ その10>
ペンネーム:ダーリン
前回、ASM でデータ量はおおむねバランスされているが、I/O が偏っている
と言う状況が見られました。
そもそも、DISK Group を構成する各 DISK にはどのようにデータが格納され
ているのでしょうか?
ためしに、冗長性をはずした DISK Group を作成し、表領域を構成するデータ
ファイルがどのように配置されるかを見てみます。
まず、前回まで使用していた DISK Group は 5 本の DISK を使用して NORMAL
REDUNDANCY で作成したものでした。 この内いくつかの DISK を解放して
EXTERNAL REDUNDANCY で DISK Group を作成しましょう。
ちなみに解放できる DISK は、3つまでです。なぜなら、それ以上解放すると、
NORMAL REDUNDANCY では、2重化が出来なくなるからです。
5 – 3 = 2
なので、今回は、3DISK を解放し、これを使って DISK Group を作成します。
SQL> create diskgroup dg_0001 external redundancy 2 disk 3 '/dev/raw/raw3' name disk_001 size 10236m , 4 '/dev/raw/raw4' name disk_002 size 10236m , 5 '/dev/raw/raw5' name disk_003 size 10236m 6 ; Diskgroup created.
ちなみこの DISK Group の割り当て単位は、1MB です。
SQL> select name,allocation_unit_size ,type from v$asm_diskgroup 2 where name = 'DG_0001'; NAME ALLOCATION_UNIT_SIZE TYPE ------------------- -------------------- ------ DG_0001 1048576 EXTERN
この DISK Group に表領域を作成します。
小さな表領域を作成して見ましょう。今回は 3 DISK で構成されていますの
で、まず 3 MB で作成してみましょう。DISK Group の割り当て単位も 1MB
なので、それぞれの DISK に均等に 1MB づつ割り当てられるはずです。
<>
SQL> select group_number,disk_number,total_mb,free_mb,name,path 2 from v$asm_disk; GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB NAME PATH ------------ ----------- ---------- ---------- ---------- --------------- 2 2 10236 10220 DISK_003 /dev/raw/raw5 2 1 10236 10220 DISK_002 /dev/raw/raw4 2 0 10236 10214 DISK_001 /dev/raw/raw3 1 1 10236 9355 DATA_0001 /dev/raw/raw2 1 0 10236 9355 DATA_0000 /dev/raw/raw1
<>
SQL> create tablespace test001 datafile '+DG_0001' size 3m 2 autoextend on next 1m uniform size 1m 3 segment space management auto; Tablespace created.
<>
SQL> select group_number,disk_number,total_mb,free_mb,name,path 2 from v$asm_disk; GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB NAME PATH ------------ ----------- ---------- ---------- ---------- --------------- 2 2 10236 10218 DISK_003 /dev/raw/raw5 2 1 10236 10219 DISK_002 /dev/raw/raw4 2 0 10236 10213 DISK_001 /dev/raw/raw3 1 1 10236 9355 DATA_0001 /dev/raw/raw2 1 0 10236 9355 DATA_0000 /dev/raw/raw1
DISK_001 から DISK _003 空き容量が減っているので、ここに表領域が作成さ
れたことが予想できます。
それぞれのデータ量は、、
DISK_001 10214 - 10213 = 1MB DISK_002 10220 - 10219 = 1MB DISK_003 10220 - 10218 = 2MB -------- --------------- --- 合計 4MB
3MB の表領域を作成しましたが、4MB 減ってしまいました。
これは、”ASM を味わう その3” で確認したときと同じ状況です。
SQL> l 1 select a.name FILE_NAME 2 ,b.blocks USED_BLOCKS 3 ,trunc(b.bytes/1024/10024) USED_MBytes 4 ,trunc(b.space/1024/1024) ALLOCATE_MBytes 5 ,type TYPE 6 from v$asm_alias a,v$asm_file b 7 where a.group_number = b.group_number 8 and a.file_number = b.file_number 9* and a.file_incarnation = b.incarnation SQL> / FILE_NAME USED_BLOCKS USED_MBYTES ALLOCATE_MBYTES TYPE -------------------- ----------- ----------- --------------- --------------- SYSTEM.256.1 56321 44 885 DATAFILE SYSAUX.257.1 26881 21 425 DATAFILE UNDOTBS1.258.1 3201 2 52 DATAFILE USERS.259.1 641 0 12 DATAFILE Current.260.3 175 0 16 CONTROLFILE Current.261.3 175 0 16 CONTROLFILE group_1.262.1 20481 1 32 ONLINELOG group_1.263.1 20481 1 32 ONLINELOG group_2.264.1 20481 1 32 ONLINELOG group_2.265.1 20481 1 32 ONLINELOG group_3.266.1 20481 1 32 ONLINELOG group_3.267.1 20481 1 32 ONLINELOG TEMP.268.1 2561 2 42 TEMPFILE spfile.269.1 5 0 2 PARAMETERFILE spfileora101.ora 5 0 2 PARAMETERFILE USERS.270.1 1281 1 22 DATAFILE TEST001.256.1 385 0 4 DATAFILE ~~~~~~~~~~~~~~ ~~~~~
では、次は、6MB 、、ではなく、5MB で作成してみます。すると、
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB NAME PATH ------------ ----------- ---------- ---------- ---------- --------------- 2 2 10236 10218 DISK_003 /dev/raw/raw5 2 1 10236 10218 DISK_002 /dev/raw/raw4 2 0 10236 10212 DISK_001 /dev/raw/raw3 1 1 10236 9355 DATA_0001 /dev/raw/raw2 1 0 10236 9355 DATA_0000 /dev/raw/raw1
それぞれのデータ量は、、
DISK_001 10214 - 10212 = 2MB DISK_002 10220 - 10218 = 2MB DISK_003 10220 - 10218 = 2MB -------- --------------- --- 合計 6MB
きれいに、2MB づつ減少しています。
オーバーヘッドの分も含めて、きれいに均等配置されています。
同様に 10MB 、14MB と、100MB でも見てみました。
10MB の表領域:
DISK_001 10214 - 10211 = 3MB DISK_002 10220 - 10216 = 4MB DISK_003 10220 - 10216 = 4MB -------- --------------- ---- 合計 11MB
14MB の表領域:
DISK_001 10214 - 10209 = 5MB DISK_002 10220 - 10215 = 5MB DISK_003 10220 - 10215 = 5MB -------- --------------- ---- 合計 15MB
100MB の表領域:
DISK_001 10214 - 10181 = 34MB DISK_002 10220 - 10186 = 34MB DISK_003 10220 - 10186 = 33MB -------- --------------- ----- 合計 101MB
どうやら、データ量的にみて均等に配置されるというのは間違いないようです。
(少なくとも 1 つのデータファイルとしては)
来週は、この環境を使って、I/O バランスを崩してみます。
うんど~か~い チャッチャチャチャ!! 雨に負けるな@茅ヶ崎にて