3 ms·
> They're running a fair bit of math (probably Reed Solomon matrix multiplications for error correction) over all the data accesses. Do those run on this machi
by scottlamb 5y ago
> They're running a fair bit of math (probably Reed Solomon matrix multiplications for error correction) over all the data accesses.
Do those run on this machine? I imagine backblaze has redundancy at the cluster level rather than machine level. That allows them to lose a single machine without any data becoming unavailable. It also means we shouldn't assume the erasure code calculations happen on a machine with 60 drives attached. That's still possible but alternatively the client [1] could do those calculations and the drive machines could simply handle read/write raw chunks. This can mean less network bandwidth [2] and better load balancing (heavier calculations done further from the stateful component).
[1] Meaning a machine handling a user-facing request or re-replication after drive/machine loss.
[2] Assume data is divided into slices that are reconstructed from N/M chunks, such that each chunk is smaller than its slice. [3] On read, the client-side erasure code design means N chunk transfers from drive machine to client. If instead the client queries one of the relevant drive machines, that machine has to receive N-1 chunks from the others and send back a full slice. (Similar for writes.) More network traffic on the drive machine and across the network in total, less on the client.
[3] This assumption might not make sense if they care more about minimizing seeks on read than minimizing bytes stored. Then they might have at least one full copy that doesn't require accessing the others.