Patent ID: 8239589

Claim:
A computer-implemented method of managing input/output (I/O) requests for a block storage device, comprising: under control of one or more computer systems configured with executable instructions, receiving an I/O request for a block storage device at a data server, the data server configured to forward requests to the block storage device, the data server storing, in a request queue, previously received I/O requests, in a determined request order, that have not yet been sent to the block storage device; determining a request order position for the received I/O request in the request queue by: when the received I/O request is a sequential request with respect to a request pending on the block storage device, placing the sequential request at the top of the request order in the request queue; when the received I/O request is a random write request, placing the received I/O request at the bottom of the request order in the request queue; and when the received I/O request is a random read request, placing the received I/O request above at least a portion of the random write requests in the request order in the request queue; and when the received I/O request is a top ordered request in the request order: forwarding the received I/O request to the block storage device when the received I/O request is a sequential request with respect to a request pending on the block storage device; and when the received I/O request is a random request, forwarding the received I/O request to the block storage device when there are no buffered requests on the block storage device.