Virtual Disk aka Vdisk


What is Vdisk or Virtual Disk?
Well Vdisk is set of tools and others, to allow you create a "Virtual Disk" with a capacity of 2^64 Bytes. In order to achieve this, Vdisk have to have a set of Disks on same or remote machine. Of course you can only write so much data you Disks capacity have, but comparing other tools, you don't have to recreate or resize the filesystem, when adding more disks to it.

How work some thing like this ?
What vdisk does, is create a mapping tables per "Volume", very simular to page table on the CPU's mmu. This table is an 4 level mapping table, where the first 3 level only points the next level of the table. The last table points to the effective disk and the effective disk block.
Every of those table have 4096 entries or from a 64 bit value, we cut 12 bits as an index in the table. Doing this 4 times, give us 48 bits using for mapping the rest or 64-48=16 bit are the block size of the internal vdisk block represantation. Back to the mapping tables, as I mentioned, there are 4096 entries in each table. Every entry points to a particular block on a disk. So currenty there are two field pointing to a Disk and Block on this Disk ( each 32bit or 4 bytes). This give us 4096* ( 2*4)=32768 Bytes for every table. Well, this only half of the block we are using, but remember, we also like to add some features to it. So those are reserved for future us.( such as copy on write and others)

All table activities are highly cached, to avoid lossing to much time doing reading /writing on the map tables. From test on Linux and Solaris, 50MB/s are easly possible. One side effect of the Vdisk, all data are spreaded on all available disks. ( was it Raid 0 Hmmmm..)

Hope this helps a bit, otherwise drop a mail ;) HERE
Ohh, Don't use it yet for any production. Because my limited time, it's still very alpha, may be not even that. But The concept on it's self works fine;).