Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
NetApp Unified Storage Appliance report in Aperi - design document
Contents
Create a new Unified Storage Appliance Report - Requirements
NetApp devices represent themselves in three different ways (depending on customer usage). Combined, these are referred to as a Unified Storage Appliance. The three representations include:
- Traditional NAS filer (appliance storage is presented to clients as mounted file shares)
- FC block storage array (appliance provides FC attached blocks/volumes and looks just like a storage subsystem from this view)
- iSCSI block storage array (appliance provides iSCSI attached target volumes)
To support a Unified Storage Appliance report, Aperi must gather information for all three representations.
The Aperi data component gathers information on NetApp from three sources:
- Aperi data agent which sees the mounted file systems or Shares via NFS or CIFS views from a client perspective
- NetApp SNMP MIB from which we get some basic, high level asset and simple capacity information on the whole NetApp box.
- NetApp SMI-S agent
There is a chance that this technique may produce inaccurate results.
The Unified Storage View needs to show the following type of capacity information:
- Show Appliance capacities - raw, used, reserved storage
- Total storage capacity used for NAS, iSCSI, FCP Blocks, snapshot, snapshot reserve, free, and unallocated.
- Asset Information will already be available through information gathered in NAS Self-Contained Profile
- RAID configuration for aggregates
Note that all of the above information will be available directly through SMI-S extension(s) from NetApp. We will use our existing SMI-S support structure as a base and gather information from the new NetApp vendor specific profile. The intent is to create a new Unified Storage Appliance Report that simply shows any and all information that NetApp gives in the vendor specific profile. We may wish to augment the information provided in the new profile with data we gather from the Array Profile and the SMI-S Self-Contained NAS Profile.
Report Description
There will be a series of drill down reports structured on four levels.
- The top level report displays general information about a NetApp storage subsystem. A row in this report has the following columns:
- two drill down icons for accessing "Volume Details" and "Aggregate Details" reports
- "Filer Name"
- "Raw Storage" - total disk capacities
- "Assigned Storage" - storage capacity assigned to aggregates. This is calculated as sum of TotalManagedSpace for all the concrete pools of a filer.
- "Free Space on Aggregates" - space that has not been consumed by the existing FlexVols and can be used to create new FlexVols. This is the sum of RemainingManagedSpace for all the concrete pools of a filer. A traditional volume consumes all the space in its aggregate.
- "Spare Space" - total space on spare disks
- "Spare Disks" - total number of spare disks
- "Files Space" - total space occupied by files
- "LUNs Space" - total space occupied by LUNs
- "Snapshot Area Space" - total space occupied by snapshots
- "Free Space on Volumes" - total free space on all volumes
- "RAID Overhead" - space reserved for RAID overhead
- Second level reports
- Volume Details. Each row corresponds to a volume and contains the following columns:
- one drill down icon for accessing "Volume Content: LUNs and Shares" report
- "Filer Name"
- "Volume Mount Point"
- "Volume Type" - flexible or traditional.Will be determined based on the StorageExtent type of the volume.
- "Total Volume Space" - Collected and displayed here from CIM_LocalFileSystem.FileSystemSize
- "Free Space" - free space on the volume Collected from CIM_LocalFileSystem.AvailableSpace
- "Number of LUNs" - number of LUNs created on this volume
- "Number of Share" - total number of File Shares
- "Files Space" - space occupied by files in this volume
- "LUNs Space" - space occupied by LUNs in this volume
- "Snapshot Area Space" - space occupied by snapshots in this volume
- "Aggregate the Volume Resides On"
- Aggregate Details. The columns of this report are:
- "Filer Name"
- "Aggregate Name",
- "Aggregate Raid Level"
- "Aggregate Total Space" - is collected from CIM_StoragePool.TotalManagedSpace, where CIM_StoragePool is a concrete pool representing this aggregate.
- "Aggregate Free Space" - if this aggregate contains FlexVols this value is the space that can be used for the creation of new volumes. If it contains a traditional volume, this column is 0. Collected from CIM_StoragePool.RemainingManagedSpace
- "Number of disks in the Aggregate"
- "Files Space" - space occupied by the files in the volumes that resides on the aggregate
- "LUNs Space" - space occupied by LUNs in the volumes that resides on the aggregate
- "Snapshot Area Space" - space occupied by snapshots in the volumes that resides on the aggregate
- "Free Space on Volumes" - total free space in the volumes of the aggregate
- Volume Details. Each row corresponds to a volume and contains the following columns:
- "Volume Content: LUNs and Shares". Describes the file shares and LUNs that are part of the volume. The columns of this report are:
- drill down icon that will be activated only if the row represents a LUN that is mapped to hosts. This icon will drill down to the "LUN Mapping Details"
- "Filer Name"
- "Volume Mount Point"
- "LUN/Share Name" - LUN name, which is an absolute file name or the export name ( the name with which a file/directory is exported/shared )
- "Protocol" - CIFS or/and NFS for shares and iSCSI or/and FC for LUNs. A file can be shared using both CIFS and NFS and a LUN can be mapped both through FC and iSCSI.
- "Allocated Space" - for exported files and directories this will be "N/A", for LUNs will represent the LUN's capacity
- "LUN Mapping Details". Displays the FC initiator ports or iSCSI initiator nodes that have access to this LUN.
- "Filer Name"
- "Volume Mount Point"
- "LUN Name"
- "Protocol"
- "Host Node/Port name"
The report is located in Data Manager -> Reporting -> Asset -> System-wide -> NetApp Unified Storage Report. The report will contain data only after probing the NetApp filers using the SMI-S agent. That is by creating probes for the filers that appear under Storage Subsystems in Aperi Storage Manager -> Monitoring -> Probes -> Create Probe.
SMI-S agent data collection (Device Server)
Part of the data needed by this report is collected by the implementation of "Array" and "NAS Self Contained" profiles. New steps will be added to collect data from NetApp vendor specific sub-profile.
LUNs masking and mapping
Paths between iSCSI/FC initiators, LUNs and target ports are collected as part of LUN Masking and Mapping subprofile.
In the case of the iSCSI protocol the paths between LUNs and the initiator nodes are not saved in T_RES_DATA_PATH. This problem seems to get solved if the steps "collectSAPAvailableForElement" and "collectDeviceSAPImplementation" are moved before "collectProtocollControllerForUnit" in org.eclipse.aperi.disk.collection.ProbeGenericMaskingMappingProcess. Side effects must be analyzed
The main classes that implement LUNs Masking and Mapping subprofile are:
- org.eclipse.aperi.disk.collection.ProbeGenericMaskingMappingProcess - defines and executes the steps necessary for collecting the instances in LUN Masking and Mapping profile
- org.eclipse.aperi.disk.collection.MappingMaskingProcessor - collects data from the steps executed be ProbeGenericMaskingMappingProcess and saves it in the repository by calling appropriate mappers
The collected data is put in T_RES_CLIENT_SETTING, T_RES_MASKING_INFO, T_RES_PORT and T_RES_DATA_PATH. The iSCSI node names are stored in T_RES_PORT. Side effects must be analyzed. T_RES_Port.FormatName is always 1. Should be changed to reflect the different types of names stored in this table ( FC WWN, iSCSI node names)
Correlation between Array Profile entities (storage extents, Pools, LUNs) and Self Contained NAS entities (filesystems)
The aggregate a volume resides on, will be found using storage extents, skipping over the logical disk (see schema below).
A full path from a Filesystem (i.e volume which can be traditional or FlexVol) to its containing storage pool ( aggregate ) is represented in SMI-S specification in the following way:
- CIM_FileSystem ------- CIM_ResidesOnExtent ------- CIM_LogicalDisk
- CIM_LogicalDisk ------ CIM_BasedOn --------------- CIM_StorageExtent
- CIM_StorageExtent ---- CIM_ConcreteComponent ----- CIM_StoragePool
The path between CIM_FileSystem and CIM_StorageExtent can be shortcuted, in this particular case using the condition: CIM_FileSystem.Root == '/vol/'+ CIM_StorageExtent.Name .
CIM_StorageExtent(s) and their associations to CIM_StoragePool(s) are collected by the Array Profile implementation and stored in T_RES_STORAGE_EXTENT and T_RES_STORAGE_POOL.
Instances of CIM_FileSystem will be collected by the NAS Self-Contained Profile implementation.
The storage extents containing volumes are collected in the step named "collectExtentsFromPool", which is a sub step of "collectPoolsFromComputerSystem" (see org.eclipse.aperi.disk.collection.ProbeNetAppSubsystemProcess). The association used is CIM_StoragePool (starting point):CIM_ConcreteComponent (association):CIM_StorageExtent (final point).
The LUNs and the volumes they are part of will be correlated using the LUNs' names, volumes mount point and the serial number of their storage subsystem. The LUN names are in fact absolute file names of which prefix is the mount point of the volume. For example the LUN named /vol/vol0/lun0 is part of the WAFL filesystem mounted at /vol/vol0.
Gui and Data Server Implementation Details
The class org.eclipse.aperi.TStorm.server.guireq.GuiReportReq will be extended to support a new type of report, which will have five subtypes:
/** New Report type */
public static final int NETAPP_UNIFIED_STORAGE = 88
/** NETAPP_UNIFIED_STORAGE subreports */
public static final int NETAPP_UNIFIED_STORAGE_MAIN = 112;
public static final int NETAPP_UNIFIED_STORAGE_VOLUMES = 113;
public static final int NETAPP_UNIFIED_STORAGE_AGGR = 114;
public static final int NETAPP_UNIFIED_STORAGE_VOLCONTENT = 115;
public static final int NETAPP_UNIFIED_STORAGE_LUNS = 116;
Following classes will be added to support the new report:
- org.eclipse.aperi.TStorm.gui.NetAppUnifiedStorageTable - GUI tables for displaying the reports
- org.eclipse.aperi.TStorm.common.NetAppUnifiedStorageAdjuster - is the data model behind NetAppUnifiedStorageTable
- org.eclipse.aperi.repository.report.RptNetAppUnifiedStorageReport - this class is instantiated in DataServer and executes the queries against the database to extract the data. In this class the queries for each subtype of the NetApp Unified Storage report are defined and executed.
A new serializable object is defined to transfer data between Data Server and GUI: org.eclipse.aperi.TStorm.server.guireq.RespNetAppUnifiedStorageReport.
Glossary
This document blends together NetApp, SMI-S and Aperi terms and I hope that this glossary will clarify their intended meaning .
- aggregate
- It is the highest level that Data ONTAP uses for grouping disks. Lower levels are plexes and RAID groups, which are the basis for an aggregate. A volume is created on an aggregate. An aggregate is represented as a CIM_StoragePool instance and it appears in Aperi as a storage pool.
- filer
- A shorthand for a FAS or N-series Unified Storage System.
- file share
- A directory or a file that is made available by a filer to clients through NFS or CIFS protocol
- FlexVol
- A FlexVol is a type of volume that shares its containing aggregate with many other FlexVols.
- LUN
- Logical unit of storage. Storage Volume and LUNs have equivalent meaning.
- Data ONTAP
- It is the operating system which manages a FAS or N-series Unified Storage System.
- plex
- It is an assembly of RAID groups. Data ONTAP manages mirroring at plex level. An aggregate has only one plex when it is unmirrored and two plexes when it is mirrored.
- volume
- It is a Data ONTAP file system of type WAFL. The LUNs are created on a volume as files but exposed as block storage space. The file shares are also part of a volume. gives to us in the vendor specific profile. A volume is represented by NetApp SMI-S agent using an instance of CIM_FileSystem.