Using storage classes to dynamically provision persistent volumes