Patent ID: 7464124

Claim:
A method for processing a request, comprising: for a data unit, storing one or more source blocks of the data unit and copies of the one or more source blocks of the data unit in different locations in storage systems of a Storage Area Network (SAN) aware file system, wherein the SAN aware file system includes file systems located at each of one or more client computers and at least one metadata server, wherein each client computer has near storage for storing the copies of the one or more source blocks of the data unit, wherein, for each client computer, the near storage is geographically closer than remote storage, wherein the one or more source blocks are in remote storage, and wherein each metadata server keeps track of locations of the source blocks and the copies; for each request to read the data unit, returning information regarding closest physical block locations, wherein the closest physical block locations are selected from physical block locations for the copies stored in the near storage and wherein the read is performed against one of the copies of the one or more source blocks of the data unit; for each request to write to the data unit, returning information regarding one or more source block locations stored in the remote storage, wherein the write is applied to the one or more source blocks of the data unit in the remote storage, wherein applying the write to the one or more source blocks of data enables additional copies of the source blocks of data to be consistent; and in response to applying the write to the one or more source blocks of the data unit in the remote storage, synchronously updating the copies of the one or more source blocks of the data unit in each near storage; and when a number of requests for the data unit exceed a threshold level and at least one quality of a service policy is not being met, locking access to the one or more source blocks of the data unit; notifying the client computers that access to the one or more source blocks of the data unit has been locked; and creating a copy of the one or more source blocks of the data unit at a location selected based on proximity to at least one client computer from which the number of requests are high, wherein the number of requests for the data unit represents frequency of access of the data unit; receiving the request for the data unit from a client computer referencing logical block locations, wherein the request is either the request to read or the request to write; determining locations of the one or more source blocks and the copies in the storage systems to which the client computer has access; creating a list of physical block locations for the determined locations from the logical block locations; finding closest physical block locations to the client computer, wherein the closest physical block locations are copy block locations.