1. A data processing apparatus, comprising: a metadata store storing information about files that are stored in a distributed data storage system, and comprising a class database; one or more processing units; logic coupled to the processing unit(s) and to the metadata store and comprising stored sequences of instructions which, when executed by the processing unit(s), cause: receiving and storing in the class database a definition of a class of data storage servers comprising one or more subclasses each comprising one or more server selection criteria; associating the class with one or more directories of the data storage system; in response to a data client storing a data file in a directory of the one or more directories, binding the class to the data file, determining and storing a set of identifiers of one or more data storage servers in the system that match the server selection criteria, and providing the set of identifiers to the data client; wherein the set of identifiers identify one or more data storage servers for storing the data file; and automatically storing the data file on one or more first data storage servers that are identified in the set of identifiers.