May 11, 20251 yr Stupid question: My server crashed last night. After reboot the usual parity check starts. While parity check is running I can write to the array. So far so good 1. What I see is, that the parity check uses all disks at aprox. 35 MB/s. Fine with that during parallel writes. 2. But for the writes to one data disk I see that only the parity disks and the array disk, I'm writing to, are being used. Isn't that dangerous? The writes seem to consider parity disks are ok. But they are checked currently. So shouldn't writes during a parity check use "Reconstruct write"? Read/Write/Modify is IMHO wrong during a running parity check. In the image below you can see what I mean. 34 MB/s is the parity check. 90 MB/s is the write to disk21 (not shown) and the parity disks. Edited May 11, 20251 yr by hawihoney
May 11, 20251 yr Community Expert 42 minutes ago, hawihoney said: So shouldn't writes during a parity check use "Reconstruct write"? Read/Write/Modify is IMHO wrong during a running parity check. Either the check already passed at the location being written and would have detected the error already if there was one, or it will do so later. I.e. doing a write with RMW doesn't change anything. Doing reconstruct write would actually unintentionally correct any error even if the check is non-correcting, which would be inconsistent. Edited May 11, 20251 yr by Kilrah
May 11, 20251 yr Author 13 minutes ago, Kilrah said: Doing reconstruct write would actually unintentionally correct any error even if the check is non-correcting, It's the parity check after a server crash and reboot. AFAIK, that one is always correctional - for a reason. This one SHOULD correct sync errors always. All drives are spun-up during that correctional check, so reconstruct write for array writes wouldn't hurt IMHO. I get your point with before is corrected, after will be corrected. And I know the technical ideas behind parity checks (data disk is always correct). But during that parity check writes may use wrong values and now consider a crash during that writes ... IMHO that would make things worst. I vote for recosntruct writes during a correctional parity check.
May 11, 20251 yr Community Expert Reconstruct writes anyway only happen when there is no concurrent array usage - i.e. if you read something while writing to the array it will use RMW, and since a parity check is a constant read... Edited May 11, 20251 yr by Kilrah
May 11, 20251 yr Community Expert Solution 1 hour ago, hawihoney said: But during that parity check writes may use wrong values and now consider a crash during that writes ... IMHO that would make things worst. No it will not. If the point for a sector has already been passed in the parity check then it is doing a normal update. If the point for a sector has not been passed then it will update the data disk and parity disk assuming the data disk is correct, and later if they do not match flag up an error.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.