That will be down to the pool the rbd was in, the crush rule for that pool
will dictate which osd's store objects. In a standard config that rbd will
likely have objects on every osd in your cluster.

On 8 Aug 2016 9:51 a.m., "Georgios Dimitrakakis" <gior...@acmac.uoc.gr>
wrote:

> Hi,
>>
>>
>> On 08.08.2016 09:58, Georgios Dimitrakakis wrote:
>>
>>> Dear all,
>>>
>>> I would like your help with an emergency issue but first let me describe
>>> our environment.
>>>
>>> Our environment consists of 2OSD nodes with 10x 2TB HDDs each and 3MON
>>> nodes (2 of them are the OSD nodes as well) all with ceph version 0.80.9
>>> (b5a67f0e1d15385bc0d60a6da6e7fc810bde6047)
>>>
>>> This environment provides RBD volumes to an OpenStack Icehouse
>>> installation.
>>>
>>> Although not a state of the art environment is working well and within
>>> our expectations.
>>>
>>> The issue now is that one of our users accidentally deleted one of the
>>> volumes without keeping its data first!
>>>
>>> Is there any way (since the data are considered critical and very
>>> important) to recover them from CEPH?
>>>
>>
>> Short answer: no
>>
>> Long answer: no, but....
>>
>> Consider the way Ceph stores data... each RBD is striped into chunks
>> (RADOS objects with 4MB size by default); the chunks are distributed
>> among the OSDs with the configured number of replicates (probably two
>> in your case since you use 2 OSD hosts). RBD uses thin provisioning,
>> so chunks are allocated upon first write access.
>> If an RBD is deleted all of its chunks are deleted on the
>> corresponding OSDs. If you want to recover a deleted RBD, you need to
>> recover all individual chunks. Whether this is possible depends on
>> your filesystem and whether the space of a former chunk is already
>> assigned to other RADOS objects. The RADOS object names are composed
>> of the RBD name and the offset position of the chunk, so if an
>> undelete mechanism exists for the OSDs' filesystem, you have to be
>> able to recover file by their filename, otherwise you might end up
>> mixing the content of various deleted RBDs. Due to the thin
>> provisioning there might be some chunks missing (e.g. never allocated
>> before).
>>
>> Given the fact that
>> - you probably use XFS on the OSDs since it is the preferred
>> filesystem for OSDs (there is RDR-XFS, but I've never had to use it)
>> - you would need to stop the complete ceph cluster (recovery tools do
>> not work on mounted filesystems)
>> - your cluster has been in use after the RBD was deleted and thus
>> parts of its former space might already have been overwritten
>> (replication might help you here, since there are two OSDs to try)
>> - XFS undelete does not work well on fragmented files (and OSDs tend
>> to introduce fragmentation...)
>>
>> the answer is no, since it might not be feasible and the chance of
>> success are way too low.
>>
>> If you want to spend time on it I would propose the stop the ceph
>> cluster as soon as possible, create copies of all involved OSDs, start
>> the cluster again and attempt the recovery on the copies.
>>
>> Regards,
>> Burkhard
>>
>
> Hi! Thanks for the info...I understand that this is a very difficult and
> probably not feasible task but in case I need to try a recovery what other
> info should I need? Can I somehow find out on which OSDs the specific data
> were stored and minimize my search there?
> Any ideas on how should I proceed?
>
>
> Best,
>
> G.
> _______________________________________________
> ceph-users mailing list
> ceph-users@lists.ceph.com
> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
>
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to