I’ve been trying to embed a presentation into the blog using slideshare all to no avail unfortunately – wordpress.com seems to just create a link rather than actually give me a nicely embedded window containing the presentation. So I’m going to have to try just using images instead. Here is another attempt at describing how ASM does mirroring.
I think the way ASM does mirroring is quite interesting when you delve into the details and ASM mirroring is quite unlike traditional hardware RAID mirroring. ASM does not mirror actual disks but does it’s mirroring at the extent level.
ASM has the concept of failure groups and each device within the diskgroup belongs to one and only one failure group. Ideally, each failure group would share no components ensuring if a component fails it only affects one failure group and has no impact on the other failure group.
You can see in the above we have 2 failure groups each with 2 devices, giving a total of 4 devices within the diskgroup. I have chosen to describe how normal redundancy works.
In the diagram above I have now allocated 1 extent of space to my datafile that is stored within a diskgroup created with normal redundancy. ASM has the concept of primary and secondary extents. In the diagram the primary extents will be red and the secondary are purple. So the first extent has gone to the first disk in failure group 1 and there is a corresponding secondary extent in failure group 2.
So far this is quite familiar and is what traditional mirroring would like. Now lets allocate a few more extents:
So now we see we have primary extents on both failure groups. You can also see that the devices are no longer mirror copies of each other. It is the extents that have been mirrored. The reason ASM ensures that there is an even distribution of primary extents on all devices is that ASM only ever (by defaul) reads the primary extents, so to enable the maximum I/O bandwidth and to utilise all devices in a diskgroup for reads ASM needs to have the primary extents spread over all devices.
In the event of a device failure, the secondary extent will be able to be read from the other failure group.
The other point to note is that each device has the same number of extents allocated to it as that is one of the goals of ASM extent allocation – to keep all devices filled up to the same capacity.