// Copyright (c) 2012 DMTF. All rights reserved. [Version ( "2.35.0" ), UMLPackagePath ( "CIM::Core::StorageExtent" ), 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.\n" "\'Relocating\' indicates the extent is being relocated." ), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "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", "Relocating", "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) \n" "7 = 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. \n" "Formatted 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) \n" "6 = FC NodeWWN (NameFormat SHOULD be NAA or EUI) \n" "7 = Serial Number/Vendor/Model (NameFormat SHOULD be " "SNVM) \n" "The 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; [Experimental, Description ( "Indicates the intended usage or any restrictions that " "may have been imposed on the usage of this component. " "For example, an element may be reserved for use by the " "block server. In that case the Usage of the element is " "marked as \"Reserved for the ComputerSystem\". In the " "case of \"Other\", see OtherUsageDescription for more " "information. In the value map, the \"Element Component\" " "indicates a StorageVolume or LogicalDisk that is only " "available as an EmbeddedInstance. The storage that it " "represents may also be represented as another " "StorageExent that is a component of another " "LogicalElement. \n" "\"Reserved to be Unrestricted Pool Contributor\": " "Indicates the element is currently available and it is " "intended to be used as an Unrestricted Pool Contributor. " "Once such element is in use, the elements Usage value " "will change to \"In use as Unrestricted Pool " "Contributor\". \n" "Use the method GetElementsBasedOnUsage to locate such " "volumes or logical disks." ), ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "..", "32768..65535" }, Values { "Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved by Replication Services", "Reserved by Migration Services", "Local Replica Source", "Remote Replica Source", "Local Replica Target", "Remote Replica Target", "Local Replica Source or Target", "Remote Replica Source or Target", "Delta Replica Target", "Element Component", "Reserved to be Unrestricted Pool Contributor", "Composite Volume Member", "Composite LogicalDisk Member", "Reserved for Sparing", "In use as Unrestricted Pool Contributor", "Reserved to be Delta Replica Pool Contributor", "Reserved to be Local Replication Pool Contributor", "Reserved to be Remote Replication Pool Contributor", "In use as Delta Replica Pool Contributor", "In use as Local Replication Pool Contributor", "In use as Remote Replication Pool Contributor", "DMTF Reserved", "Vendor Reserved" }, ModelCorrespondence { "CIM_StorageExtent.OtherUsageDescription" }] uint16 Usage; [Experimental, Description ( "Populated when \"Usage\" has the value of \"Other\"." ), ModelCorrespondence { "CIM_StorageExtent.Usage" }] string OtherUsageDescription; [Experimental, Description ( "Indicates which values from the \"Usage\" valuemap can " "be manipulated by a client using the method " "\"StorageConfigurationService.RequestUsageChange\"." ), ModelCorrespondence { "CIM_StorageExtent.Usage" }] uint16 ClientSettableUsage[]; [Experimental, Description ( "If not null, then IsComposite shall be true. Number of " "StorageExtents to stripe as a collective set. In SCSI " "SCC, this value is defined as the number of stripes to " "count before continuing to map into the next contiguous " "set of Extents, beyond the current stripe." ), MappingStrings { "MIF.DMTF|Volume Set|001.5" }] uint64 ExtentInterleaveDepth; [Experimental, Description ( "If not null, then IsComposite shall be true. Number of " "contiguous underlying StorageExtents counted before " "looping back to the first underlying StorageExtent of " "the current stripe. It is the number of StorageExtents " "forming the user data stripe." ), MappingStrings { "MIF.DMTF|Volume Set|001.4" }] uint64 ExtentStripeLength; [Experimental, Description ( "True indicates that the data is a composition of various " "StorageExtents that are associated to this StorageExtent " "via a CIM_BasedOn. Composition models the distribution " "of user data across one or more underlying " "StorageExtents, which may or not be protected by some " "redundancy mechanism. Composite extents represent a " "contiguous range of logical blocks. Composite extents " "may overlap, however, the underlying StorageExtents " "within the overlap shall not contain any check data. " "Distribution of check data may be specified using the " "CompositeExtentBasedOn association." )] boolean IsComposite = true; [Experimental, Description ( "If not null, then IsComposite shall be true. True " "indicates that the data is concatenated across the " "various StorageExtents in the Group." )] boolean IsConcatenated; [Experimental, Description ( "An array of strings used to discriminate the association " "context in which this StorageExtent is instantiated. " "Each element of the array should be prefixed by a well " "known organization name followed by a colon and followed " "by a string defined by that organization. For example, " "SNIA SMI-S compliant instances might contain one or more " "of the following values: \n" "\'SNIA:Pool Component\' - A StorageExtent (or " "CompositeExtent) that represents storage of a " "StoragePool and has an AssociatedComponentExtent to its " "StoragePool, but is not a remaining extent. \n" "\'SNIA:Remaining\' - A StorageExtent that has an " "AssociatedRemainingExtent to a StoragePool (representing " "free storage in the StoragePool). \n" "\'SNIA:Intermediate\' - A StorageExtent (or " "CompositeExtent) that is neither a Pool Component nor a " "Remaining Extent (it does not represent storage in the " "pool, remaining or otherwise). \n" "\'SNIA:Composite\' - A StorageExtent that is a " "CompositeExtent. \n" "\'SNIA:DiskDrive\' - A StorageExtent that is the media " "on a Disk Drive. \n" "\'SNIA:Imported\' - A StorageExtent that is imported " "from an external source. \n" "\'SNIA:Allocated\' - A StorageExtent that is subclassed " "to StorageVolume or LogicalDisk, and has an " "AllocatedFromStoragePool association from a Concrete " "StoragePool. \n" "\'SNIA:Shadow\' - A StorageExtent (or subclass) that " "represents a StorageExtent in another autonomous profile " "(e.g., the StorageVirtualizer has StorageVolumes " "(Shadow) that represent StorageVolumes exported by " "Arrays). \n" "\'SNIA:Spare\' - A StorageExtent that acts as a spare " "for other StorageExtents (and has the IsSpare " "association). \n" "\'SNIA:Reserved\' - A StorageExtent that is reserved for " "some system use within the autonomous profile (e.g., in " "NAS profiles, an Allocated LogicalDisk is reserved for " "holding Filesystems)." )] string ExtentDiscriminator[]; [Experimental, Description ( "CompressionRate identifies whether or not compression is " "being applied to the volume and at what rate." ), ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, Values { "Unknown", "None", "High", "Medium", "Low", "DMTF Reserved", "Vendor Specific" }, ModelCorrespondence { "CIM_StorageSetting.CompressionRate", "CIM_StorageExtent.IsCompressed" }] uint16 CompressionRate = 1; [Experimental, Description ( "The CompressionState indicates whether the compression " "is pending, initializing, in progress or completed." ), ValueMap { "1", "2", "3", "4", "5", "..", "32768..65535" }, Values { "Not applicable", "Initializing", "InProgress", "Pending", "Completed", "DMTF Reserved", "Vendor Specific" }, ModelCorrespondence { "CIM_StorageExtent.CompressionRate", "CIM_StorageExtent.IsCompressed" }] uint16 CompressionState; [Experimental, Description ( "The IsCompressed property indicates whether or not the " "data in the storage extent is compressed. When set to " "\"true\" the data is compressed. When set to \"false\" " "the data is not compressed." ), ModelCorrespondence { "CIM_StorageExtent.CompressionRate" }] boolean IsCompressed; };