Mobile cloud storage (MCS) is being extensively used nowadays to provide data access services to various mobile platforms such as smart phones and tablets. For cross-platform mobile apps, MCS is a foundation for sharing and accessing user data as well as supporting seamless user experience in a mobile cloud computing environment. However, the mobile usage of smart phones or tablets is quite different from legacy desktop computers, in the sense that each user has his/her own mobile usage pattern. Therefore, it is challenging to design an efficient MCS that is optimized for individual users. In this paper, we investigate a distributed MCS system whose performance is optimized by exploiting the fine-grained context information of every mobile user. In this distributed system, lightweight storage servers are deployed pervasively, such that data can be stored closer to its user. We systematically optimize the data access efficiency of such a distributed MCS by exploiting three types of user context information: mobility pattern, network condition, and data access pattern. We propose two optimization formulations: a centralized one based on mixed-integer linear programming (MILP), and a distributed one based on stable matching. We then develop solutions to both formulations. Comprehensive simulations are performed to evaluate the effectiveness of the proposed solutions by comparing them against their counterparts under various network and context conditions.