https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&feed=atom&action=historyWhat is RAID and why should you want it? - Revision history2024-03-29T02:11:15ZRevision history for this page on the wikiMediaWiki 1.19.24https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6183&oldid=prevTimothy W. Gravier, Jr.: /* RAID1/Mirror Mode) */2019-04-01T15:42:51Z<p><span dir="auto"><span class="autocomment">RAID1/Mirror Mode)</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:42, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 41:</td>
<td colspan="2" class="diff-lineno">Line 41:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Reads/writes to the volume will happen much faster because they are done in parallel across all the disks. This is usually the main reason for running RAID-0.  Read/write speed will be very close to the speed of a single disk x the number of disks in the volume.  Put another way, if it takes 10 seconds to read/write data to a single disk, then it would only take 2 seconds to read/write the same data to a RAID-0 volume across 5 disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Reads/writes to the volume will happen much faster because they are done in parallel across all the disks. This is usually the main reason for running RAID-0.  Read/write speed will be very close to the speed of a single disk x the number of disks in the volume.  Put another way, if it takes 10 seconds to read/write data to a single disk, then it would only take 2 seconds to read/write the same data to a RAID-0 volume across 5 disks.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>===RAID1/Mirror Mode<del class="diffchange diffchange-inline">)</del>===</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>===RAID1/Mirror Mode===</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are still broken into blocks, but ALL blocks are copied to ALL disks in the volume.  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are still broken into blocks, but ALL blocks are copied to ALL disks in the volume.  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This is the first mode which actually has redundancy. This mode maintains an exact copy of the information on one disk across all the other disks.  If any disk fails in the volume (or all disks but 1), the data is still available with no performance degradation.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This is the first mode which actually has redundancy. This mode maintains an exact copy of the information on one disk across all the other disks.  If any disk fails in the volume (or all disks but 1), the data is still available with no performance degradation.</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6181&oldid=prevTimothy W. Gravier, Jr.: /* RAID-1 (Mirror Mode) */ -- matching title to man page2019-04-01T15:42:39Z<p><span dir="auto"><span class="autocomment">RAID-1 (Mirror Mode): </span> -- matching title to man page</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:42, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 41:</td>
<td colspan="2" class="diff-lineno">Line 41:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Reads/writes to the volume will happen much faster because they are done in parallel across all the disks. This is usually the main reason for running RAID-0.  Read/write speed will be very close to the speed of a single disk x the number of disks in the volume.  Put another way, if it takes 10 seconds to read/write data to a single disk, then it would only take 2 seconds to read/write the same data to a RAID-0 volume across 5 disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Reads/writes to the volume will happen much faster because they are done in parallel across all the disks. This is usually the main reason for running RAID-0.  Read/write speed will be very close to the speed of a single disk x the number of disks in the volume.  Put another way, if it takes 10 seconds to read/write data to a single disk, then it would only take 2 seconds to read/write the same data to a RAID-0 volume across 5 disks.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>===<del class="diffchange diffchange-inline">RAID-1 (</del>Mirror Mode)===</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>===<ins class="diffchange diffchange-inline">RAID1/</ins>Mirror Mode)===</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are still broken into blocks, but ALL blocks are copied to ALL disks in the volume.  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are still broken into blocks, but ALL blocks are copied to ALL disks in the volume.  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This is the first mode which actually has redundancy. This mode maintains an exact copy of the information on one disk across all the other disks.  If any disk fails in the volume (or all disks but 1), the data is still available with no performance degradation.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This is the first mode which actually has redundancy. This mode maintains an exact copy of the information on one disk across all the other disks.  If any disk fails in the volume (or all disks but 1), the data is still available with no performance degradation.</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6179&oldid=prevTimothy W. Gravier, Jr.: /* RAID-0 (Stripe Mode) */ -- matching title to man page2019-04-01T15:41:57Z<p><span dir="auto"><span class="autocomment">RAID-0 (Stripe Mode): </span> -- matching title to man page</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:41, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 35:</td>
<td colspan="2" class="diff-lineno">Line 35:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The read and write performance will probably not increase for sequential or random reads/writes. If several users access the volume at the same time and happen to read/write data that is on different disks, the volume may be able to field these requests simultaneously.  However, this would be completely by luck.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The read and write performance will probably not increase for sequential or random reads/writes. If several users access the volume at the same time and happen to read/write data that is on different disks, the volume may be able to field these requests simultaneously.  However, this would be completely by luck.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>===<del class="diffchange diffchange-inline">RAID-0 (</del>Stripe Mode<del class="diffchange diffchange-inline">)</del>===</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>===<ins class="diffchange diffchange-inline">RAID0/</ins>Stripe Mode===</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are broken into blocks, and these blocks are alternated/cycled through all the disks in the volume.  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume.  Reads/writes are broken into blocks, and these blocks are alternated/cycled through all the disks in the volume.  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* There is no redundancy in this level.  The failure of any one disk in a volume will absolutely result in the loss of all data on the volume (unless the failed disk is fixed and the blocks on it are recovered).</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* There is no redundancy in this level.  The failure of any one disk in a volume will absolutely result in the loss of all data on the volume (unless the failed disk is fixed and the blocks on it are recovered).</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6177&oldid=prevTimothy W. Gravier, Jr.: /* Linear Mode */ -- Gah! My edits suck!! didn't realize that these titles are actually from the man page. :-/ Fixed!2019-04-01T15:40:32Z<p><span dir="auto"><span class="autocomment">Linear Mode: </span> -- Gah! My edits suck!! didn't realize that these titles are actually from the man page. :-/ Fixed!</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:40, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 29:</td>
<td colspan="2" class="diff-lineno">Line 29:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The current RAID drivers in Linux support the following levels:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>The current RAID drivers in Linux support the following levels:</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>===Linear<del class="diffchange diffchange-inline">/Span/</del>JBOD (<del class="diffchange diffchange-inline">"</del>Just a Bunch of Disks<del class="diffchange diffchange-inline">"</del>) <del class="diffchange diffchange-inline">Mode===</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>===Linear <ins class="diffchange diffchange-inline">Mode===</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline">* Also known as as "span" or "</ins>JBOD (Just a Bunch of Disks)<ins class="diffchange diffchange-inline">".</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume. The disks are "appended" to each other, so writing linearly to the RAID device will fill up disk 0 first, then disk 1 and so on. The disks do not have to be of the same size. In fact, size doesn't matter at all here. :)  The size of the volume will be (roughly) equal to the total size of all the disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Two or more disks are combined into one volume. The disks are "appended" to each other, so writing linearly to the RAID device will fill up disk 0 first, then disk 1 and so on. The disks do not have to be of the same size. In fact, size doesn't matter at all here. :)  The size of the volume will be (roughly) equal to the total size of all the disks.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* There is no redundancy in this level. If one disk fails, you will most likely lose all your data.  You may be able to recover some data if the failed disk is in the middle of the volume, since the filesystem will just be missing one large consecutive chunk of data.  Most partitions save their structure at the beginning and/or end of the volume, so if first and/or last disk fails, the whole volume is almost assuredly lost.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* There is no redundancy in this level. If one disk fails, you will most likely lose all your data.  You may be able to recover some data if the failed disk is in the middle of the volume, since the filesystem will just be missing one large consecutive chunk of data.  Most partitions save their structure at the beginning and/or end of the volume, so if first and/or last disk fails, the whole volume is almost assuredly lost.</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6175&oldid=prevTimothy W. Gravier, Jr.: /* The RAID levels */ - Removed all data relating to RAID-2 and RAID-3, as md doesn't support these 2 levels. RAID-2 and RAID-3 WILL appear elsewhere!2019-04-01T15:26:35Z<p><span dir="auto"><span class="autocomment">The RAID levels: </span> - Removed all data relating to RAID-2 and RAID-3, as md doesn't support these 2 levels. RAID-2 and RAID-3 WILL appear elsewhere!</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:26, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 46:</td>
<td colspan="2" class="diff-lineno">Line 46:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Write performance is often worse than on a single device, because identical copies of the data written must be sent to every disk in the array.  Write speed will be equal to the speed of the slowest disk.  There are also performance implications regarding the HDD controller hardware.  If the HDD controller is a discrete device (i.e., not packaged into the motherboard), the controller will do the work of copying all the data and issuing it to all the drives.  However, if the HDD controller is packaged on the motherboard (or just leans heavily on a device driver), large writes to a large volume may cause the HDD controller to slow the whole system down.  Read performance is no slower than the slowest disk.  Some RAID controllers employ a rather good read-balancing algorithm that will simply let the disk whose heads are closest to the wanted disk position perform the read operation. Since seek operations are relatively expensive on modern disks (a seek time of 8 ms equals a read of 640 kB at 80 MB/sec), picking the disk that will have the shortest seek time does actually give a noticeable performance improvement.  Additionally, some RAID drivers/controllers can be configured to read large amounts of data in parallel, as in RAID-0.  This is possible because the data is still read in blocks.  Particularly good controllers can read data from different blocks across multiple disks at the same time.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Write performance is often worse than on a single device, because identical copies of the data written must be sent to every disk in the array.  Write speed will be equal to the speed of the slowest disk.  There are also performance implications regarding the HDD controller hardware.  If the HDD controller is a discrete device (i.e., not packaged into the motherboard), the controller will do the work of copying all the data and issuing it to all the drives.  However, if the HDD controller is packaged on the motherboard (or just leans heavily on a device driver), large writes to a large volume may cause the HDD controller to slow the whole system down.  Read performance is no slower than the slowest disk.  Some RAID controllers employ a rather good read-balancing algorithm that will simply let the disk whose heads are closest to the wanted disk position perform the read operation. Since seek operations are relatively expensive on modern disks (a seek time of 8 ms equals a read of 640 kB at 80 MB/sec), picking the disk that will have the shortest seek time does actually give a noticeable performance improvement.  Additionally, some RAID drivers/controllers can be configured to read large amounts of data in parallel, as in RAID-0.  This is possible because the data is still read in blocks.  Particularly good controllers can read data from different blocks across multiple disks at the same time.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This mode also allows for a hot-spare disk.  In this way, if a disk fails, the HDD controller will immediately drop the failed disk from the volume and bring the hot-spare online.  It will then begin the process of "rebuilding" (copying) all data from the good disk to the "new" disk.  Once the rebuild process is complete, RAID-1 redundancy is restored.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This mode also allows for a hot-spare disk.  In this way, if a disk fails, the HDD controller will immediately drop the failed disk from the volume and bring the hot-spare online.  It will then begin the process of "rebuilding" (copying) all data from the good disk to the "new" disk.  Once the rebuild process is complete, RAID-1 redundancy is restored.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">===RAID-2===</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* This RAID level is mostly deprecated; other, newer RAID levels have been developed that outperform RAID-2 in every aspect.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Rather than having multiple copies of the data to provide redundancy, [https://en.wikipedia.org/wiki/Hamming_code Hamming code] is used to calculate parity as data is written.  As data is subsequently read, parity is used to validate any read data, and if there is an error, parity is used to calculate the correct data.  The result of this is two-fold:</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** A minimum of 7 disks is required, due to the way the parity calculation works.  Three disks are used for parity calculations, and 4 are used for data.  Expanding the volume requires the addition of disks in this same 3:4 parity-to-data ratio...which means 7 total disks at a time.  This makes RAID-2 a very expensive option.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** The HDD controllers must be powerful enough to be able handle the complex Hamming code calculations in real-time.  The result of this is a very expensive HDD controller, making RAID-2 an even more expensive option.  (Modern disks now do their own error-correction [sometimes using Hamming code] internally, obviating the need for bit-level error correction on the controller.)</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* All disks in the volume must be exactly identical because the rotational speed of the disks must be synchronized by the controller precisely.  Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Failure of any single disk in the volume will be error-corrected by the HDD controller using the parity disk(s) to calculate the missing data from the failed disk.  Data integrity will be maintained, and there is no performance degradation (as parity is calculated for all read operations).</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** Data is broken up into individual bits (not blocks) and spread across at least 4 disks, ostensibly imitating the performance benefit of a RAID-0 volume.  In practice, due to the need to calculate parity for all reads and writes, any striping performance benefits would not likely not be worth the complexity and expense of implementing this RAID level. </del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** Because of the bit-level striping, sequential reads have the greatest performance gains, but random reads suffer performance losses.  In this way, if not for expense, RAID-2 might make a good candidate for a media-streaming server (where a few large files are being read from the volume).  However, the greatest drawback to bit-level striping is that multiple, separate data accesses cannot happen simultaneously.  Even though the data is spread across 4 disks, ALL disks are occupied during a single data read/write request, so multiple read/write requests would be scheduled sequentially (e.g., finish reading/writing 1 file before reading/writing the next).</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">===RAID-3===</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* This RAID level is mostly deprecated; other, newer RAID levels have been developed that outperform RAID-3 in every aspect.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Three or more disks are combined into a volume.  One volume is dedicated to parity (error-correction), and data is striped to the other 2 (minimum) on a byte-level.  Volume size is equal to the total space on all disks, minus 1 disk.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* This RAID level is similar to RAID-2 in several ways, but seeks to improve upon the worst characteristics of RAID-2:</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** RAID-2 requires a minimum of 7 disks, 3 of which are dedicated to parity.  RAID-3 only needs 1 parity disk, and can have any number of other data disks.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">** RAID-3 doesn't require the Hamming code of RAID-2 for error correction, which means parity calculations are much simpler.  HDD controllers don't have to be as elaborate (i.e. expensive).</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Disks in the array are still required to have synchronized rotational speed, so the disks have to be identical.  As with RAID-2, this can result in a high rate of multiple-disk failures (and thereby, volume loss).</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* Read performance approaches that of a RAID-0 stripe, especially considering the far less complex parity calculations, but multiple data requests still have to be scheduled sequentially due to the byte-level striping.  This made RAID-3 a better candidate for large, sequential read operations than RAID-2, but multi-threaded software that might need multiple data streams at once still suffered performance issues, as did random reads.  Write performance was also not very good, because parity had to be calculated and written for every write operation.  Every data write to the volume would require a read from each disk, a calculation of parity, and a write to each disk in the volume.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-4===</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-4===</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6173&oldid=prevTimothy W. Gravier, Jr.: /* RAID-2 */ -- added information about fail mode.2019-04-01T15:24:58Z<p><span dir="auto"><span class="autocomment">RAID-2: </span> -- added information about fail mode.</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:24, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 54:</td>
<td colspan="2" class="diff-lineno">Line 54:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical because the rotational speed of the disks must be synchronized by the controller precisely.  Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical because the rotational speed of the disks must be synchronized by the controller precisely.  Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* Failure of any single disk in the volume will be error-corrected by the HDD controller using the parity disk(s) to calculate the missing data from the failed disk.  Data integrity will be maintained, and there is no performance degradation (as parity is calculated for all read operations).</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Data is broken up into individual bits (not blocks) and spread across at least 4 disks, ostensibly imitating the performance benefit of a RAID-0 volume.  In practice, due to the need to calculate parity for all reads and writes, any striping performance benefits would not likely not be worth the complexity and expense of implementing this RAID level.  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Data is broken up into individual bits (not blocks) and spread across at least 4 disks, ostensibly imitating the performance benefit of a RAID-0 volume.  In practice, due to the need to calculate parity for all reads and writes, any striping performance benefits would not likely not be worth the complexity and expense of implementing this RAID level.  </div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6171&oldid=prevTimothy W. Gravier, Jr.: /* RAID-2 */2019-04-01T15:16:54Z<p><span dir="auto"><span class="autocomment">RAID-2</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:16, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 55:</td>
<td colspan="2" class="diff-lineno">Line 55:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>** Data is broken up into individual bits (not blocks) and spread across at least 4 disks, ostensibly imitating the performance benefit of a RAID-0 volume.  In practice, due to the need to calculate parity for all reads and writes, <del class="diffchange diffchange-inline">read/write </del>performance <del class="diffchange diffchange-inline">theoretically cannot exceed that </del>of <del class="diffchange diffchange-inline">RAID-0 across 4 disks.  Performance gains could hypothetically not even reach RAID-0 performance across 2 disks, making </del>this RAID level <del class="diffchange diffchange-inline">even less desirable</del>.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>** Data is broken up into individual bits (not blocks) and spread across at least 4 disks, ostensibly imitating the performance benefit of a RAID-0 volume.  In practice, due to the need to calculate parity for all reads and writes, <ins class="diffchange diffchange-inline">any striping </ins>performance <ins class="diffchange diffchange-inline">benefits would not likely not be worth the complexity and expense </ins>of <ins class="diffchange diffchange-inline">implementing </ins>this RAID level.  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Because of the bit-level striping, sequential reads have the greatest performance gains, but random reads suffer performance losses.  In this way, if not for expense, RAID-2 might make a good candidate for a media-streaming server (where a few large files are being read from the volume).  However, the greatest drawback to bit-level striping is that multiple, separate data accesses cannot happen simultaneously.  Even though the data is spread across 4 disks, ALL disks are occupied during a single data read/write request, so multiple read/write requests would be scheduled sequentially (e.g., finish reading/writing 1 file before reading/writing the next).</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Because of the bit-level striping, sequential reads have the greatest performance gains, but random reads suffer performance losses.  In this way, if not for expense, RAID-2 might make a good candidate for a media-streaming server (where a few large files are being read from the volume).  However, the greatest drawback to bit-level striping is that multiple, separate data accesses cannot happen simultaneously.  Even though the data is spread across 4 disks, ALL disks are occupied during a single data read/write request, so multiple read/write requests would be scheduled sequentially (e.g., finish reading/writing 1 file before reading/writing the next).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6169&oldid=prevTimothy W. Gravier, Jr.: /* RAID-2 */ -- added some more historical data2019-04-01T15:14:28Z<p><span dir="auto"><span class="autocomment">RAID-2: </span> -- added some more historical data</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:14, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 51:</td>
<td colspan="2" class="diff-lineno">Line 51:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Rather than having multiple copies of the data to provide redundancy, [https://en.wikipedia.org/wiki/Hamming_code Hamming code] is used to calculate parity as data is written.  As data is subsequently read, parity is used to validate any read data, and if there is an error, parity is used to calculate the correct data.  The result of this is two-fold:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Rather than having multiple copies of the data to provide redundancy, [https://en.wikipedia.org/wiki/Hamming_code Hamming code] is used to calculate parity as data is written.  As data is subsequently read, parity is used to validate any read data, and if there is an error, parity is used to calculate the correct data.  The result of this is two-fold:</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** A minimum of 7 disks is required, due to the way the parity calculation works.  Three disks are used for parity calculations, and 4 are used for data.  Expanding the volume requires the addition of disks in this same 3:4 parity-to-data ratio...which means 7 total disks at a time.  This makes RAID-2 a very expensive option.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** A minimum of 7 disks is required, due to the way the parity calculation works.  Three disks are used for parity calculations, and 4 are used for data.  Expanding the volume requires the addition of disks in this same 3:4 parity-to-data ratio...which means 7 total disks at a time.  This makes RAID-2 a very expensive option.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>** The HDD controllers must be powerful enough to be able handle the complex Hamming code calculations in real-time.  The result of this is a very expensive HDD controller, making RAID-2 an even more expensive option.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>** The HDD controllers must be powerful enough to be able handle the complex Hamming code calculations in real-time.  The result of this is a very expensive HDD controller, making RAID-2 an even more expensive option. <ins class="diffchange diffchange-inline"> (Modern disks now do their own error-correction [sometimes using Hamming code] internally, obviating the need for bit-level error correction on the controller.)</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical because the rotational speed of the disks must be synchronized by the controller precisely.  Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical because the rotational speed of the disks must be synchronized by the controller precisely.  Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6167&oldid=prevTimothy W. Gravier, Jr.: /* RAID-2 */ -- synergy with the RAID-3 addition2019-04-01T15:11:43Z<p><span dir="auto"><span class="autocomment">RAID-2: </span> -- synergy with the RAID-3 addition</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:11, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 50:</td>
<td colspan="2" class="diff-lineno">Line 50:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This RAID level is mostly deprecated; other, newer RAID levels have been developed that outperform RAID-2 in every aspect.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* This RAID level is mostly deprecated; other, newer RAID levels have been developed that outperform RAID-2 in every aspect.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Rather than having multiple copies of the data to provide redundancy, [https://en.wikipedia.org/wiki/Hamming_code Hamming code] is used to calculate parity as data is written.  As data is subsequently read, parity is used to validate any read data, and if there is an error, parity is used to calculate the correct data.  The result of this is two-fold:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Rather than having multiple copies of the data to provide redundancy, [https://en.wikipedia.org/wiki/Hamming_code Hamming code] is used to calculate parity as data is written.  As data is subsequently read, parity is used to validate any read data, and if there is an error, parity is used to calculate the correct data.  The result of this is two-fold:</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>** A minimum of 7 disks is required, due to the way the parity calculation works.  Three disks are used for parity calculations, and 4 are used for data.  This makes RAID-2 <del class="diffchange diffchange-inline">an </del>expensive option.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>** A minimum of 7 disks is required, due to the way the parity calculation works.  Three disks are used for parity calculations, and 4 are used for data<ins class="diffchange diffchange-inline">.  Expanding the volume requires the addition of disks in this same 3:4 parity-to-data ratio...which means 7 total disks at a time</ins>.  This makes RAID-2 <ins class="diffchange diffchange-inline">a very </ins>expensive option.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>** The HDD controllers must be powerful enough to be able handle the complex Hamming code calculations in real-time.  The result of this is a very expensive HDD controller<del class="diffchange diffchange-inline">--</del>making RAID-2 an even more expensive option.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>** The HDD controllers must be powerful enough to be able handle the complex Hamming code calculations in real-time.  The result of this is a very expensive HDD controller<ins class="diffchange diffchange-inline">, </ins>making RAID-2 an even more expensive option.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical<del class="diffchange diffchange-inline">.  One of the reasons for this is that </del>the rotational speed of the disks must be synchronized by the controller precisely.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>* All disks in the volume must be exactly identical <ins class="diffchange diffchange-inline">because </ins>the rotational speed of the disks must be synchronized by the controller precisely. <ins class="diffchange diffchange-inline"> </ins>Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline">** </del>Because of this requirement, the disks are usually made by the same manufacturer in the same manufacturing run.  This subjects all the disks to the same manufacturing process flaws.  This can contribute to problems where multiple disks fail in a relatively short timespan, potentially causing a loss of the entire volume.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The size of the volume will be the combined size of 4 out of the 7 (identical) disks.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Performance metrics are not readily available due to the deprecation of RAID-2 (along with the difficulty/expense/complexity of finding a HDD controller capable of assembling a RAID-2 volume).</div></td></tr>
</table>Timothy W. Gravier, Jr.https://raid.wiki.kernel.org/index.php?title=What_is_RAID_and_why_should_you_want_it%3F&diff=6165&oldid=prevTimothy W. Gravier, Jr.: /* RAID-3 */ -- New addition!2019-04-01T15:05:57Z<p><span dir="auto"><span class="autocomment">RAID-3: </span> -- New addition!</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:05, 1 April 2019</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 60:</td>
<td colspan="2" class="diff-lineno">Line 60:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-3===</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-3===</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* This RAID level is mostly deprecated; other, newer RAID levels have been developed that outperform RAID-3 in every aspect.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* Three or more disks are combined into a volume.  One volume is dedicated to parity (error-correction), and data is striped to the other 2 (minimum) on a byte-level.  Volume size is equal to the total space on all disks, minus 1 disk.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* This RAID level is similar to RAID-2 in several ways, but seeks to improve upon the worst characteristics of RAID-2:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">** RAID-2 requires a minimum of 7 disks, 3 of which are dedicated to parity.  RAID-3 only needs 1 parity disk, and can have any number of other data disks.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">** RAID-3 doesn't require the Hamming code of RAID-2 for error correction, which means parity calculations are much simpler.  HDD controllers don't have to be as elaborate (i.e. expensive).</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* Disks in the array are still required to have synchronized rotational speed, so the disks have to be identical.  As with RAID-2, this can result in a high rate of multiple-disk failures (and thereby, volume loss).</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* Read performance approaches that of a RAID-0 stripe, especially considering the far less complex parity calculations, but multiple data requests still have to be scheduled sequentially due to the byte-level striping.  This made RAID-3 a better candidate for large, sequential read operations than RAID-2, but multi-threaded software that might need multiple data streams at once still suffered performance issues, as did random reads.  Write performance was also not very good, because parity had to be calculated and written for every write operation.  Every data write to the volume would require a read from each disk, a calculation of parity, and a write to each disk in the volume.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-4===</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>===RAID-4===</div></td></tr>
</table>Timothy W. Gravier, Jr.