[sheepdog] [PATCH v6 0/9] replace structure of inode->data_vdi_id[] from array to b-tree

Liu Yuan namei.unix at gmail.com
Mon Nov 11 08:35:22 CET 2013


On Mon, Nov 11, 2013 at 02:55:26PM +0800, Robin Dong wrote:
> Hi all,
> 
> The size of vdi can only reach 4TB beacause the inode->data_vdi_id[] can only
> support 1 million objects. But 4TB is too small for storage application
> such as NAS and cloud-disk therefore we need to change the array of 'data_vdi_id' to
> b-tree.
> 
> This patchset add B-tree structure into sd_inode. It support just two levels
> (one root-node and many leaf-nodes) and after this the size of vdi could reach about
> (4MB / sizeof(sd_extent_header) * (4MB / sizeof(sd_extent)) * 4MB which is about 680PB
> in theory.
> 
> Currently the vdi size can raise to 16PB because the size of oid is just 32-bits, but
> it is certainly enough for many storage requirement.
> 
> v5 --> v6 changes:
> 	1. add delete_one() support for hyper volume
> 	2. add fill_object_tree() support for hyper volume
> 

I did following test:

yliu at ubuntu-precise:~/sheepdog$ dog/dog vdi create -b test 10P
yliu at ubuntu-precise:~/sheepdog$ echo hello | dog/dog vdi write test 9P 512
yliu at ubuntu-precise:~/sheepdog$ dog/dog vdi check test
100.0 % [===================================================================================================] 10 PB / 10 PB      
no node has 7c2b2590000000
yliu at ubuntu-precise:~/sheepdog$ vim test.sh
yliu at ubuntu-precise:~/sheepdog$ ls store/*/obj/
store/0/obj/:

store/1/obj/:

store/2/obj/:
807c2b2500000000

store/3/obj/:

store/4/obj/:
807c2b2500000000

store/5/obj/:
ffffffff90000000

store/6/obj/:
ffffffff90000000

It seems something wrong with the hyper volume indexing.

Thanks
Yuan



More information about the sheepdog mailing list