The scality’s RING product is a distributed storage solution, which manages different replication and erasure coding security. – https://www.scality.com/
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.
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.
CoS and Schema
2 different securities exist in the RING:
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
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
Keyspace visualizer
The keyspace visualizer is available here: www.mobidyc.net/keyspace-visualizer
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)}'
Source code
If you ever want to contribute and improve this tool: https://gitlab.com/mobidyc/keyspace-visualizer/