1. A method for data storage, comprising: in a system that comprises one or more storage controllers, multiple servers and multiple storage devices that communicate over a network, running user applications on the servers; storing, in a memory of the one or more storage controllers, a data structure, which (i) represents thinly-provisioned user volumes used by the servers in storing data on the storage devices, and (ii) specifies for the user volumes a logical-to-physical mapping between logical addresses and physical addresses of the storage devices; generating, in a given server that is configured to run one or more of the user applications, storage commands that access one or more of the user volumes, by performing in the given server: (i) retrieving at least a part of the logical-to-physical mapping from the memory of the one or more storage controllers to the given server, using direct remote access to the memory of the one or more storage controllers and without executing code on the one or more storage controllers; (ii) translating the logical addresses accessed by the storage commands into the respective physical addresses, using the retrieved at least part of the logical-to-physical mapping; and (iii) generating the storage commands that specify the translated physical addresses; and sending the storage commands, which specify the physical addresses, from the given server that is configured to run the one or more of the user applications directly to one or more of the storage devices, without executing code on the one or more storage controllers.