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

Robin Dong robin.k.dong at gmail.com
Fri Nov 1 11:23:56 CET 2013


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.

v3 --> v4 changes:
	1. let hyper volume work with object cache
	2. let hyper volume work with vdi_list vdi_check
	3. let all test case pass
	4. add new test case for hyper volume

v2 --> v3 changes:
	1. move "btree_counter" after inode->child_vdi_id[]
	2. add new interface to write inode meta data
	3. change the names of some MACRO

v1 --> v2 changes:
	1. fix the problem of create 16PB vdi and mkfs.xfs
	2. add comment and illustration to explain how B-tree works

Thanks,
Robin Dong



More information about the sheepdog mailing list