Please clarify ... each moodle site (lms, gp, itsaf - maybe others you've not mentioned) has a *separate* moodledata directory.
In the config.php file for lms, as an example, has $CFG->dataroot variable pointed to a unique data directory for the lms site.
Is that correct?
OR ... do all sites have their $CFG->dataroot variable pointed to the *same* /var/moodledata/ directory?
If the case is the latter (the OR above), that's the problem and error report you are seeing.
Each Moodle site must have it's own (unique, not shared) moodledata directory.
The contenthash calculation that each Moodle instance uses is unique to the site and won't match the contenthash calculation that another instance of Moodle would calculate, even if on same host.
What you are seeking is what sounds to be 'fail-over'. That's a totally different situation. If the entire server fails, for some reason, you'd have to have another IP addressed server that has rsynced the entire web root + data directories + databases for each site. Only change to DNS and firewalls would be needed to 'cutover' to the 'backup' server. It would not be instant. DNS changes take time to propagate (ie, get out to other DNS servers).
IF, however, it's just one Moodle instance that fails, that changes the picture and how one goes about 'fail-over'. IF this is what is desired, each site could rsync code directory, data directory, and database by a slightly different name, to other directories on the server. Apache config would then need to have changes made so that access to say the failed gp site points to it's rsync'd directory. The one file that shouldn't be rsync'd every time rsync runs is config.php cause it would have paths, db, etc. pointing to the 'cloned' code, data directory, and database by a slightly different name.
The above is a basic idea.
'spirit of sharing', Ken