I had the thought of using the FUSE approach for something like this (basically MLVFS in reverse). Mainly so I could test really large files without actually needing a lot of physical storage. It would be good for benchmarking too since there would be no dependence on read speed (the actual data would be synthetic). Never had time to implement it though.