Abstract
In this thesis we propose the KPS system, a kernel-based programmable storage system that provides a cross node block-level storage virtualization framework. KPS system allows (i) administrator to remap block level storage resource with simple interface and (ii) apply versatile manageablilty to underling storage without user interruption. The system internal design focus on supporting (i) flexible and scalable resource pooling and remapping mechanism, (ii) seamless combination of data network transmission and block level virtualize functions and (iii) online data migration and replication abilities. To this end, we design the KPS system with highly modularization consideration that divides kernel module into four major component group targets on (i) IO redirection decision, (ii) data synchronization, (iii) local disk IO operation and (iv) remote disk IO operation. Each group is further broken down into numbers of implementation modules, that concentrate on atomic and unique tasks while complying an asynchronous access model proposed and widely adapted by modern operation system, and finally collaborate with each other to achieve various storage system requirements. To demonstrate the effectiveness of our approach we evaluate the KPS system in two ways: (i) We examine the scalability of system throughput by the pure sequential raw disk IO and then run a popular file level benchmark Bonnie++ after building two filesystems on KPS system to make experiment scenario more realistic. (ii) We show the efficiency of online migration module by running all four migration location combinations with various chunks size spread widely. Finally, we find out KPS system performs linear speedup with respective to the amount of resources in used. And we make online migration to achieve constant performance behavior as well.