Modify old versions of Storage Lifecycle Policies (SLPs)

Article: 100011045
Last Published: 2021-11-27
Ratings: 2 2
Product(s): NetBackup & Alta Data Protection

Problem

SLP versions were introduced to correct a data loss condition at a previous release.  Only the current version (the version with the highest number) is displayed in the GUI, so if there are confguration errors or references to invalid, old, or undesired storage units in previous versions, they need to be modified to bring the configuration into a consistent state. 

Improper configurations can also prevent SLP batches and jobs from being submitted to the Activity Monitor.  This can create an SLP backlog issue, where the only indication of a problem is the growing copy counts in "nbstlutil report" or by monitoring "nbstlutil list -image_incomplete" regularly.

Error Message

When trying to delete a Storage Unit when decommissioning a storage server, getting this error:
Storage unit or storage unit group cannot be deleted because it is referenced in a storage lifecycle policy. The referencing SLP may be an older version. Use the nbstl command to view/change older SLP versionsStatus code: 228

Cause

You cannot delete a storage unit or storage unit group if a storage lifecycle policy (SLP) references it. The SLP with the reference may be an older version. The NetBackup Administration Console displays the most recent version of an SLP while the reference to the storage unit or storage unit group may be located in a earlier version that is only visible from the CLI.

The incorrect configuration can prevent a SLP from running (and generating a failure).  This can include any combination of SLP Window, Alternate Read Server, Storage Unit, and Volume Pool.

Solution

Run this command to find all versions of the SLPs; then isolate the SLPs that need to be changed:

nbstl -L -all_versions > /admin/nbstl_all_versions.txt

Name: Example-SLP-Name
                 Data Classification: (none specified)
            Duplication job priority: 0
                               State: active
                             Version: 0                          <---------- Note The Version Needing Change
Operation  1              Use for: 0 (backup)
                             Storage: stu_adv_example12
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: 0 (client)
                        Operation ID: 0
                     Operation Index: 1
Operation  2              Use for: 1 (duplication)
                             Storage: Original_PD_STU             <---------- Remove this one
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: true
                               State: active
                              Source: Operation 1 (backup:stu_adv_example12)
                        Operation ID: 0
                     Operation Index: 2
Operation  3              Use for: 3 (replication to remote master)
                             Storage: Remote Master
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: Target 2 (duplication:Original_PD_STU)
                        Operation ID: 0
                     Operation Index: 3


Need to change, for example, Original_PD_STU to stu_disk_chang-to14 for version 0, operation 2, of this SLP in EMM SLP tables. 

There must be the same number of arguments as the number of operations in the SLP (in this case, 3 operations means 3 arguments after "-residence"). 

We must specify the arguments in the same order as the operations. 

So in the example below, only the second argument is different than what is already defined, and we will specify the existing values for operation1 and operation 3.  The Value of __NA__ is used when a residence is "Remote Master" for replications.  __NA__ is generally a placeholder for NULL in this command for other values.

nbstl Example-SLP-Name -modify_version -version 0 -residence stu_adv_example12,stu_disk_change-to14,__NA__
<command> SLP Name <action (i.e. modify_version)> <action qualifier, if needed> <what we're modifying> value for Operation 1, value for Operation 2, value for Operation 3,


The values are not specified in the "old,new" context.  To think of it another way, the command is technically modifying ALL the Operations, and you have to re-supply the values for all Operations in the correct order, with the change in-line (in the above example, Operation 2, or the second comma-separate value, is the only one that is different.  All the other Operations will be 'modified' with the same value that was previously defined, so no effective changes for Operation 1 and Operation 3 above.

 

Example 1:
     How to change the Duplication destination storage unit when the SLP includes a Replication operation (non-targeted):

# nbstl SLP3 -modify_version -version 1 -residence STU1,STU2,*Remote*Master*

     ....where STU2 is the new Duplication storage unit name

Example 2:

     How to change the Duplication destination storage unit when the SLP includes a targeted air Replication operation:

Note: the first 'nbstl -L' at the start of this article is an example of non-targeted air Replication where the target Primary server's Import SLP name is not specified. If that Replication operation 3 was targeted to a specific target Primary server Import SLP, it would look similar to this (cut/paste...in this example AIR_MSDP_TO_MSDP is the name of the target Primary server's Import SLP):
                   Storage: *Remote*Master*:AIR_MSDP_TO_MSDP

    ....the nbstl syntax to change the 2nd Operation (Duplication) storage unit when targeted air is configured is:
# nbstl SLP3 -modify_version -version 1 -residence STU1,STU2,*Remote*Master*:IMPORT_SLP_NAME
      ....where STU2 is the new Duplication storage unit name and where IMPORT_SLP_NAME is the actual name of the targeted Primary's Import SLP name. Example, note we changed the last residence designation to reflect targeted air:

# nbstl SLP3 -modify_version -version 1 -residence STU1,STU2,*Remote*Master*:AIR_MSDP_TO_MSDP 


Note about older NetBackup versions:

Along with this, when residence is "Remote Master" ( AIR Replication), along with __NA__   -target_master and -target_importslp may need to be specified. 

example : nbstl DR -modify_version -version 2 -residence stu_nbmaster1_msdp,__NA__ -rl 1,1 -target_master __NA__,nbmaster2 -target_importslp __NA__,Import


Once this was done, we were able to delete the Storage Unit in the Administration Console.  This change does not alter any historical Storage Lifecycle Operations; in other words, this will NOT re-duplicate any SLP Complete images to the altered storage unit.  This change is ONLY for deleting the Storage Unit and effecting incomplete images for this Storage Lifecycle Policy.

Additional Examples:


1. Changing only the SLP Window to the new SLP WIndow named "Weekdays":

                                Name: walnuts
                 Data Classification: (none specified)
            Duplication Job Priority: 0
                               State: active
                             Version: 0
 Operation  1                Use for: 0 (backup)
                             Storage: stu_msdp_nbmaster1
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 22 (1 day)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: 0 (client)
                        Operation ID: (none specified)
                     Operation Index: 1
                         Window Name: --
                 Window Close Option: --
                Deferred Duplication: no
 Operation  2                Use for: 1 (duplication)
                             Storage: stu_pdde_nbmedia2
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: nbmaster1
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: Operation 1 (backup:stu_msdp_nbmaster1)
                        Operation ID: (none specified)
                     Operation Index: 2
                         Window Name: Default_24x7_Window
                 Window Close Option: SFN
                Deferred Duplication: no

nbstl walnuts -modify_version -version 0 -window __NA__,Weekdays


2. Changing only the Volume Pool of the 2nd Duplication Operation to "NetBackup":

                                 Name: caramel
                 Data Classification: (none specified)
            Duplication Job Priority: 0
                               State: active
                             Version: 1
 Operation  1                Use for: 0 (backup)
                             Storage: dp_advdisk_nbmedia2-stu
                         Volume Pool: (none specified)
                        Server Group: (none specified)
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: 0 (client)
                        Operation ID: (none specified)
                     Operation Index: 1
                         Window Name: --
                 Window Close Option: --
                Deferred Duplication: no
 Operation  2                Use for: 0 (backup)
                             Storage: nbmedia2-hcart-robot-tld-2
                         Volume Pool:
                        Server Group: Any
                      Retention Type: 0 (Fixed)
                     Retention Level: 1 (2 weeks)
               Alternate Read Server: (none specified)
               Preserve Multiplexing: false
      Enable Automatic Remote Import: false
                               State: active
                              Source: 0 (client)
                        Operation ID: (none specified)
                     Operation Index: 2
                         Window Name: --
                 Window Close Option: --
                Deferred Duplication: no


nbstl caramel -modify_version -version 1 -pool __NA__,NetBackup

*In this example, the backup operation 1 uses disk, so the value for Volume Pool is "__NA__".   If Operation 1 had its own volume pool that was NOT changing, it would replace __NA__.

 

Was this content helpful?