diff options
Diffstat (limited to 'md.4')
-rw-r--r-- | md.4 | 26 |
1 files changed, 23 insertions, 3 deletions
@@ -40,7 +40,7 @@ MULTIPATH (a set of different interfaces to the same device), and FAULTY (a layer over a single device into which errors can be injected). .SS MD METADATA -Each device in an array may have some +Each device in an array may have some .I metadata stored in the device. This metadata is sometimes called a .BR superblock . @@ -176,7 +176,7 @@ device is rounded down to a multiple of this chunksize. A RAID0 array (which has zero redundancy) is also known as a striped array. A RAID0 array is configured at creation with a -.B "Chunk Size" +.B "Chunk Size" which must be a power of two (prior to Linux 2.6.31), and at least 4 kibibytes. @@ -874,6 +874,26 @@ The list is particularly useful when recovering to a spare. If a few blocks cannot be read from the other devices, the bulk of the recovery can complete and those few bad blocks will be recorded in the bad block list. +.SS RAID456 WRITE JOURNAL + +Due to non-atomicity nature of RAID write operations, interruption of +write operations (system crash, etc.) to RAID456 array can lead to +inconsistent parity and data loss (so called RAID-5 write hole). + +To plug the write hole, from Linux 4.4 (to be confirmed), +.I md +supports write ahead journal for RAID456. When the array is created, +an additional journal device can be added to the array through +.IR write-journal +option. The RAID write journal works similar to file system journals. +Before writing to the data disks, md persists data AND parity of the +stripe to the journal device. After crashes, md searches the journal +device for incomplete write operations, and replay them to the data +disks. + +When the journal device fails, the RAID array is forced to run in +read-only mode. + .SS WRITE-BEHIND From Linux 2.6.14, @@ -1024,7 +1044,7 @@ number of times MD will service a full-stripe-write before servicing a stripe that requires some "prereading". For fairness this defaults to 1. Valid values are 0 to stripe_cache_size. Setting this to 0 maximizes sequential-write throughput at the cost of fairness to threads -doing small or random writes. +doing small or random writes. .SS KERNEL PARAMETERS |