On Tue, Jan 12, 2016 at 12:09 PM, Josh Durgin <jdur...@redhat.com> wrote:

> On 01/12/2016 06:10 AM, Alex Gorbachev wrote:
>
>> Good day!  I am working on a robust backup script for RBD and ran into a
>> need to reliably determine start and end snapshots for differential
>> exports (done with rbd export-diff).
>>
>> I can clearly see these if dumping the ASCII header of the export file,
>> e.g.:
>>
>> iss@lab2-b1:/data/volume1$ strings
>> exp-tst1-spin1-sctst1-0111-174938-2016-cons-thin.scexp|head -3
>> rbd diff v1
>> auto-0111-083856-2016-tst1t
>> auto-0111-174856-2016-tst1s
>>
>> It appears that "auto-0111-083856-2016-tst1" is the start snapshot
>> (followed by t) and "auto-0111-174856-2016-tst1" is the end snapshot
>> (followed by s).
>>
>> Is this the best way to determine snapshots and are letters "s" and "t"
>> going to stay the same?
>>
>
> The format won't change in an incompatible way, so we won't use those
> fields for other purposes, but 'strings | head -3' might not always
> work if we add fields or have longer strings later.
>
> The format is documented here:
>
> http://docs.ceph.com/docs/master/dev/rbd-diff/
>
> It'd be more reliable if you decoded it by unpacking the diff with
> your language of choice (e.g. using
> https://docs.python.org/2/library/struct.html for python.)
>
> Josh
>

Thanks Josh.  I implemented in Perl as:

my $buffer = 4096; # read first 4KB
open(FILE,'<',"$file");
sysread(FILE,$data,$buffer);
@str = unpack("A12 a1 L/A* a1 L/A* a1 Q",$data);

This assumes that the first characted line "rbd diff v1\n” is always 12
bytes long

Best regards,
Alex
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to