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
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
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__.