Skip to main content

Redundancy Level

The Redundancy Level of a chunk is the number of failures that the chunk survives at once while staying readable.

What it is​

The Redundancy Level counts failures, not stored objects. The level is the number of simultaneous failures (a lost disk or a lost Chunkserver) that MooseFS tolerates for one chunk while still serving that chunk. The GUI and mfscli label the value RL.

The number follows from the redundancy format. Storing N copies gives Redundancy Level N-1, because one copy has to survive. An Erasure Coding (EC) format with X parity parts gives Redundancy Level X, because a chunk written as 8+X parts stays readable from any 8 of those parts. A chunk written as 4+X stays readable from any 4. Three copies and EC 8+2 both give Redundancy Level 2, at very different cost in disk space.

Redundancy Level 0 still means readable data. At that level, one more failure loses the chunk.

The Redundancy Level replaces goal, the deprecated setting that counted how many copies of a file to keep. Goal could count copies and nothing else, so it could not describe a chunk stored in parts.

Why it matters​

The Redundancy Level is the one number that makes copies and Erasure Coding comparable. A Storage Class uses the level to state the protection that you want, independently of the format that provides that protection.

MooseFS also measures data health with the Redundancy Level. Every chunk has a target level, taken from its Storage Class, and a current level, taken from what the Chunkservers hold at this moment. A chunk below its target is undergoal. The Master Server replicates that chunk until the current level reaches the target.

How MooseFS implements it​

The Master Server holds the current level per chunk and derives it from what the Chunkservers report, not from the Storage Class. For copies, the current level is the number of valid copies minus one. For Erasure Coding, the current level is the number of distinct parts above the number of data parts. Parts of one chunk stored on the same Chunkserver count once, so the level never exceeds the number of Chunkservers that actually hold the parts, minus the number of data parts. A chunk kept in more than one format at a time takes the highest of these results. Internally, the value is stored as one more than the level (the goal equivalent). The presentation subtracts one before printing RL.

Each chunk has two current levels. The first counts every valid copy and part. The second leaves out the copies and parts on disks marked for removal. In an instance that uses locations PRO (PRO Edition only), the Master Server keeps both levels separately for each location.

You see the value in two places. The chunk matrix table, on the Info tab of the GUI and of mfscli, counts chunks by target and current level. mfscheckfile prints the current level of the chunks of one file.

  • Copy: the redundancy format whose level is the number of copies minus one.
  • Erasure Coding: the redundancy format whose level is the number of parity parts.
  • Storage Class: where the target level of a chunk comes from.
  • Chunk: the object a Redundancy Level applies to.