A client that is currently using this configuration has just surpassed the 200 GB mark for their combined mailbox store size, and the nightly full backups were taking a little longer than 6 hours to complete. This large backup window was preventing the nightly database maintenance tasks from completing, so a new strategy was in order. While thinking through some possibilities, I remembered reading about some registry tweaks that could improve the NTBackup performance when backing up to disk. After a little research, I made the changes, and the results were almost unbelievable: the Exchange backup job that had previously taken more than 6 hours to complete now finished in just under 2 1/2 hours!
While taking advantage of this dramatic speed boost only requires three registry changes and an additional command line parameter, there is a big bummer at first glance: the NTBackup registry keys that need to be changed reside in the
HKEY_CURRENT_USERhive. This really cramps my style as I always configure the scheduled task that kicks off the NTBackup job as the
NT AUTHORITY\SYSTEMaccount with a blank password. If you work in an environment with strict password change policies, even for system accounts, you know the pain of having to maintain passwords in scheduled tasks and scripts. Life is so much easier if it can just be avoided. But since the system account doesn't execute NTBackup interactively, the registry keys don't get created, and I assumed this meant there was no way to have the application check for the configuration tweaks.
But thankfully I was wrong, and it's a pretty simple process to manually create the necessary keys in the right spot:
- First of all, you need to actually complete a backup job once to get the registry entries all set up, so as a regular administrator on the Exchange server, launch NTBackup, select a single temp file somewhere to backup, let the job run to completion, and then just delete the temporary backup set.
- Launch regedit, and drill down to
- You should already see the values we're about to change, if not, something didn't get created properly, so try a manual NTBackup job again. If the keys are present, make the following changes:
- Change Logical Disk Buffer Size from 32 to 64
- Change Max Buffer Size from 512 to 1024
- Change Max Num Tape Buffers from 9 to 16
- Change Logical Disk Buffer Size from 32 to 64
- After making the changes, select the Backup Engine key from the left pane, and right click and select Export. Save it as a .reg file, and make sure Selected branch at the bottom of the Export window is set to
- Now we'll locate the system account's registry settings, with regedit still open, browse to
S-1-5-18is the standard identifier for the system account, and unless you've scheduled NTBackup to run as
NT AUTHORITY\SYSTEMbefore, the key will most likely be empty.
- We need to schedule a job to run as
NT AUTHORITY\SYSTEMto create the default keys, so launch NTBackup in advanced mode, select the Schedule Jobs tab, and set up a temp job to just back up any text file and schedule it to run in a couple of minutes from now. When prompted for the credentials that should be used for the job, you'll need to change the user account to
NT AUTHORITY\SYSTEMwith a blank password, several times. In fact, it still won't save it as the account to use, so after saving the scheduled job, open the task from the Scheduled Tasks panel and change the user account to
NT AUTHORITY\SYSTEMwith a blank password again.
- After the job runs, you should see the following registry keys have been created under
HKEY_USERS\S-1-5-18\Software\Microsoft\Ntbackup; Backup Engine, Backup Utility, Display, and Log Files. But if you drill into Backup Engine, you'll see it didn't create the keys we modified a few steps ago.
- To easily create the keys, just edit the .reg file we exported earlier in Notepad. Change the line
[HKEY_USERS\S-1-5-18\Software\Microsoft\Ntbackup\Backup Engine], and save the file.
- Now right click the .reg file, and select Merge. You should find the registry settings have been created for the system account, and NTBackup will now use the much speedier settings even when running as the system account.
/fuswitch, for 'file unbuffered' mode. To bolt this on, just edit the Scheduled Task for the NTBackup job, and add the
/fuswitch after the
/hc:offparameter. When you're done, the Run: text box of the Scheduled Task will look something like this:
C:\WINDOWS\system32\ntbackup.exe backup "@C:\Documents and Settings\ Administrator\Local Settings\Application Data\Microsoft\Windows NT\ NTBackup\data\Exchange_Daily.bks" /n "exchange_Backup.bkf created 6/30/2009 at 6:06 PM" /d "Set created 6/30/2009 at 6:06 PM" /v:no /r:no /rs:no /hc:off /fu /m normal /j "Exchange_Daily" /l:s /f "E:\exchange_ backups\exchange_Backup.bkf"