Hy all Here is a simple but powerfull POSH script for VISIO your C-Mode config. You need the have the latest release of PowerShell 1.7 and MS Office VISIO 2010. Sample Picture: #Copyright: Marc Hofstetter / NetApp / 2012 / version 0.75 #POWERSHELL SCRIPT VISIO YOUR C-MODE CONFIG #Import Data ONTAP PowerShell Toolkit Import-Module DataONTAP #VISIO SHAPES for DRAWING $shpFile1 = "\NetApp-Logic-Icons.vss" $shpFile2 = "\NetApp-Equipment-Icons.vss" $shpFile3 = "\NetApp-Icons-2.vss" $shpFile4 = "\NetApp-Essentials.vss" #VISIO Function for the Connection-of-objects function connect-visioobject ($firstObj, $secondObj) { $shpConn = $pagObj.Drop($pagObj.Application.ConnectorToolDataObject, 0, 0) #// Connect its Begin to the 'From' shape: $connectBegin = $shpConn.CellsU("BeginX").GlueTo($firstObj.CellsU("PinX")) #// Connect its End to the 'To' shape: $connectEnd = $shpConn.CellsU("EndX").GlueTo($secondObj.CellsU("PinX")) } #VISIO Function for adding the object into the drawing function add-visioobject ($mastObj, $item) { Write-Host "Adding $item" # Drop the selected stencil on the active page, with the coordinates x, y $shpObj = $pagObj.Drop($mastObj, $x, $y) # Enter text for the object $shpObj.Text = $item #Return the visioobject to be used return $shpObj } # Create an instance of Visio and create a document based on the Basic Diagram template. $AppVisio = New-Object -ComObject Visio.Application $docsObj = $AppVisio.Documents $DocObj = $docsObj.Add("Basic Network Diagram.vst") # Set the active page of the document to page 1 $pagsObj = $AppVisio.ActiveDocument.Pages $pagObj = $pagsObj.Item(1) # Load a set of stencils and select one to drop $stnPath = [system.Environment]::GetFolderPath('MyDocuments') + "\My Shapes\NetApp\" $stnObj1 = $AppVisio.Documents.Add($stnPath + $shpFile1) $FlexVOLObj = $stnObj1.Masters.Item("FlexVol") $AggrObj = $stnObj1.Masters.Item("Raid Grp Aggregate Storage") $LUNObj = $stnObj1.Masters.Item("Cylinder") #Define FAS-Controller Object $stnObj2 = $AppVisio.Documents.Add($stnPath + $shpFile2) $FASObj = $stnObj2.Masters.Item("FAS3000") #Define VServer Object $stnObj2 = $AppVisio.Documents.Add($stnPath + $shpFile3) $VServerObj = $stnObj2.Masters.Item("WorkGroup Servers") #Defien NetApp Frame Obejct $stnObj4 = $AppVisio.Documents.Add($stnPath + $shpFile4) $FrameObject = $stnObj4.Masters.Item("Small Title min margin") $FrameObj = add-visioobject $FrameObject $nodeInfo #Get Host Name to Connect to $FASName = read-host "Enter the FQDN of your NetApp C-MODE Cluster" If ($FASName -eq "") { Write-Host "No selection made, script now exiting." ; exit } $USERName = read-host "Enter the username for accessing the C-MODE Cluster" If ($USERName -eq "") { Write-Host "No input made, script now exiting." ; exit } #HERE WE GO - GET ALL STORAGE DETAILS - using MHOFSTET CRED Connect-NcController -Name $FASName -Credential $USERName $allNODES = Get-NcNode $allVServers = Get-NcVserver $allAGGR = Get-NcAggr $allVOLS = Get-NcVol #Set Start Locations of Objects $x = 1 $y = 1 #DRAW ALL PHYSICAL-NODES Foreach ($node in $allNodes) { $y += 1 $nodeInfo = "NODE: " + $node $nodeObj = add-visioobject $FASObj $nodeInfo #DRAW ALL AGGR for physical NODES Foreach ($aggr in $allAGGR) { If ($aggr.Nodes -eq $node) { $x = 2 $y += 1.5 $aggrInfo = "AGGREGATE: " + $aggr.Name $aggrObj = add-visioobject $AggrObj $aggrInfo connect-visioobject $nodeObj $aggrObj } # GET ROOT VOL for NODE $allVOLS2 = Get-NcVol -Vserver $node foreach ($vol in $allVols2) { if ($vol.Vserver -eq $aggr.AggrOwnershipAttributes.HomeName -and $vol.VolumeIdAttributes.ContainingAggregateName -eq $aggr.Name){ $x += 1 $volInfo = "VOLUME: " + $vol.Name $FlexVOLObj = add-visioobject $FlexVOLObj $volInfo connect-visioobject $aggrObj $FlexVOLObj } } # GET DATA VOL for VSERVER $allVOLS3 = Get-NcVol -Aggregate $aggr | where {$_.Name -ne "vol0"} foreach ($vol in $allVols3) { if ($vol.VolumeIdAttributes.ContainingAggregateName -eq $aggr.AggregateName -and $aggr.AggrOwnershipAttributes.HomeName -eq $node.Node){ $x += 1 $volInfo = "VOLUME: " + $vol.Name $FlexVOLObj = add-visioobject $FlexVOLObj $volInfo connect-visioobject $aggrObj $FlexVOLObj } $x2 = $x } } $x = 1 $y += 1 } $x = $x2 Foreach ($vserver in $allVServers) { if ($vserver.VserverType -eq "cluster"){ $vserverInfo = "VSERVER Name: " + $vserver $vserverObj = add-visioobject $VServerObj $vserverInfo $x += 1.5 #connect-visioobject $FlexVOLObj $vserverObj } } # Resize to fit page $pagObj.ResizeToFitContents() # END Script have fun and report any feedback
... View more
In the NetApp storage model, the basic unit is the RAID group. RAID groups are combined into pools called Aggregates. Logical containers called Flexvols are carved from the space in an aggregate. A Flexvol can contain files or LUNs. Further, a Flexvol can be partitioned by creating Qtrees in it. If you’ve worked with QSM or SnapVault, then you’re probably familiar with one use case for Qtrees in conjunction with LUNs. Qtrees are also common in NFS or CIFS file environments. Like a directory, a Qtree can be used to further partition space within a volume that contains files. In these Environments, Qtrees are often used in conjunction with Quotas. There are three basic types of Quota; the tree, user, and group quota. A quota can be applied to a volume or a Qtree. In addition a default quota can be applied to an object, which also applies to all objects beneath the object to which it is applied. Through quotas, you can set hard, soft, or threshold limits on the number of files of amount of disk space consumed. A threshold quota is a unique case. In addition to logging, a threshold quota will send an SNMP trap. The Data ONTAP PowerShell Toolkit provides several cmdlets for manipulating quotas. Foremost among them is add-naquota. To add a default tree quota to the volume vol1, with a DiskLimit of 10GB, Add-naquota tree * vol1 –DiskLimit 10g To add a threshold limit of 7GB to the qtree qtree_1 in the volume vol1, Add-naquota tree /vol/vol1/qtree_1 vol1 –Threshold 7g To remove the quota from the qtree qtree_1, Remove-naquota tree /vol/vol1/qtree_1 vol1 To get a report of all quotas, Get-naquotareport In addition to working with files if you place your LUNs in qtrees, and then place a quota on the qtree, things start to get real interesting. More to follow. Happy Scripting J
... View more
We're officially partnering with Google Cloud to bring Cloud Volumes to Google Cloud Platform. Here's George Kurian, NetApp CEO, and Diane Greene, Google Cloud CEO, to discuss the new partnership.
... View more
Monitoring storage controller performance, or diagnosing a performance issue, is simplified by starting with a high-level picture of controller metrics to determine where to focus (i.e. I/O demand, CPU bottlenecks, controller latency, network or disk traffic). The attached script leverages the Data ONTAP PowerShell Toolkit, the Windows Forms API, and the Google Chart API to create controller performance graphs. The graphs scale dynamically, update every 20 seconds, and display one hour of data. The host running the script must have Internet connectivity. Toolkit 1.2 is required. Example: PS C:\> Show-NaPerf.ps1 dunn
... View more