Improved BMR Recovery: Mount the backup to a share for direct access
The process to recover DPM BMR backups is tedious and slow. Having to first restore the backup to a share/folder, then either physically attach that drive to the server or create a SMB share and share it, and finally boot into WinRE to recover from that backup is a drawn out process that requires twice the time that it should due to the extracting the backup and then restoring and a drive/storage location large enough to store the extracted backup.
This could be accomplished far faster and with minimal changes by having DPM mount the backup to a share and give read access to <x user/group> for restoring the data. This way you can use the same WinRE interface to map to that share to recover the data directly instead of the tedious middle step.
I've come up with a work around for this currently, which is:
(1) Use Mount-DPMRecoveryPoint to mount the recovery point you want
(2) Use psexec to open a system level powershell interface
(3) Get the path of the DPM mounted vhdx (get-disk | select location)
(3.1) The path should include the same GUID value from the first GUID under the "details" of the datasource (<DPMPath>\Volumes\Replica<GUID1><GUID2>)
(4) Create a temp VHDx using the VHDx found above as the parent and mount it to a drive letter.
(4.1) The temp VHDx is used to prevent modifying the original VHDx as permissions need to be modified to allow a user other than System or the BMR'd Computer account to read the backup. Additionally, Mount-DPMRecoveryPoint mounts the disk read-only.
(5) Navigate through the data to <drive>:<GUID2>\Full\C-Vol\WindowsImageBackup and use Get-ACL and Set-ACL to grant permissions to the user you'll connect to the share with.
(6) Create a share that maps to <drive>:<GUID2>\Full\C-Vol with the necessary permissions (New-SMBShare)
(7) Boot into WinRE and run the restore by connecting to the share with the user provided
(8) When done, remove the share, dismount and delete the temp VHDx, and finally use Dismount-DPMRecoveryPoint to unmount the recovery point.
This process could either be replicated fairly easy by DPM, or when backups run, inheritance could be enabled in the backup with a "DPM Recovery" group. Then all DPM needs to do is use the same process it does to mount the recovery point and then just add a specified user to the "DPM Recovery" group and create a share. And once done, the Dismount command would then remove the user from that group and remove the share (as well as dismount the recovery point).
Just adding this as an option could cut restore times in half and removes the tedious middle step.
