At Fri, 26 Nov 2010 14:47:09 +0530,
Narendra Prasad Madanapalli wrote:
>
> Hi,
>
> I am trying to understand how sheepdog volumes are strored and what
> data structures are used for storage.
>
> Sheepdog inode is declared in include/sheepdog_proto.h
>
Here is the explanation of fields of this structure.
> struct sheepdog_inode {
> char name[SD_MAX_VDI_LEN];
name of this vdi
> char tag[SD_MAX_VDI_TAG_LEN];
snapshot tag
If this vdi is not snapshot, tag should be filled with zero.
> uint64_t ctime;
time this vdi is created
> uint64_t snap_ctime;
time this vdi is snapshotted
If this vdi is not snapshot, snap_ctime should be zero.
> uint64_t vm_clock_nsec;
vm clock relative to boot
This is used to store live snapshot information.
> uint64_t vdi_size;
size of this vdi
> uint64_t vm_state_size;
vm state info size
This is used to store live snapshot information.
> uint16_t copy_policy;
policy to replicate objects
This is reserved for future use.
> uint8_t nr_copies;
the number of redundancy
> uint8_t block_size_shift;
number to calculate data object size
The size of the data object is (1 << block_size_shift).
> uint32_t snap_id;
snapshot id of this vdi
> uint32_t vdi_id;
vdi id of this vdi
> uint32_t parent_vdi_id;
vdi id of the parent vdi
> uint32_t child_vdi_id[MAX_CHILDREN];
vdi ids of the children vdis
You can see a snapshot tree with 'collie vdi tree'.
> uint32_t data_vdi_id[MAX_DATA_OBJS];
list of vdi id which is used to calculate data object id
> };
>
> And the function create_vdi_obj() (in sheep/vdi.c) creates vdi object.
> This function defines three static variables new, base, cur of type
> 'struct sheepdog_inode'
>
> Can anyone point to me the documentation on the above structure and variables?
'new', 'base', and 'cur' variables store the vdi info of the following:
new: vdi which is created in the function
base: base vdi (used when cloning volumes)
cur: current vdi (this vdi will become the snapshot vdi)
> Where super object is stored and the other inodes are linked with super object?
We don't use a super object now. Sheepdog gathers vdi info from all
nodes when it starts, so there is no object to store all vdis info.
Thanks,
Kazutaka
|
|