Août 122018

The scality’s RING product is a distributed storage solution, which manages different replication and erasure coding security. –

1. What is a keyspace in the Scality RING

A RING keyspace is a circle starting at 00, ending at FF.

in reality, the numbers are not just 2 character long but 40 characters.

A keyspace is composed of node keyranges.

A keyrange is a space between a key on the keyspace, and the predecessor key.

2. How is computed a keyspace

The resiliency is computed through several constraints:

  • number of datacenters
  • number of rack/bay
  • number of server per rack
  • number of diskgroup
  • number of software process per server
  • number (and size) of disks per server

based on these constraints, the product can guarantees that you do can loose one several elements without loosing any data nor access.

of course you may a small environment with only 3 servers in the same datacenter, with maybe 4 disks per server for example.

The RING parallels operations to the disks, the more disks you have, the more performances you’ll get – ie. more iops.

to manage the resiliency of your datas written on the RING, several node processes run on the servers. the default is 6 node processes per server.

3. CoS and Schema

2 different securities exist in the RING:

1. CoS: it is a replication protocol.

You can use CoS0 to CoS5.
CoS2 for example is the original data you send + 2 copies
It is usually a schema 6

2. ARC (Erasure Coding): is a split + parity protocol.

You have several ARC securities available, ARC4+2, ARC8+4, ARC9+3, ARC5+7, etcc.
The first number is the number of parts (data) your object will be split.
The second number is the parity (coding) element added to your data.
You can loose up to the number of parity elements.

What is important, is the schema used.

In ARC4+2, the schema is 6.
In ARC9+3, the schema is 12

4. Keyspace visualizer

The keyspace visualizer is available here:

Through the ringsh command (located on the Scality’s supervisor), you can generate the ringsh.txt used to put in the keyspace visualizer:

ringsh supervisor ringStatus DATA |grep Node: |awk '{split($3,n,":");printf("supervisor nodeAssignId ring %s %s %s\n", n[1], n[2], $4)}'

5. Source code

If you ever want to contribute and improve this tool:

 Laisser un commentaire

Vous pouvez utiliser ces tags et attributs HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>



Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.