Active IQ Unified Manager Discussions

WFA 4.1 and ontap 9.2P1 . workflow of creating volume stopped working after upgrade

CAPATEL_NET1984
5,072 Views

for all flash C mode filers it looks like with 9.2P1 the volume are created with effciency enabled. this is conflicting with the create volume command provided by NetApp.

Failed to enable efficiency on volume "xx" of Vserver "xx": Operation has already been enabled. Location: Row '1' step 'Create Volume'.

7 REPLIES 7

CAPATEL_NET1984
5,069 Views

it failed when template is chosen as space efficient NAS settings

sivakumar_sekar
4,961 Views

Hi,

 

We have verified the below issue using the WFA 4.1 GA build with the version 1.3.2 c-dot pack (This "WFA pack for managing Clustered Data ONTAP" is available in the Automationstore) on the ONTAP 9.2.

Create volume command with the efficiency enabling is working fine.

 

Could you please share us the details of the procedure which you followed.

 

 

Best Regards,

Shiva 

 

CAPATEL_NET1984
4,905 Views

I ahve version 1.2.2 and the issue is the spaceeffcient template to create volume has defaule fields which enable inline dedup and for 9.2 AF system the inline dedup is already there when a new volume is created. may be the issue is that.

I will update the pack and let you guys know if I see any issues.

Vikramjeet_Singh
4,410 Views

I am having the same issue. But my WFA version is different

 

WFA - 4.2.0.0.1

CDOT PACK - 1.5.1

ONTAP - 9.3P5

 

When I try to create a unix volume it give the error:" Failed to enable efficiency on volume "WFA_4" of Vserver "ABCDE": Operation has already been enabled

 

is there any workaround for this. I had tried manipulating the powershell code but no luck.

 

Can you please explain what efficiency it is talking about - Deduplication or compression?

 

Is it specific to inline or background?

mbeattie
4,377 Views

Hi Vikramjeet,

 

I'm assuming you are using the NetApp Certified command "Create Volume" in your WFA workflow? If so i'd advise raising a support case as I think this is a bug. The problem is that the "Enable-NsSis" cmdlet will fail if deduplication is already enabled on the the volume (in the instance where deduplication or compression has been set). To work around the issue I created a custom command and tested if deduplication has already been enabled before attempting to enable it. EG

 

 

#'------------------------------------------------------------------------------
#'Set deduplication. Flexgroup supports this feature in 9.4.0 and above.
#'------------------------------------------------------------------------------
If(((-Not($Compression)) -Or ($Compression -eq "disabled")) -And $Deduplication){
   If(($ExtendedVolumeStyle -eq "flex") -Or (($ExtendedVolumeStyle -eq "flexgroup") -And ($versionComparisionValue9_4_0 -ge 0))){
      #'------------------------------------------------------------------------
      #'Check the current volume deduplication configuration.
      #'------------------------------------------------------------------------
      Get-WFALogger -Info -Message "Checking deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
      [String]$command = "Get-NcSis -Name $VolumeName -VserverContext $VserverName "
      If($ZapiRetryCount){
         [String]$command += "-ZapiRetryCount $ZapiRetryCount "
      }
      [String]$command += "-ErrorAction Stop"
      Try{
         $ncSis = Invoke-Expression -Command $command -ErrorAction Stop
         Get-WFALogger -Info -Message "Executed Command`: $command"
         Get-WFALogger -Info -Message "Enumerated deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
      }Catch{
         Get-WFALogger -Error -Message $("Failed Executing Command`: $command. Error " + $_.Exception.Message)
         Throw "Failed enumerating deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
      }
      #'------------------------------------------------------------------------
      #'Enable deduplication if required.
      #'------------------------------------------------------------------------
      If((-Not($ncSis)) -Or $ncSis.State -eq "disabled"){
         Get-WFALogger -Info -message "Enabling deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
         [String]$command = "Enable-NcSis -Name $VolumeName -VserverContext $VserverName "
         If($ZapiRetryCount){
            [String]$command += "-ZapiRetryCount $ZapiRetryCount "
         }
         [String]$command += "-ErrorAction Stop"
         Try{
            Invoke-Expression -Command $command -ErrorAction Stop
            Get-WFALogger -Info -Message "Executed Command`: $command"
            Get-WFALogger -Info -Message "Enabled deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
         }Catch{
            Get-WFALogger -Error -Message $("Failed Executing Command`: $command. Error " + $_.Exception.Message)
            Throw "Failed enumerating deduplication for Volume ""$VolumeName"" on Vserver ""$VserverName"""
         }
      }
   }Else{
      Get-WFALogger -Warn -Message "Deduplication cannot be set for a FlexGroup."
   }
}

Hope that helps

 

/Matt

If this post resolved your issue, help others by selecting ACCEPT AS SOLUTION or adding a KUDO.

CAPATEL_NET1984
4,306 Views

if you click on the + sign where you define all input parameters there is a parameter name compression (value is inline) which is enabled in 9.1 and 9,2 version and I think from 9.3 its already enabled. just inline compression.

 

if you remove inline from compression paramter and just keep it blank it will be fine as inline is by default (for all flash as lons as I know).

 

 

 

CAPATEL_NET1984
4,302 Views

you can also keep blank all dedup and compression options and just add below code as a command after volume is created to set all inline + post prosess volume efficiency

 

 

param (
[parameter(Mandatory=$true, HelpMessage="Cluster IP or name")]
[string]$Cluster,

[parameter(Mandatory=$true, HelpMessage="Storage Virtual Machine name")]
[string]$VserverName,

[parameter(Mandatory=$true, HelpMessage="Volume name")]
[string]$VolumeName,

[parameter(Mandatory=$true, HelpMessage="Name of the efficiency policy ")]
[string]$EfficiencyPolicy




)

Connect-WfaCluster $Cluster

# testing volume existence. this command somehow doesn't throw exception if
# ErrorAction is 'Stop' and the volume isn't found. adding if block
$vol = Get-NcVol -Name $VolumeName -Vserver $VserverName
$sis = get-ncsis -Volume $VolumeName -Vserver $VserverName
if (!$vol)
{
throw "Volume '$VolumeName' not found on Storage Virtual Machine '$VserverName'"
}


# Prepare base command
$expression = "Set-NcSis -ErrorAction Stop -Name " + $VolumeName + " -VserverContext " + $VserverName


$expression = $expression + ' -Policy ' + $EfficiencyPolicy

$expression = $expression + ' -InlineCompression $True'

$expression = $expression + ' -Compression $True'

$expression = $expression + ' -EnableInlineDedupe $True'



# Apply SIS settings
try {

if($vol.VolumeSisAttributes.IsSisStateEnabled -ne 'True'){
Get-WFALogger -Info -message $("Enabling volume efficiency: "+ $VolumeName)
Invoke-Expression -ErrorAction Continue 'Enable-NcSis -Name $VolumeName -VserverContext $VserverName'
Get-WFALogger -Info -message $("Configuring volume efficiency: "+ $expression)
Invoke-Expression -ErrorAction Stop $expression
}else{
Get-WFALogger -Info -message $("Configuring volume efficiency: "+ $expression)
Invoke-Expression -ErrorAction Stop $expression
}

}
catch
{
$msg = "Failed to configure volume efficiency: " + $VolumeName + " Message: " + $_.Exception.Message;
throw $msg
}

Public