Appendix A: Optimizing RAID 5 Write Performance

To get the highest performance from this system, it is necessary to have a number of stripes being written in parallel. As the array expands, with more and more drives, the number of commands (and amount of sequential data) necessary to do this increases.

P (56-62)

C56

C57

C58

C59

C60

C61

C62

Stripe 8

 

 

 

 

 

 

 

 

 

C49

C50

C51

C52

C53

C54

C55

P (49-55)

Stripe 7

 

 

 

 

 

 

 

 

 

C42

C43

C44

C45

C46

C47

P (42-48)

C48

Stripe 6

 

 

 

 

 

 

 

 

 

C35

C36

C37

C38

C39

P (20-23)

C61

C62

Stripe 5

 

 

 

 

 

 

 

 

 

C28

C29

C30

C31

P (28-34)

C32

C33

C34

Stripe 4

 

 

 

 

 

 

 

 

 

C21

C22

C23

P (21-27)

C24

C25

C26

C27

Stripe 3

 

 

 

 

 

 

 

 

 

C14

C15

P (14-20)

C16

C17

C18

C19

C20

Stripe 2

 

 

 

 

 

 

 

 

 

C7

P (7-13)

C8

C9

C10

C11

C12

C13

Stripe 1

 

 

 

 

 

 

 

 

 

P (0-6)

C0

C1

C2

C3

C4

C5

C6

Stripe 0

 

 

 

 

 

 

 

 

 

In this table we can see that seven chunks of sequential data are necessary to fill a stripe. To have multiple commands active for all hard drives requires more data than with five drives. As can be seen, this number will increase as the number of drives increases. If a large number of drives are used, it can get difficult to achieve maximum performance, because it becomes more difficult to cluster a large number of commands to achieve a Full Stripe Write.

Using RAID 5 sub-arrays

The difficulty in realizing the maximum performance possible introduces the concept of a Sub-Array. Suppose an array consisted of two RAID 5 sets. If these are then striped, the resulting array would appear as shown in the second of the following tables. In this case, in order for a Full Stripe Write to be performed,

230

www.gateway.com