Machine-level backup in SharePoint scenario
This topic has come out since I was responsible for providing backup and recovery solution for a medium SharePoint 2013 farm. The farm consists of 3 web front-end servers, 2 applications servers and a couple of database severs which are configured Failover Clustering.
Part of the backup process, many people would commonly perform a machine-level backup. This basically means everything including drives, file system, folder, system state or so on is backed up into a package. In their mind, if any of virtual machines goes down, they just simply need to restore a backup. In SharePoint scenario, this approach would be very risky even essentially things will be fully restored.
SharePoint stores its configuration in the hierarchical configuration store in the configuration database. This is synced to each machine in the farm by the configuration cache refresh timer job every 15 seconds. This process is to update file system cache, configuration cache or other things and let the configuration database know which servers belong to the farm. If you restore a machine with an out of sync cache you will have a potentially serious problem. The cache will update itself with a flush and repopulate but there will be a small time window of minutes where something could break. Another example of sync is crawling. Imagine you perform a backup in middle crawl, you will run the possibility of a search partition being out of sync when you restore a backup. Or even not during a crawl, you could just be making regular analytic processing updates and again restore one machine and index is out of sync.
There is no really an official documentation from Microsoft saying machine-level backup is supported in SharePoint scenario. In a single-server farm, machine-level backup may be well supported. For multi-server farm, this approach is supported for the farm in a fully stopped state. If you are to be required to back up your machine including operating system, the built-in Windows Server backup combining with some PowerShell scripts to create or join to a farm is a recommended best practice. I would like to thank Neil Hodgkinson, Wictor Wilen and other people for the valuable recommendations regarding my topic in MVP private forum.
Here are some helpful additional references:
- What is the SharePoint Configuration Cache?
- What Is a Configuration Cache and Why Do I Care About It?