RAID 5 Part 2

Continuation from: Designing a RAID 5 group

So to continue our discussion on RAID 5 lets investigate how EMC arrays use cache to minimize the impact of the read-read-write-write penalty. First let’s look at the events without having an array cache. When changing a block of information on a RAID 5 group the following events occur:

RAID 5 Steps without an Array Cache

  1. Write of new data pending
  2. Reads the unmodified data (B1)
  3. Reads the unmodified parity (Bp)
  4. Recalculates the new parity
    1. Requires new data (Step 1) & read of unmodified data (Step 2)
    2. New parity generated
  5. Writes the modified data (B1)
  6. Writes the new parity (Bp)
  7. Acknowledge write to database

I have included a picture to help illustrate the process:

RAID 5: Generic Steps

RAID 5:Generic Steps

Notice that the write is not acknowledged to the database until step 7. Unfortunately, this RAID 5 write penalty will impact performance of an Oracle Database or other applications unless there is a means to off load this penalty. In contrast, let’s look at how the cache in EMC arrays significantly improves the performance of the RAID 5 write penalty. Using the array cache the events change too:

RAID 5 Steps with an Array Cache

  1. Acknowledge write to database
  2. Read the unmodified data (B1) into cache
    (Can happen in parallel with step 4 for better performance)
  3. Write modified data to disk (B1)
    (Asynchronous operation)
  4. Read unmodified parity into cache (Bp)
  5. Recalculate the new parity
  6. Write the new parity to disk (Bp)
    (Asynchronous operation)

I have included a picture to show the process with an EMC array cache:

RAID 5: Using EMC Array Cache

RAID 5: Using EMC Array Cache

As the first step in the process is immediately acknowledging the write back to the database the array cache effectively removed the write penalty by off loading the work. Other efficiencies include:

  • The data write in Step 3 and parity write in Step 6 can happen asynchronously / independently which improves performance.
  • The ability to read the  unmodified data (Step 1) in parallel with reading the unmodified parity improves performance as two reads are consolidated into one read event
  • Both the new data and parity remain in cache for better performance

As you might expect an important consideration is ensuring the array cache is sized to support the database(s) and other applications. Might be a good question for your storage administrator or EMC consultant.

We have shown how one random write on a RAID 5 array works every efficiently using the array cache. How about using RAID 5 for supporting batch process which involves large sequential write operations?

RAID 5: Sequential Writes

RAID 5: Sequential Writes

Using the image above we see that the array cache is able to queue several recalculations of parity and de-stage them to disk in one write operation. So with large sequential writes using the array cache we have the benefit of immediate acknowledgment of the write requests back to the database and the efficiencies gained by reducing the number of writes back to the disk. I hope this provides some insights into how EMC works to provide your business performance benefits in using RAID 5 groups.

Thanks too: Kevin Foote, Sanjay Narahari, Matt Kaberlein and Yaron Dar for proofing and providing guidance on this post!


About Sam Lucido

I’m a family man that loves playing with the kids, gardening and sitting outside talking with the neighbors. I work for EMC utilizing my 14 years experience with Oracle technology to talk with customers about some of the great storage and virtualization solutions we have to offer.
This entry was posted in Uncategorized. Bookmark the permalink.

1 Response to RAID 5 Part 2

  1. Paul says:

    What is the optimal number of disks for a raid 5 array? Assuming I’m not doing 10 or more, ‘cuz that would be just silly.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s