1. A storage system coupled to a plurality of host computers, comprising: a non-volatile medium that stores data; a disk cache that temporarily stores data stored in the non-volatile medium and includes a plurality of segments which are allocated to a plurality of disk cache partitions; a control unit that controls an input and an output of data to and from the non-volatile medium; and a memory unit that stores information used by the control unit, wherein: the control unit provides a first disk cache partition to a first host computer and a second disk cache partition to a second host computer, wherein the memory unit stores: a first information including a track information to indicate where the data is stored in the non-volatile medium and segment information to indicate segments where the data corresponding to the track information is stored in the disk cache, in a case where the disk cache temporarily stores the data, a second information indicating the number of cache partitions to which each of the segments is allocated, wherein the control unit handles a read command from the first host computer, and in a case where read data corresponded to the read command is found to exist in the disk cache is determined, and subsequently where read data corresponded to the read command is found to exist in a segment which is allocated to first disk cache partition provided to the first host computer is determined, the control unit reads the data corresponded to the read command from the found segment; in a case where read data corresponded to the read command is found to exist in a segment which is not allocated to the first disk cache partition provided to the first host computer and is allocated to the second disk cache partition provided to the second host computer, and if the first disk cache partition has free capacity to allocate the found segment, the control unit co-allocates the found segment to the first disk cache partition so that the found segment is co-allocated to both the first disk cache partition and the second disk cache partition, wherein the found segment is not duplicated in the disk cache, and reads the data corresponded to the read command from the found segment, and in a case where read data corresponded to the read command is found to exist in the disk cache is determined, and subsequently where read data corresponded to the read command is found to exist in a segment which is not allocated to the first disk cache partition provided to the first host computer and is allocated to the second disk cache partition provided to the second host computer is determined, and if the first disk cache partition does not have free capacity to allocate the found segment, the control unit obtains a segment allocated to the first disk cache partition, and deletes allocation of the obtained segment to the first disk cache partition, and then co-allocates the found segment to the first disk cache partition so that the found segment is co-allocated to both the first disk cache partition and the second disk cache partition, wherein the found segment is not duplicated in the disk cache, and reads the data corresponded to the read command from the found segment, and wherein if the obtained segment is allocated to one disk cache partition by referring to the second information, the control unit sets the obtained segment as a free segment.