[prev in list] [next in list] [prev in thread] [next in thread]
List: lustre-devel
Subject: [Lustre-devel] changelog for whole filesystem?
From: eeb () whamcloud ! com (Eric Barton)
Date: 2010-10-29 16:50:02
Message-ID: 022a01cb7789$55cc7a40$01656ec0$ () com
[Download RAW message or body]
Andreas, Thomas,
I _do_ like the idea of opening the changelog to see changes either
"from now" or "from empty". But I think the idea needs to worked
out fully to support multiple changelog consumers - e.g. how to keep
multiple placeholders in the object enumeration so that changes to
objects yet to be enumerated for a particular consumer are not queued
to that consumer. As ever, I'm concerned that what looks like "low
hanging fruit" now later turns into technical debt later.
Cheers,
Eric
> -----Original Message-----
> From: lustre-devel-bounces at lists.lustre.org [mailto:lustre-devel-bounces at \
> lists.lustre.org] On Behalf Of LEIBOVICI Thomas
> Sent: 28 October 2010 6:43 AM
> To: Andreas Dilger
> Cc: lustre-hsm-core-ext at Sun.COM; lustre-devel at lists.lustre.org List
> Subject: Re: [Lustre-devel] changelog for whole filesystem?
>
> Andreas Dilger wrote:
> > On 2010-10-27, at 23:28, LEIBOVICI Thomas <thomas.leibovici at cea.fr> wrote:
> >
> > > Would this special log have the same record structure as current changelogs, or \
> > > a different
> structure with more information?
> > > Depending on how this iterator works, maybe we can avoid RPCs (for stat, \
> > > fid2path, get_stripe,
> hsm_state_get...) if this info is available when the log record is generated.
> > >
> >
> > My thought was to use the same format for the changelog so that it would be easy \
> > to use the same API
> to use the "whole filesystem" traversal log and then transfer over to the standard \
> "changes only" changelog. In fact, it might make sense to make this atomic so that \
> this is a flag on a regular changelog open, and it will continue after the \
> traversal is completed to the changelog for any changes that happened since the \
> traversal started.
> >
> OK, I got it. So the idea is to have a switch in the policy engine that
> would be:
> - if it starts for the first time => open the changelog with a special
> flag to get all entries + changes in the meanwhile
> - else => open the changelog as usual
>
> "any changes that happened since the traversal started"
>
> A couple of comments about that:
> - With the current implementation, the ChangeLog transaction management starts \
> after the "changelog_register" on MDT,
> then the log records start accumulating on MDT until they are read and acknowledged \
> by the consummer. So, reporting only the "changes that happened since the traversal \
> started" implies to voluntarily forget previous records
> that were waiting to be read.
> - if changes occur during the scan: do we skip/ignore records for entries that have \
> not been listed yet?
> - If we want to make the "scan log" restartable from the last read entry, the \
> client should be able to reopen the log
> by giving the last record id in argument and continue the scan and/or the standard \
> log records where it stopped.
> So merging the 2 log streams (scan and standard changelog) may imply a common \
> record id management.
> Distinguishing the two kind of logs depending on open flag makes it possible
> to manage log record index and scan record index separately, which would simplify \
> the implementation: the record index for "scan log" will be something like the \
> inode-number order, and the log consummer can use this index for restarting an \
> aborted scan.
> Once the changelog consummer is registered on MDT, we are sure not to miss any \
> change that occurs on the filesystem.
> So, for initializing the HSM policy engine DB, we can proceed the following way:
> 1) register a changelog consummer on MDT
> 2) open and process the "scan log"
> 3) open and process the standard changelog records that are accumlated since step \
> 1) we are sure to know all entries in filesystem after those 3 steps.
> Policy engine can actually perform 3) at any time. The only contain is to have step \
> 1) before step 2).
> Thomas.
>
> _______________________________________________
> Lustre-devel mailing list
> Lustre-devel at lists.lustre.org
> http://lists.lustre.org/mailman/listinfo/lustre-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic