Note: In this post
we are using the Data ONTAP PowerShell Toolkit 3.0.0.90!
One thing I’ve been learning about the Data ONTAP
PowerShell toolkit Get-Nc commands is that they bring back a lot of data.
Focusing on disk information here: and wishing to script efficient scripts to
obtain just the information that is desired, we explore just what Get-NcDisk
returns!
First: you can use templates to search using a Query
and/or with specific Attributes only, for example:
# Applying this template brings
back just the disk name attribute
$diskAttributes = Get-NcDisk -Template
$diskAttributes.name =
""
# Applying this template brings
back just disks of type BSAS
$diskQuery = Get-NcDisk -Template
Initialize-NcObjectProperty
-object $diskQuery -name DiskInventoryInfo
$diskQuery.DiskInventoryInfo.DiskType
= “BSAS”
Note:
Initialize-NcObjectProperty is only required to go down to the second level of
available Get-NcDisk information
# Applying the Query and
Attributes templates
$disks = Get-NcDisk -Query
$diskQuery -attributes $diskAttributes
Second: in-depth help is available within PowerShell
using
Get-Help Get-NcDisk -Full
All the
Get-NcDisk Attributes
Note i: Each unique attribute is highlighted yellow.
Note ii: NcObjectProperties which contain sub attributes
are highlighted green.
Note iii: Examples/outputs are in italic.
$disks = Get-NcDisk
$diskQuery = Get-NcDisk
-template
$diskQuery
Name Shelf Bay Position Capacity RPM FW Model Paths Aggregate
---- ----- --- -------- --------
--- -- ----- ----- ---------
$diskQuery.DiskInventoryInfo
$diskQuery.DiskName
$diskQuery.DiskOwnershipInfo
$diskQuery.DiskPaths
$diskQuery.DiskRaidInfo
$diskQuery.DiskStatsInfo
$diskQuery.DiskUid
$diskQuery.Name
$diskQuery.NcController
$diskQuery.Aggregate
$diskQuery.Bay
$diskQuery.Capacity
$diskQuery.FW
$diskQuery.Model
$diskQuery.Paths
$diskQuery.Pool
$diskQuery.Position
$diskQuery.RPM
$diskQuery.Shelf
$aDisk
= $disks[7]
$aDisk.{SAME
AS THE ABOVE}
Which ones can be initialized as NcObject Properties?
Initialize-NcObjectProperty
-object $diskQuery -name DiskInventoryInfo
Initialize-NcObjectProperty
-object $diskQuery -name DiskName
Initialize-NcObjectProperty
-object $diskQuery -name DiskOwnershipInfo
Initialize-NcObjectProperty
-object $diskQuery -name DiskPaths
Initialize-NcObjectProperty
-object $diskQuery -name DiskRaidInfo
Initialize-NcObjectProperty
-object $diskQuery -name DiskStatsInfo
Initialize-NcObjectProperty
-object $diskQuery -name DiskUid
Initialize-NcObjectProperty
-object $diskQuery -name Name
Initialize-NcObjectProperty
-object $diskQuery -name NcController
Get-NcDisk outputs of just one (a) disk:
$aDisk
Name Shelf Bay Position Capacity RPM FW Model Paths Aggregate
---- -----
--- -------- -------- --- -- ----- ----- ---------
nac1-01:v4.17 dparity 4 GB 7.2k 0042 VD-4000MB-FZ-ATA 2 aggr1
$aDisk.DiskInventoryInfo
BytesPerSector
Capacity
CapacitySectors
CarrierId
CarrierSerialno
ChecksumCompatibility
DiskType
DiskUid
FirmwareRevision
GrownDefectListCount
HealthMonitorTimeInterval
HealthMonitorTimeIntervalTS
IsDynamicallyQualified
IsForeign
IsMultidiskCarrier
MediaScrubCount
MediaScrubLastDoneTimeInterval
MediaScrubLastDoneTimeIntervalTS
Model
NcController
RightSizeSectors
Rpm
SerialNumber
Shelf
ShelfBay
StorageSsdInfo
Vendor
BytesPerSectorSpecified
CapacitySectorsSpecified
GrownDefectListCountSpecified
HealthMonitorTimeIntervalSpecified
IsDynamicallyQualifiedSpecified
IsForeignSpecified
IsMultidiskCarrierSpecified
MediaScrubCountSpecified
MediaScrubLastDoneTimeIntervalSpecified
RightSizeSectorsSpecified
RpmSpecified
$aDisk.DiskName
nac1-01:v4.17
$aDisk.DiskOwnershipInfo
DiskUid
DrHomeNodeId
DrHomeNodeName
HomeNodeId
HomeNodeName
IsFailed
NcController
OwnerNodeId
OwnerNodeName
Pool
ReservedByNodeId
DrHomeNodeIdSpecified
HomeNodeIdSpecified
IsFailedSpecified
OwnerNodeIdSpecified
PoolSpecified
ReservedByNodeIdSpecified
$aDisk.DiskPaths
DiskName PathIops PathLinkErrors
PathLunInUseCount PathQuality Node
-------- -------- -------------- -----------------
----------- ----
nac1-01:v0.17 0 0 0
0 nac1-01
nac1-01:v4.17 0 0 0
0 nac1-01
$aDisk.DiskRaidInfo
ActiveNodeName
ContainerType
DiskAggregateInfo
DiskOutageInfo
DiskSpareInfo
DiskUid
EffectiveDiskType
EffectiveRpm
NcController
PhysicalBlocks
Position
SparePool
UsedBlocks
EffectiveRpmSpecified
PhysicalBlocksSpecified
UsedBlocksSpecified
$aDisk.DiskStatsInfo
AverageLatency
BytesPerSector
DiskIoKbps
DiskIops
DiskUid
NcController
PathErrorCount
PowerOnTimeInterval
PowerOnTimeIntervalTS
SectorsRead
SectorsWritten
AverageLatencySpecified
BytesPerSectorSpecified
DiskIoKbpsSpecified
DiskIopsSpecified
PathErrorCountSpecified
PowerOnTimeIntervalSpecified
SectorsReadSpecified
SectorsWrittenSpecified
$aDisk.DiskUid
4E455441:50502020:56442D34:3030304D:422D465A:2D415441:36343332:33363031:00000000:00000000
$aDisk.Name
nac1-01:v4.17
$aDisk.NcController
Name Address Vserver Version
---- ------- ------- -------
192.168.168.30 192.168.168.30
NetApp Release 8.1.3
Cluster-Mode: Sat Jun 08 08:07:07 P..
What about disk
state?
One thing that might appear to be missing is information
similar to the NetApp Clustered ONTAP CLI command:
::> storage disk
show -fields state
With the possible states being: broken, copy, maintenance, partner, pending, present, reconstructing, removed,
spare, unfail and zeroing.
Using PowerShell, you can find a group of disks based on
their container type (such as aggregate/broken/labelmaint/maintenance/spare/unassigned/unknown/volume)
with a query:
$diskQuery = Get-NcDisk
-Template
Initialize-NcObjectProperty
-object $diskQuery -name DiskRaidInfo
$diskQuery.DiskRaidInfo.ContainerType
= “broken”
$disks = Get-NcDisk -Query
$diskQuery
Image: Example of
using PowerShell to find “broken” disks
I’m certain that state will be added in future version of
the Data ONTAP PowerShell toolkit.
Comments
Post a Comment