We live in a world of activities. Particularly in IT, almost everything we do can at some point be summarised as being an activity. Activities we perform typically fall into one of three organisational types, viz.:
- Parallel – Activities that can be performed simultaneously
- Sequential – Activities that must be performed in a particular order
- Standalone – Activities that can be performed in any order
Additionally, we can say that most activities we perform are either blocking or non-blocking, at least in some context. Setting up a new client in NetWorker for instance is not normally considered to be a blocking activity, unless of course we consider it in the context of a subsequent backup of that same client.
One thing we can definitely consider to be a blocking activity in NetWorker is a server upgrade. These days you have to be a little more conscientious about server upgrades. Whereas before it was not uncommon to encounter environments with multiple storage nodes of varying NetWorker versions (despite whether this was a good idea or not), the upgrade process now requires you to ensure all storage nodes are upgraded either before, or at least at the same time as the NetWorker server. Additionally, if you’re using a dedicated NetWorker Management Console server, you should also upgrade that before the NetWorker server so that your NMC interface is capable of addressing any new functionality introduced in NetWorker*.
Each of those upgrades (NMC, storage nodes and NetWorker server) take a particular amount of time. If you’re using standard NetWorker authentication, the package upgrade or removal/reinstall process will take mere minutes. If your authentication is integrated with an Active Directory or LDAP service, that’ll be a little bit more complicated.
But (and there’s always a but), the process of either upgrading the NetWorker binaries on the server (or uninstalling and re-installing, depending on your operating system) is not the be-all and end-all of the NetWorker upgrade process. There are a sequence of activities you need to perform prior to the upgrade as part of consistency checking and validation that you really shouldn’t ever skip. Depending on the number of clients, backup volumes or savesets you have, that might take some time to complete**.
Looking at the NetWorker 8.2 upgrade guide, the recommended activities you should complete before performing a NetWorker server software upgrade are as follows:
- nsrim -X
- nsrck -m
- nsrck -L6
- nsrls -m
- nsrls
- nsrports
- savegrp -l full -O groupName ***
- mminfo -B
Of those commands, the ones that will potentially take the most time to execute are shown in bold, though the timing difference between just those three commands can be quite substantial. Consider the nsrck -L6 in particular: that’s a complete in-place index rebuild for all clients. If your indices are very large, or your NetWorker index filesystem storage incapable of providing sufficient IOPS (or a combination of both), the run-time for that activity may be lengthy. Equally, if your indices are large, a savegrp -l full -O to force a full index backup**** may also take quite a while to backup, depending on your backup destination.
As an example, on a virtual lab server significantly under the minimum performance specifications for a NetWorker server (not to mention virtualised in vSphere which was in turn virtualised in VMware Fusion), I built up an index for a client of approximately 10GB after first creating then repeatedly backing up a filesystem with approximately 3,000,000 files in it. (mminfo reports an nfiles of 3,158,114). After those backups were generated, nsrls told me:
# nsrls centaur
/nsr/index/centaur: 88957985 records requiring 10 GB /nsr/index/centaur is currently 100% utilized
Moving on to compare the run-times of an nsrck -L1, -L3 and -L6 yielded the following:
# date; nsrck -L1 centaur; date
Wed Apr 22 17:19:51 AEST 2015 nsrck: checking index for 'centaur' nsrck: /nsr/index/centaur contains 88957985 records occupying 10 GB nsrck: Completed checking 1 client(s) Wed Apr 22 17:19:51 AEST 2015
# date; nsrck -L3 centaur; date
Wed Apr 22 17:19:51 AEST 2015 nsrck: checking index for 'centaur' nsrck: /nsr/index/centaur contains 88957985 records occupying 10 GB nsrck: Completed checking 1 client(s) Wed Apr 22 17:19:52 AEST 2015
# date; nsrck -L6 centaur; date
Wed Apr 22 17:19:52 AEST 2015 nsrck: checking index for 'centaur' nsrck: /nsr/index/centaur contains 88957985 records occupying 10 GB nsrck: Completed checking 1 client(s) Wed Apr 22 17:26:26 AEST 2015
Now, these timings are not under any circumstances meant to be typical of how long it might take to perform an nsrck -L6 against a client index of a similar size on a real NetWorker server. But the fact that there’s a jump in the time taken to execute an nsrck -L3 vs an nsrck -L6 should serve to highlight my point: it’s a nontrivial operation depending on the size of the indices (as are nsrim -X and the savegrp -O), and you must know how long these operations are going to take in your environment.
When planning NetWorker upgrades, I think it’s quite important to keep in mind the upgrade process is blocking: once you’ve started it, you really need to complete it before you can do any new backups or recoveries. (While some of those tasks above can be interrupted, you may equally find that an interruption should be followed by starting afresh.) So it becomes very important to know – in advance of when you’re actually going to perform the upgrade – just how long the various pre-upgrade steps are going to take. If not, you may end up in the situation of watching your change window or allowed outage time rapidly shrinking while an operation like nsrck -L6 is still running.
It may be that I’ve made the upgrade process sound a little daunting. In actual fact, it’s not: those of us who have been using NetWorker for close to two decades will recall just how pugnaciously problematic NetWorker v4 and v5 upgrades were with the older database formats*****. However, like all upgrades for critical infrastructure, NetWorker upgrades are going to be optimally hassle-free when you’re well prepared for the activities involved and the amount of time each activity will take.
So, if you’re planning on doing a NetWorker upgrade, make sure you plan the timings for the pre-upgrade maintenance steps … it’ll allow you to accurately predict the amount of time you need and the amount of effort involved.
—
* Finally of course, if you’re using VBA, you’ll possibly need to upgrade your EBR appliance and proxies, too.
** On the plus side, NetWorker is quite efficient at those maintenance operations compared to a lot of other backup products.
*** The guide doesn’t mention including ‘-l full’. However, if doing anything approaching a major version upgrade (e.g., 8.1 to 8.2), I believe you should do the index backup as a full one.
**** To execute this successfully, you optimally should have a group defined with all clients in it. Otherwise you’ll have to carefully run multiple groups until you’ve captured all clients.
***** For servers, I only go back as far as v4, so I can’t say what upgrades were like with v3 or lower.
Hi Preston,
I do every pre-upgrade maintenance steps one or two days before I do an upgrade, after the steps are finished I check the log files for any failures.
Without this I have to wait hours and cannot do anything.
Regards
Marcel
with respect to “savegrp -l full -O groupName”
Customers often misunderstand that command. It is not the backup of all Client File Indexes but only of those belonging to that group.
So do not forget that you might need to run this command for each group.
Another idea is to copy ALL clients to a specific group.
That’s true – and I apologise for not making that abundantly clear in the post.
Backup of indexes could be done easily with one NetWorker server client instance, save set /nsr/index, enabled PSS feature, level full and backup command save -i
I would have to test this.