A method, system, and language to express storage requirements. The
language provides keywords and rules corresponding to commands for
configuring a set of storage devices to provide requested capabilities of
a logical volume. The language also has keywords and constructs for
defining capabilities. The language supports direct inheritance of a
capability, where a template specifies another template that contains
rules to be used to provide a given capability. The language also
supports indirect inheritance of a capability, where a template requires
a capability but does not provide an implementation of the capability. In
addition, the language is processed to "merge" rules by selecting a
single storage device that conforms to more than one rule when possible.
Merging rules enables a minimum number of storage devices to be used to
meet a given logical volume configuration and set of capabilities.