Re: Cloud tiering thoughts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 18, 2018 at 2:55 PM Robin H. Johnson <robbat2@xxxxxxxxxx> wrote:
>
> On Tue, Oct 16, 2018 at 06:08:10PM -0700, Yehuda Sadeh-Weinraub wrote:
> > Here are my current thoughts about tiering, and also specifically
> > about cloud tiering.
> >
> > 1. Storage-classes
> >
> > Previously a placement target would be mapped into a set of rados
> > pools (index, data, extra), whereas now placement targets will add
> > storage classes (S3 uses these). Object placement will be defined by
> > the placement target, and the storage class.
> ...
> > We should probably make it so that when head and tail are being placed
> > on different placement targets, the head will not contain any data,
> > other than the object’s metadata.
>
> This ties into work I was hoping to have time in Q4 to work on.
>
> Right now, with erasure-coded pools, access to the metadata is very
> slow, esp. for metadata-write workloads.
>
> At the risk of having more objects, I was wondering about a full split
> of:
> (metadata)
> (head)
> (tails)
> Each of which might be a different pool, depending on user workload.
>
> Example policy I had in mind:
> 1. Metadata goes to replicated SSD pool.
> 2. (N) 4KB Head goes to EC SSD pool. N should be configurable.
> 3. Tails go to EC spinner pool.
>
> These would be pools/targets selected based on the storage class.
>
> Zero-byte files wind up (metadata)-only.
> Tiny files implicitly wind up with just (metadata)(head).  Large files
> wind up spread over all 3.
>

What you're asking for is actually a split tail, right? The only thing
special about the head is its metadata (that includes its manifest),
so without it it's just data. Unless you were thinking of splitting
the manifest out?
At the moment all parts of the tail need to be located at the same
placement target. I can see a couple of options here:
1. Extend the manifest by adding placement_target to each manifest
part, and modify object construction so that it creates new parts when
needed (and update iteration so that it doesn't assume a single
placement target for tail).
2. Extend placement target config so that it can have a list of
<offset, dest>. Then need to update the code that maps from rgw_obj +
placement_target to rgw_raw_obj to also include offset (and max size).

Yehuda



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux