Project

General

Profile

Actions

Feature #3064

closed

librbd: A way to read from nearby replicas

Added by Anonymous over 11 years ago. Updated almost 11 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

In the style of CEPH_OSD_FLAG_LOCALIZE_READS, there are cases when an rbd image is stored in a pool where some of the replicas are closer than the others. That flag only does exact match to current host, it has no other metric of locality.

It would nice if a librados/librbd user could either:

- configure the client's location in terms of crush hierarchy (e.g. dc=us-west)
OR
- configure a list of IP subnets that are considered "close"

These could even go in ceph.conf / libvirt rbd disk entry. "client location = dc:us-west" would match the syntax I've been playing with for OSDs to know what crush location to set at bootup. (Colon because I wanted to avoid "client_location=dc=us-west" confusion.)

I personally prefer the first one, because it isolates the client from knowing internal deployment details of the cluster. I don't know if the crush information would be available

And then, a flag in the api could actually enable reading from replicas; as it loosens the integrity guarantees, it should not be the default, or set for all clients in ceph.conf.

librbd could set the above flag by default for images that are marked "protected" (in the CoW sense), as those are known not to change.

Actions

Also available in: Atom PDF