X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=md.4;h=60fdd274cc50f17727f992e3422244e1c66f6cd1;hp=aecff38a1d0251a73fa463c36659e5d0973f581a;hb=HEAD;hpb=7f3b2d1d1621cbdc60b5af4a41445391010fe9e1 diff --git a/md.4 b/md.4 index aecff38a..7a0bc7e6 100644 --- a/md.4 +++ b/md.4 @@ -215,6 +215,19 @@ option or the .B "--update=layout-alternate" option. +Once you have updated the layout you will not be able to mount the array +on an older kernel. If you need to revert to an older kernel, the +layout information can be erased with the +.B "--update=layout-unspecificed" +option. If you use this option to +.B --assemble +while running a newer kernel, the array will NOT assemble, but the +metadata will be update so that it can be assembled on an older kernel. + +No that setting the layout to "unspecified" removes protections against +this bug, and you must be sure that the kernel you use matches the +layout of the array. + .SS RAID1 A RAID1 array is also known as a mirrored set (though mirrors tend to @@ -896,26 +909,40 @@ 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 +.SS RAID WRITE HOLE -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). +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 md supports two mechanisms described below. -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. +.TP +DIRTY STRIPE JOURNAL +From Linux 4.4, md supports write ahead journal for RAID456. +When the array is created, an additional journal device can be added to +the array through 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. +.TP +PARTIAL PARITY LOG +From Linux 4.12 md supports Partial Parity Log (PPL) for RAID5 arrays only. +Partial parity for a write operation is the XOR of stripe data chunks not +modified by the write. PPL is stored in the metadata region of RAID member drives, +no additional journal drive is needed. +After crashes, if one of the not modified data disks of +the stripe is missing, this updated parity can be used to recover its +data. + +This mechanism is documented more fully in the file +Documentation/md/raid5-ppl.rst + .SS WRITE-BEHIND From Linux 2.6.14,