// =================================================================== // Title: Core Storage Extents // $State: Exp $ // $Date: 2005/02/24 20:05:58 $ // $Source: /cvs/MSB/pegasus/Schemas/CIMPrelim291/Attic/Core_StorageExtent.mof,v $ // $Revision: 1.1 $ // =================================================================== //#pragma inLine ("Includes/copyright.inc") // Copyright 1998-2005 Distributed Management Task Force, Inc. (DMTF). // All rights reserved. // DMTF is a not-for-profit association of industry members dedicated // to promoting enterprise and systems management and interoperability. // DMTF specifications and documents may be reproduced for uses // consistent with this purpose by members and non-members, // provided that correct attribution is given. // As DMTF specifications may be revised from time to time, // the particular version and release date should always be noted. // // Implementation of certain elements of this standard or proposed // standard may be subject to third party patent rights, including // provisional patent rights (herein "patent rights"). DMTF makes // no representations to users of the standard as to the existence // of such rights, and is not responsible to recognize, disclose, or // identify any or all such third party patent right, owners or // claimants, nor for any incomplete or inaccurate identification or // disclosure of such rights, owners or claimants. DMTF shall have no // liability to any party, in any manner or circumstance, under any // legal theory whatsoever, for failure to recognize, disclose, or // identify any such third party patent rights, or for such party's // reliance on the standard or incorporation thereof in its product, // protocols or testing procedures. DMTF shall have no liability to // any party implementing such standard, whether such implementation // is foreseeable or not, nor to any patent owner or claimant, and shall // have no liability or responsibility for costs or losses incurred if // a standard is withdrawn or modified after publication, and shall be // indemnified and held harmless by any party implementing the // standard from any and all claims of infringement by a patent owner // for such implementations. // // For information about patents held by third-parties which have // notified the DMTF that, in their opinion, such patent may relate to // or impact implementations of DMTF standards, visit // http://www.dmtf.org/about/policies/disclosures.php. //#pragma inLine // =================================================================== // Description: The Core Model defines basic management concepts. // This file defines the concepts and classes to model // a type of LogicalDevice, StorageExtents. // // The object classes below are listed in an order that // avoids forward references. Required objects, defined // by other working groups, are omitted. // ================================================================== // Change Log for v2.9 Preliminary // CR1353 - Promote some properties from StorageVolume to // Storage Extent // // Change Log for v2.8 Final // CR1210 - Removal of experimental Qualifiers for core. // // Change Log for v2.8 Preliminary // CR978 - Promote NoSinglePointOfFailure, DataRedundancy, and // SpindleRedundancy from StorageVolue to StorageExtent. // CR1019 - CIM Versioning for 2.8 Preliminary // CR1044 - Add StorageExtent.Primordial // // Change Log for v2.7 Final // CR967 - Add values "DMTF reserved" and "Vendor reserved" to // StorageExtent.ExtentStatus. // CR968 - Remove the Experimental qualifier // // Change Log for v2.7 // CR722 - Add StorageExtent.ExtentStatus // CR775 - StorageExtent.NoSinglePointOfFailure, StorageExtent. // DataRedundancy, StorageExtent.SpindleRedundancy // CR777 - Add StorageExtent.DeltaReservation // CR862 - Define StorageExtent.ExtentStatus as an array // CR884 - Move RAID centric properties from StorageExtent to // StorageVolume // ================================================================== #pragma locale ("en_US") // =================================================================== // StorageExtent // =================================================================== [Version ( "2.8.1000" ), Description ( "StorageExtent describes the capabilities and management of the " "various media that exist to store data and allow data " "retrieval. This superclass could be used to represent the " "various components of RAID (Hardware or Software) or as a raw " "logical extent on top of physical media.")] class CIM_StorageExtent : CIM_LogicalDevice { [Description ( "Type of data organization used."), ValueMap { "0", "1", "2", "3", "4" }, Values { "Other", "Unknown", "Fixed Block", "Variable Block", "Count Key Data" }] uint16 DataOrganization; [Description ( "A free form string describing the media and/or its use."), MappingStrings { "MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr" }] string Purpose; [Description ( "Access describes whether the media is readable (value=1), " "writeable (value=2), or both (value=3). \"Unknown\" (0) and " "\"Write Once\" (4) can also be defined."), ValueMap { "0", "1", "2", "3", "4" }, Values { "Unknown", "Readable", "Writeable", "Read/Write Supported", "Write Once" }] uint16 Access; [Description ( "ErrorMethodology is a free-form string describing the type " "of error detection and correction supported by this " "StorageExtent.")] string ErrorMethodology; [Description ( "Size in bytes of the blocks which form this StorageExtent. " "If variable block size, then the maximum block size in " "bytes should be specified. If the block size is unknown or " "if a block concept is not valid (for example, for " "AggregateExtents, Memory or LogicalDisks), enter a 1."), Units ( "Bytes" ), MappingStrings { "MIF.DMTF|Host Storage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|Storage Devices|001.5" }] uint64 BlockSize; [Description ( "Total number of logically contiguous blocks, of size Block " "Size, which form this Extent. The total size of the Extent " "can be calculated by multiplying BlockSize by " "NumberOfBlocks. If the BlockSize is 1, this property is the " "total size of the Extent."), MappingStrings { "MIF.DMTF|Host Storage|001.5", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize" }] uint64 NumberOfBlocks; [Description ( "The maximum number of blocks, of size BlockSize, which are " "available for consumption when layering StorageExtents " "using the BasedOn association. This property only has " "meaning when this StorageExtent is an Antecedent reference " "in a BasedOn relationship. For example, a StorageExtent " "could be composed of 120 blocks. However, the Extent itself " "may use 20 blocks for redundancy data. If another " "StorageExtent is BasedOn this Extent, only 100 blocks would " "be available to it. This information ('100 blocks is " "available for consumption') is indicated in the " "ConsumableBlocks property.")] uint64 ConsumableBlocks; [Description ( "True indicates that the underlying StorageExtent(s) " "participate in a StorageRedundancyGroup.")] boolean IsBasedOnUnderlyingRedundancy; [Description ( "Boolean set to TRUE if the Storage is sequentially accessed " "by a MediaAccessDevice. A TapePartition is an example of a " "sequentially accessed StorageExtent. StorageVolumes, Disk " "Partitions and LogicalDisks represent randomly accessed " "Extents.")] boolean SequentialAccess; [Description ( "StorageExtents have additional status information beyond " "that captured in the OperationalStatus and other " "properties, inherited from ManagedSystemElement. This " "additional information (for example, \"Protection " "Disabled\", value=9) is captured in the ExtentStatus " "property. \n" "'In-Band Access Granted' says that access to data on an " "extent is granted to some consumer and is only valid when " "'Exported' is also set. It is set as a side effect of " "PrivilegeManagementService.ChangeAccess or equivalent " "interfaces. \n" "'Imported' indicates that the extent is used in the current " "system, but known to be managed by some other system. For " "example, a server imports volumes from a disk array. \n" "'Exported' indicates the extent is meant to be used by some " "comsumer. A disk array's logical units are exported. \n" "Intermediate composite extents may be neither imported nor " "exported."), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535" }, Values { "Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved" }] uint16 ExtentStatus[]; [Description ( "Indicates whether or not there exists no single point of " "failure."), ModelCorrespondence { "CIM_StorageSetting.NoSinglePointOfFailure" }] boolean NoSinglePointOfFailure; [Description ( "Number of complete copies of data currently maintained."), ModelCorrespondence { "CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin" }] uint16 DataRedundancy; [Description ( "How many physical packages can currently fail without data " "loss. For example, in the storage domain, this might be " "disk spindles."), ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin" }] uint16 PackageRedundancy; [Description ( "Current value for Delta reservation. This is a percentage " "that specifies the amount of space that should be reserved " "in a replica for caching changes."), Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), ModelCorrespondence { "CIM_StorageSetting.DeltaReservationGoal", "CIM_StorageSetting.DeltaReservationMax", "CIM_StorageSetting.DeltaReservationMin" }] uint8 DeltaReservation; [Description ( "If true, \"Primordial\" indicates that the containing " "System does not have the ability to create or delete this " "operational element. This is important because " "StorageExtents are assembled into higher-level abstractions " "using the BasedOn association. Although the higher-level " "abstractions can be created and deleted, the most basic, " "(i.e. primordial), hardware-based storage entities cannot. " "They are physically realized as part of the System, or are " "actually managed by some other System and imported as if " "they were physically realized. In other words, a Primordial " "StorageExtent exists in, but is not created by its System " "and conversely a non-Primordial StorageExtent is created in " "the context of its System. For StorageVolumes, this " "property will generally be false. One use of this property " "is to enable algorithms that aggregate " "StorageExtent.ConsumableSpace across all, StorageExtents " "but that also want to distinquish the space that underlies " "Primordial StoragePools. Since implementations are not " "required to surface all Component StorageExtents of a " "StoragePool, this information is not accessible in any " "other way.")] boolean Primordial=false; [Override ( "Name" ), Description ( "A unique identifier for the Extent."), MappingStrings { "SPC.INCITS-T10| VPD 83, " "Association 0 | Identifier" }, ModelCorrespondence { "CIM_StorageExtent.NameFormat", "CIM_StorageExtent.NameNamespace" }] string Name; [Description ( "The list here applies to all StorageExtent subclasses. " "Please look at the Description in each subclass for " "guidelines on the approriate values for that subclass. Note " "that any of these formats could apply to a CompositeExtent. " "\n\n" "Note - this property originally touched on two concepts " "that are now separated into this property and " "NameNamespace. Values 2,3,4,5,6, and 8 are retained for " "backwards compatibility but are deprecated in lieu of the " "corresponding values in CIM_StorageExtent.NameNamespace. \n" "\n" "For example, the preferred source for SCSI virtual (RAID) " "disk names is from Inquiry VPD page 83 response, type 3 " "identifiers. These will have NameFormat set to 'NAA' and " "NameNamespace to 'VPD83Type3'. \n" "\n" "Format of the Name property. Values for extents " "representing SCSI volumes are (per SCSI SPC-3): \n" "2 = VPD Page 83, NAA IEEE Registered Extended (VPD83NAA6) \n" "(DEPRECATED) \n" "3 = VPD Page 83, NAA IEEE Registered (VPD83NAA5) \n" "(DEPRECATED) \n" "4 = VPD Page 83, (VPD83Type2) (DEPRECATED) \n" "5 = VPD Page 83, \n" "T10 Vendor Identification (VPD83Type1) (DEPRECATED) \n" "6 = VPD Page 83, Vendor Specific (VPD83Type0) (DEPRECATED) " "\n7 = Serial Number/Vendor/Model (SNVM) SNVM is 3 strings " "representing the vendor name, product name within the " "vendor namespace, and the serial number within the model " "namespace. Strings are delimited with a '+'. Spaces may be " "included and are significant. The serial number is the text " "representation of the serial number in hexadecimal upper " "case. This represents the vendor and model ID from SCSI " "Inquiry data; the vendor field MUST be 8 characters wide " "and the product field MUST be 16 characters wide. For " "example, \n" "'ACME____+SUPER DISK______+124437458' (_ is a space " "character) \n" "8 = Node WWN (for single LUN/controller) (NodeWWN) \n" "(DEPRECATED) \n" "9 = NAA as a generic format. See \n" "http://standards.ieee.org/regauth/oui/tutorials/fibrecomp_id.html. " "Formatted as 16 or 32 unseparated uppercase hex characters " "(2 per binary byte). For example '21000020372D3C73' \n" "10 = EUI as a generic format (EUI64) See \n" "http://standards.ieee.org/regauth/oui/tutorials/EUI64.html. " "\nFormatted as 16 unseparated uppercase hex characters (2 " "per binary byte) \n" "11 = T10 vendor identifier format as returned by SCSI " "Inquiry VPD page 83, identifier type 1. See T10 SPC-3 " "specification. This is the 8-byte ASCII vendor ID from the " "T10 registry followed by a vendor specific ASCII " "identifier; spaces are permitted. For non SCSI volumes, " "'SNVM' may be the most appropriate choice. 12 = OS Device " "Name (for LogicalDisks). See LogicalDisk Name description " "for details."), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10","11", "12" }, Values { "Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID", "OS Device Name" }, ModelCorrespondence { "CIM_StorageExtent.Name", "CIM_StorageExtent.NameNamespace", "CIM_StorageExtent.OtherNameFormat" }] uint16 NameFormat; [Description ( "The preferred source SCSI for volume names is SCSI VPD Page " "83 responses. Page 83 returns a list of identifiers for " "various device elements. The metadata for each identifier " "includes an Association field, identifiers with association " "of 0 apply to volumes. Page 83 supports several namespaces " "specified in the Type field in the identifier metadata. See " "SCSI SPC-3 specification. \n" "2 = VPD Page 83, Type 3 NAA (NameFormat SHOULD be NAA) \n" "3 = VPD Page 83, Type 2 EUI64 (NameFormat EUI) \n" "4 = VPD Page 83, Type 1 T10 Vendor Identification \n" "(NameFormat T10) \n" "Less preferred volume namespaces from other interfaces: \n" "5 = VPD page 80, Serial number (NameFormat SHOULD be Other) " "\n6 = FC NodeWWN (NameFormat SHOULD be NAA or EUI) \n" "7 = Serial Number/Vendor/Model (NameFormat SHOULD be SNVM) " "\nThe preferred namespace for LogigicalDisk names is " "platform specific device namespace; see LogigicalDIsk " "Description. \n" "8 = OS Device Namespace."), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, Values { "Unknown", "Other", "VPD83Type3", "VPD83Type2", "VPD83Type1", "VPD80", "NodeWWN", "SNVM", "OS Device Namespace" }, MappingStrings { "SPC.INCITS-T10| VPD 83, " "Association 0 | Identifier" }, ModelCorrespondence { "CIM_StorageExtent.Name", "CIM_StorageExtent.OtherNameNamespace", "CIM_StorageExtent.NameFormat" }] uint16 NameNamespace; [Description ( "A string describing the namespace of the Name property when " "NameNamespace includes the value 1, \"Other\"."), ModelCorrespondence { "CIM_StorageExtent.NameNamespace" }] string OtherNameNamespace; [Description ( "A string describing the format of the Name property when " "NameFormat includes the value 1, \"Other\"."), ModelCorrespondence { "CIM_StorageExtent.NameFormat" }] string OtherNameFormat; }; // =================================================================== // BasedOn // =================================================================== [Association, Version ( "2.6.0" ), Description ( "BasedOn is an association describing how StorageExtents can be " "assembled from lower level Extents. For example, " "ProtectedSpaceExtents are parts of PhysicalExtents, while " "VolumeSets are assembled from one or more Physical or " "ProtectedSpaceExtents. As another example, CacheMemory can be " "defined independently and realized in a PhysicalElement or can " "be 'based on' Volatile or NonVolatileStorageExtents.")] class CIM_BasedOn : CIM_Dependency { [Override ( "Antecedent" ), Description ( "The lower level StorageExtent.")] CIM_StorageExtent REF Antecedent; [Override ( "Dependent" ), Description ( "The higher level StorageExtent.")] CIM_StorageExtent REF Dependent; [Description ( "StartingAddress indicates where in lower level storage, the " "higher level Extent begins.")] uint64 StartingAddress; [Description ( "EndingAddress indicates where in lower level storage, the " "higher level Extent ends. This property is useful when " "mapping non-contiguous Extents into a higher level " "grouping.")] uint64 EndingAddress; [Description ( "If there is an order to the BasedOn associations that " "describe how a higher level StorageExtent is assembled, the " "OrderIndex property indicates this. When an order exists, " "the instances of BasedOn with the same Dependent value " "(i.e., the same higher level Extent) should place unique " "values in the OrderIndex property. The lowest value implies " "the first member of the collection of lower level Extents, " "and increasing values imply successive members of the " "collection. If there is no ordered relationship, a value of " "zero should be specified. An example of the use of this " "property is to define a RAID-0 striped array of 3 disks. " "The resultant RAID array is a StorageExtent that is " "dependent on (BasedOn) the StorageExtents that describe " "each of the 3 disks. The OrderIndex of each BasedOn " "association from the disk Extents to the RAID array could " "be specified as 1, 2 and 3 to indicate the order in which " "the disk Extents are used to access the RAID data.")] uint16 OrderIndex; }; // =================================================================== // end of file // ===================================================================