Grid data sharing systems usually provide a data-intensive application with either a prestaging mechanism or an on-demand access mechanism to access shared data. Prestaging systems simultaneously download an entire shared file from multiple data sources even when only a tiny file fragment is required. Such systems consume unnecessary data transmission time and storage space. On demand access systems, on the other hand, download only the required fragments from a single data source. Such systems unfortunately do not fully exploit available network bandwidth. This paper presents a data sharing system, designated as the on demand data coallocation (ODCA). ODCA facilitates an unmodified legacy applications to transparently access shared data by using native I/O system calls. ODCA transfers only the necessary fragments on user demand, thereby reducing data transmission time, avoiding wasted network bandwidth and wasted storage space. Moreover, ODCA reduces data waiting time by downloading the file fragments from multiple data sources. Experimental results show ODCA successfully reduces turnaround time in data-intensive applications.