Persisting and loading details from one xml is fine if the no:of cores are small and the no:of cores are few/fixed . If there are 10's of thousands of cores in a single box adding a new core (with persistent=true) becomes very expensive because every core creation has to write this huge xml.
Moreover , there is a good chance that the file gets corrupted and all the cores become unusable . In that case I would prefer it to be stored in a centralized DB which is backed up/replicated and all the information is available in a centralized location.
We may need to refactor CoreContainer to have a pluggable implementation which can load/persist the details . The default implementation should write/read from/to solr.xml . And the class should be pluggable as follows in solr.xml
There will be a new interface (or abstract class ) called SolrDataProvider which this class must implement