The storage devices now can be connected to hosts, servers, Storage Area Networks (SANs) and Local/Wide-area Networks (LANs/WANs). This proliferation of device attachments leads to flexible deployment of storage and potential pooling and sharing of storage across multiple hosts and operating systems. However, native file systems, such as Windows NTFS or Linux Ext2, expect to have exclusive access to their storage volumes. In other words, each operating system reserves storage devices for its use, and the space in a storage device owned by one operating system cannot be used by another. This static allocation seriously hampers the sharing of storage space. This lack of flexibility also hampers "utility computing" models where users can be charged based on usage of resources. This lack of flexibility also limits the sharing of storage resources across different divisions of an organization.
This project plans to design and develop "virtual allocation" or "on-demand allocation" in storage systems. Virtual allocation will employ allocate-on-write policy i.e., storage space is allocated when the data is written. Such an approach separates the storage space allocation from the file system size and allows creation of virtual storage systems with many novel features. The project will explore architectural issues related to performance, device characteristics, locality and parallelism in employing virtual allocation. The project will investigate if virtual allocation can enable dynamic data redistribution or migration across shared networked storage devices in order to balance locality and load across changing workloads and usage patterns. The project will investigate if virtual allocation can enable power savings by pooling data onto a smaller number of devices at times of low demand.