A method for scheduling an I/O request to a rotating storage disk which is to follow a first I/O request to the rotating storage disk, the rotating storage disk comprising a plurality of tracks, each track comprising a plurality of sectors, a given sector addressed by a host computer using a logical block address, wherein the plurality of sectors for a given track have consecutively numbered logical block addresses starting from a first logical block address for the given track, wherein the first I/O request specifies a source logical block address, the method comprising the steps of:
- looking up a first rotational time estimate for the source logical block address from a table of rotational time estimates accessed by logical block address number, each entry in the table of rotational time estimates having a value not more than one rotational time of the disk;
- for a second I/O request, looking up a second rotational time estimate for the destination logical block address from the table of rotational time estimates;
- estimating radial distance between a first track having the source logical block address and a second track having the destination logical block address based upon the source logical block address and the destination logical block address;
- looking up a head movement time estimate corresponding to the calculated radial distance in a head movement time estimate table;
- deriving the estimated access time for the first I/O request from the first rotational time estimate, second rotational time estimate and head movement time estimate;
- repeating the steps of looking up the second rotational time estimate, estimating the radial distance, looking up the head movement time estimate and deriving the estimated access time for at least one other I/O request, wherein for each repetition the destination logical block address is determined by the I/O request corresponding to the repeated steps;
- and
- scheduling one I/O request of the second I/O request and said at least one other I/O request to follow the first I/O request.