With the emergence of public cloud storage platforms like Amazon, Microsoft and Google etc, individual applications and some enterprise storage are being increasingly deployed on Clouds. However, dynamic data sharing in public clouds face problems of low performance and lack of SLA guarantees. We propose a middleware called mCloud between the Cloud storage and clients to provide data sharing services with better performance and SLA satisfaction. Technologies including virtualization, chunking, and caching, are integrated into mCloud. Experiential results based on Amazon Web Services (AWS) have shown that mCloud is able to improve shared IO performance in term of aggregate IO throughput and help provide better SLAs for cloud storage.