What is the difference between the summaries of disk space on these two systems? Look at the free_usable_file_MB column and free space
System 1
ASMCMD [+] > lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 4194304 72769536 2031032 433152 798940 0 N DATA_PEX0/ MOUNTED NORMAL N 512 4096 4194304 128286720 20004028 2672640 8665694 0 N DATA_PEX1/
Group Diskgroup Total Req'd Free Percent Disk Size Percent Percent Disk Group Name State Redundancy GB GB GB Imbalance Variance Free Free Count ---------- ---------- ---------- ---------- -------- ------ -------- --------- --------- ------- ------- ----- 1 DATA_PEX0 MOUNTED NORMAL 71,064 423 1,560 1.4 .0 2.2 3.5 168 2 DATA_PEX1 MOUNTED NORMAL 125,280 2,610 16,925 .1 .0 15.6 15.6 48
System 2
ASMCMD [+] > lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 2621412 595744 0 595744 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 1048568 700029 0 700029 0 N FRA/ Mirror Percent Minimum Maximum Group Diskgroup Total Req'd Free Percent Disk Size Percent Percent Disk Group Name State Redundancy GB GB GB Imbalance Variance Free Free Count ---------- ---------- ---------- ---------- -------- ------ -------- --------- --------- ------- ------- ----- 1 DATA MOUNTED EXTERN 2,560 0 582 .2 .0 22.7 22.8 20 2 FRA MOUNTED EXTERN 1,024 0 684 .0 .0 66.8 66.8 8
System 1 is an Exadata stack with NORMAL redundancy whereas System 2 uses EXTERNAL redundancy. All of our systems bar Exadata are configured with dynamic multi-pathing with external redundancy to ensure high availability. – we allow the SAN to manage redundancy
In system 1 when using the second query to interrogate the diskgroups it would appear that we have 1.5Tb of free space in DATA_PEX0 and yet the lsdg command indicates we only have 800Gb free. Quite a significant difference when we have a weekly growth rate of ~250Gb in that diskgroup
SELECT g.group_number "Group" , g.name "Group Name" , g.state "State" , g.type "Type" , g.total_mb/1024 "Total GB" , g.free_mb/1024 "Free GB" , 100*(max((d.total_mb-d.free_mb)/d.total_mb)-min((d.total_mb-d.free_mb)/d.total_mb))/max((d.total_mb-d.free_mb)/d.total_mb) "Imbalance" , 100*(max(d.total_mb)-min(d.total_mb))/max(d.total_mb) "Variance" , 100*(min(d.free_mb/d.total_mb)) "MinFree" , 100*(max(d.free_mb/d.total_mb)) "MaxFree" , count(*) "DiskCnt" FROM v$asm_disk d, v$asm_diskgroup g WHERE d.group_number = g.group_number and d.group_number <> 0 and d.state = 'NORMAL' and d.mount_status = 'CACHED' GROUP BY g.group_number, g.name, g.state, g.type, g.total_mb, g.free_mb ORDER BY 1;
PS the code comes from a very good ASM script from this very blog
This blog by Harald van Breederode explains in a much better way than I could why the mirroring in normal redundancy uses additional space .
As we are quite space challenged on the Exadata storage at the moment I have been asked several times to explain the different values of free space that are being reported – now I can just point them to this blog entry which will re-direct them to Harald’s very good explanation.
Job done