Sometime back I noticed this news item on The Register: FastScale puts VMware on a diet. This talks about a startup that has essentially taken thin provisioning to the next level. It is able to prepare super-thin application and OS images containing only the bits that are needed to run a particular service and strip out all other general purpose components. The claim is that they can thin down typical installations from GBs down to MBs. Quite interesting indeed. The product does quite a bit of clever stuff including managing provisioning etc.
Getting more and more interested in the Storage side of things in recent times, this caused me to ponder a bit on how they can be achieving their core goal namely deliver thin application/OS images and save on storage. Rambling about for a while I began to think about the SUN StorageTek Availability Suite and it’s Compact Dependent Shadow Volume feature. Normally this allows one to take a point-in-time copy of a master volume and create a child volume that references a copy. Since it is a dependent volume an actual physical copy over to the child volume is not made. Blocks are fetched on demand from the child. The master keeps a note of the blocks and copies over blocks only if they are changed in the master.
In addition resynchronization of the child to a modified master is also possible.
Now lets consider a small change to this approach. Why not make local physical copies of blocks to the child as and when they are accessed and subsequently use the locally copied blocks. One will end up copying only the bits that are absolutely needed for the task at hand – Copy-On-Read. So we get the core behavior similar to what the Fastscale folks are up to. Avoid the penalty of remote access for needed blocks and reduce storage requirements. This obviously is very basic sparse behavior and is suited to read-only application files. Extending this to entire OS images is more work and will need the ability to boot OpenSolaris from AVS volumes.
I am going to mess around with the shadow volume code shortly – one way I am going to get my hands dirty with AVS. I have been wanting to play around with the stuff for a while now. The filter driver framework is very interesting.