[FRsAG] Baisser le cout du stockage - grosse volumétries

Francois Lafont francois.lafont.1978 at gmail.com
Mar 10 Oct 23:51:23 CEST 2017


On 10/10/2017 10:34 PM, frsag at jack.fr.eu.org wrote:

> Si tu as 3 disques dur, et 2 SSD, un size = 3 et min_size = 2, et une
> map cohérente, l'écriture va se faire sur les 2 SSD et sur un disque dur

On peut en effet cibler les OSDs (les disques) pour un pool donné avec
la CRUSH map, ça on est d'accord.


> Lorsque deux écritures seront validés, l'IO sera valider
> 
> Une timeline:
> t: début de l'IO
> t + 1: écriture sous-jacente sur SSD1, SSD2 et HDD1
> t + 2: SSD1 ack, SSD2 ack, HDD1 travaille encore, l'IO est validé au client

Pas d'accord sur ce dernier point (t+2). Le min_size ne signifie pas
que l'IO sera acquitté au bout de <min_size> acks sur les OSDs (ie les
disques pour être clair). Ceci est faux à mon humble avis.

Pour moi, ton client ne sera acquitté de l'IO _que_ lorsque tu auras
un ack de SSD1, SSD2 _et_ _aussi_ de HDD1, pas avant.

> t + 3: HDD1 ack (mais à ce niveau, le client est déjà parti, ce n'est
> plus que de la réplication)
> 
> Autrement dit, dans ce cas, tes performances en écriture sont
> directement relié à tes min_size OSD les plus performants

Pour moi c'est une « légende urbaine » sur le paramètre min_size.

Regarde le schéma juste au _dessus_ de ce lien :
http://docs.ceph.com/docs/master/architecture/#dynamic-cluster-management

Tu pourras constater que le ack envoyé au client se produit seulement
une fois l'écriture faite les 3 OSDs (l'OSD primaire, celui avec qui
le client est en contact direct, et les OSDs secondaires).

« The client writes the object to the identified placement group in the
primary OSD. Then, the primary OSD with its own copy of the CRUSH map
identifies the secondary and tertiary OSDs for replication purposes,
and replicates the object to the appropriate placement groups in the
secondary and tertiary OSDs (as many OSDs as additional replicas), and
responds to the client once it has confirmed the object was stored
successfully. »

Le paramètre min_size ne change rien à cela. Comme je disais dans mon
message précédent, il t'assure seulement qu'en mode dégradé (ie quand
tous les OSDs ne sont pas UP) aucune écriture ne sera possible s'il
n'y a pas au moins <min_size> ODS(s) UP. C'est tout.

-- 
François Lafont


Plus d'informations sur la liste de diffusion FRsAG