1 karl 1.1 // ===================================================================
2 // Title: Core Storage Extents
3 // $State: Preliminary $
4 // $Date: 2004/07/08 15:08:22 $
5 // $Source: /home/dmtf2/dotorg/var/cvs/repositories/dev/Schema/MOF/Core_StorageExtent.mof,v $
6 // $Revision: 1.7 $
7 // ===================================================================
8 //#pragma inLine ("Includes/copyright.inc")
9 // Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
10 // All rights reserved.
11 // DMTF is a not-for-profit association of industry members dedicated
12 // to promoting enterprise and systems management and interoperability.
13 // DMTF specifications and documents may be reproduced for uses
14 // consistent with this purpose by members and non-members,
15 // provided that correct attribution is given.
16 // As DMTF specifications may be revised from time to time,
17 // the particular version and release date should always be noted.
18 //
19 // Implementation of certain elements of this standard or proposed
20 // standard may be subject to third party patent rights, including
21 // provisional patent rights (herein "patent rights"). DMTF makes
22 karl 1.1 // no representations to users of the standard as to the existence
23 // of such rights, and is not responsible to recognize, disclose, or
24 // identify any or all such third party patent right, owners or
25 // claimants, nor for any incomplete or inaccurate identification or
26 // disclosure of such rights, owners or claimants. DMTF shall have no
27 // liability to any party, in any manner or circumstance, under any
28 // legal theory whatsoever, for failure to recognize, disclose, or
29 // identify any such third party patent rights, or for such party's
30 // reliance on the standard or incorporation thereof in its product,
31 // protocols or testing procedures. DMTF shall have no liability to
32 // any party implementing such standard, whether such implementation
33 // is foreseeable or not, nor to any patent owner or claimant, and shall
34 // have no liability or responsibility for costs or losses incurred if
35 // a standard is withdrawn or modified after publication, and shall be
36 // indemnified and held harmless by any party implementing the
37 // standard from any and all claims of infringement by a patent owner
38 // for such implementations.
39 //
40 // For information about patents held by third-parties which have
41 // notified the DMTF that, in their opinion, such patent may relate to
42 // or impact implementations of DMTF standards, visit
43 karl 1.1 // http://www.dmtf.org/about/policies/disclosures.php.
44 //#pragma inLine
45 // ===================================================================
46 // Description: The Core Model defines basic management concepts.
47 // This file defines the concepts and classes to model
48 // a type of LogicalDevice, StorageExtents.
49 //
50 // The object classes below are listed in an order that
51 // avoids forward references. Required objects, defined
52 // by other working groups, are omitted.
53 // ==================================================================
54 // Change Log for v2.9 Preliminary
55 // CR1353 - Promote some properties from StorageVolume to
56 // Storage Extent
57 //
58 // Change Log for v2.8 Final
59 // CR1210 - Removal of experimental Qualifiers for core.
60 //
61 // Change Log for v2.8 Preliminary
62 // CR978 - Promote NoSinglePointOfFailure, DataRedundancy, and
63 // SpindleRedundancy from StorageVolue to StorageExtent.
64 karl 1.1 // CR1019 - CIM Versioning for 2.8 Preliminary
65 // CR1044 - Add StorageExtent.Primordial
66 //
67 // Change Log for v2.7 Final
68 // CR967 - Add values "DMTF reserved" and "Vendor reserved" to
69 // StorageExtent.ExtentStatus.
70 // CR968 - Remove the Experimental qualifier
71 //
72 // Change Log for v2.7
73 // CR722 - Add StorageExtent.ExtentStatus
74 // CR775 - StorageExtent.NoSinglePointOfFailure, StorageExtent.
75 // DataRedundancy, StorageExtent.SpindleRedundancy
76 // CR777 - Add StorageExtent.DeltaReservation
77 // CR862 - Define StorageExtent.ExtentStatus as an array
78 // CR884 - Move RAID centric properties from StorageExtent to
79 // StorageVolume
80 // ==================================================================
81
82 #pragma locale ("en_US")
83
84
85 karl 1.1 // ===================================================================
86 // StorageExtent
87 // ===================================================================
88 [Version ( "2.8.1000" ), Description (
89 "StorageExtent describes the capabilities and management of the "
90 "various media that exist to store data and allow data "
91 "retrieval. This superclass could be used to represent the "
92 "various components of RAID (Hardware or Software) or as a raw "
93 "logical extent on top of physical media.")]
94 class CIM_StorageExtent : CIM_LogicalDevice {
95
96 [Description (
97 "Type of data organization used."),
98 ValueMap { "0", "1", "2", "3", "4" },
99 Values { "Other", "Unknown", "Fixed Block", "Variable Block",
100 "Count Key Data" }]
101 uint16 DataOrganization;
102
103 [Description (
104 "A free form string describing the media and/or its use."),
105 MappingStrings { "MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr" }]
106 karl 1.1 string Purpose;
107
108 [Description (
109 "Access describes whether the media is readable (value=1), "
110 "writeable (value=2), or both (value=3). \"Unknown\" (0) and "
111 "\"Write Once\" (4) can also be defined."),
112 ValueMap { "0", "1", "2", "3", "4" },
113 Values { "Unknown", "Readable", "Writeable",
114 "Read/Write Supported", "Write Once" }]
115 uint16 Access;
116
117 [Description (
118 "ErrorMethodology is a free-form string describing the type "
119 "of error detection and correction supported by this "
120 "StorageExtent.")]
121 string ErrorMethodology;
122
123 [Description (
124 "Size in bytes of the blocks which form this StorageExtent. "
125 "If variable block size, then the maximum block size in "
126 "bytes should be specified. If the block size is unknown or "
127 karl 1.1 "if a block concept is not valid (for example, for "
128 "AggregateExtents, Memory or LogicalDisks), enter a 1."),
129 Units ( "Bytes" ),
130 MappingStrings { "MIF.DMTF|Host Storage|001.4",
131 "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits",
132 "MIF.DMTF|Storage Devices|001.5" }]
133 uint64 BlockSize;
134
135 [Description (
136 "Total number of logically contiguous blocks, of size Block "
137 "Size, which form this Extent. The total size of the Extent "
138 "can be calculated by multiplying BlockSize by "
139 "NumberOfBlocks. If the BlockSize is 1, this property is the "
140 "total size of the Extent."),
141 MappingStrings { "MIF.DMTF|Host Storage|001.5",
142 "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize" }]
143 uint64 NumberOfBlocks;
144
145 [Description (
146 "The maximum number of blocks, of size BlockSize, which are "
147 "available for consumption when layering StorageExtents "
148 karl 1.1 "using the BasedOn association. This property only has "
149 "meaning when this StorageExtent is an Antecedent reference "
150 "in a BasedOn relationship. For example, a StorageExtent "
151 "could be composed of 120 blocks. However, the Extent itself "
152 "may use 20 blocks for redundancy data. If another "
153 "StorageExtent is BasedOn this Extent, only 100 blocks would "
154 "be available to it. This information ('100 blocks is "
155 "available for consumption') is indicated in the "
156 "ConsumableBlocks property.")]
157 uint64 ConsumableBlocks;
158
159 [Description (
160 "True indicates that the underlying StorageExtent(s) "
161 "participate in a StorageRedundancyGroup.")]
162 boolean IsBasedOnUnderlyingRedundancy;
163
164 [Description (
165 "Boolean set to TRUE if the Storage is sequentially accessed "
166 "by a MediaAccessDevice. A TapePartition is an example of a "
167 "sequentially accessed StorageExtent. StorageVolumes, Disk "
168 "Partitions and LogicalDisks represent randomly accessed "
169 karl 1.1 "Extents.")]
170 boolean SequentialAccess;
171
172 [Description (
173 "StorageExtents have additional status information beyond "
174 "that captured in the OperationalStatus and other "
175 "properties, inherited from ManagedSystemElement. This "
176 "additional information (for example, \"Protection "
177 "Disabled\", value=9) is captured in the ExtentStatus "
178 "property. \n"
179 "'In-Band Access Granted' says that access to data on an "
180 "extent is granted to some consumer and is only valid when "
181 "'Exported' is also set. It is set as a side effect of "
182 "PrivilegeManagementService.ChangeAccess or equivalent "
183 "interfaces. \n"
184 "'Imported' indicates that the extent is used in the current "
185 "system, but known to be managed by some other system. For "
186 "example, a server imports volumes from a disk array. \n"
187 "'Exported' indicates the extent is meant to be used by some "
188 "comsumer. A disk array's logical units are exported. \n"
189 "Intermediate composite extents may be neither imported nor "
190 karl 1.1 "exported."),
191 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
192 "10", "11", "12", "13", "14", "15", "16", "17", "18..32767",
193 "32768..65535" },
194 Values { "Other", "Unknown", "None/Not Applicable", "Broken",
195 "Data Lost", "Dynamic Reconfig", "Exposed",
196 "Fractionally Exposed", "Partially Exposed",
197 "Protection Disabled", "Readying", "Rebuild", "Recalculate",
198 "Spare in Use", "Verify In Progress",
199 "In-Band Access Granted", "Imported", "Exported",
200 "DMTF Reserved", "Vendor Reserved" }]
201 uint16 ExtentStatus[];
202
203 [Description (
204 "Indicates whether or not there exists no single point of "
205 "failure."),
206 ModelCorrespondence {
207 "CIM_StorageSetting.NoSinglePointOfFailure" }]
208 boolean NoSinglePointOfFailure;
209
210 [Description (
211 karl 1.1 "Number of complete copies of data currently maintained."),
212 ModelCorrespondence { "CIM_StorageSetting.DataRedundancyGoal",
213 "CIM_StorageSetting.DataRedundancyMax",
214 "CIM_StorageSetting.DataRedundancyMin" }]
215 uint16 DataRedundancy;
216
217 [Description (
218 "How many physical packages can currently fail without data "
219 "loss. For example, in the storage domain, this might be "
220 "disk spindles."),
221 ModelCorrespondence {
222 "CIM_StorageSetting.PackageRedundancyGoal",
223 "CIM_StorageSetting.PackageRedundancyMax",
224 "CIM_StorageSetting.PackageRedundancyMin" }]
225 uint16 PackageRedundancy;
226
227 [Description (
228 "Current value for Delta reservation. This is a percentage "
229 "that specifies the amount of space that should be reserved "
230 "in a replica for caching changes."),
231 Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ),
232 karl 1.1 ModelCorrespondence { "CIM_StorageSetting.DeltaReservationGoal",
233 "CIM_StorageSetting.DeltaReservationMax",
234 "CIM_StorageSetting.DeltaReservationMin" }]
235 uint8 DeltaReservation;
236
237 [Description (
238 "If true, \"Primordial\" indicates that the containing "
239 "System does not have the ability to create or delete this "
240 "operational element. This is important because "
241 "StorageExtents are assembled into higher-level abstractions "
242 "using the BasedOn association. Although the higher-level "
243 "abstractions can be created and deleted, the most basic, "
244 "(i.e. primordial), hardware-based storage entities cannot. "
245 "They are physically realized as part of the System, or are "
246 "actually managed by some other System and imported as if "
247 "they were physically realized. In other words, a Primordial "
248 "StorageExtent exists in, but is not created by its System "
249 "and conversely a non-Primordial StorageExtent is created in "
250 "the context of its System. For StorageVolumes, this "
251 "property will generally be false. One use of this property "
252 "is to enable algorithms that aggregate "
253 karl 1.1 "StorageExtent.ConsumableSpace across all, StorageExtents "
254 "but that also want to distinquish the space that underlies "
255 "Primordial StoragePools. Since implementations are not "
256 "required to surface all Component StorageExtents of a "
257 "StoragePool, this information is not accessible in any "
258 "other way.")]
259 boolean Primordial=false;
260
261 [Override ( "Name" ), Description (
262 "A unique identifier for the Extent."),
263 MappingStrings { "SPC.INCITS-T10| VPD 83, Association 0 | "
264 "Identifier" },
265 ModelCorrespondence { "CIM_StorageExtent.NameFormat",
266 "CIM_StorageExtent.NameNamespace" }]
267 string Name;
268
269 [Description (
270 "The list here applies to all StorageExtent subclasses. "
271 "Please look at the Description in each subclass for "
272 "guidelines on the approriate values for that subclass. Note "
273 "that any of these formats could apply to a CompositeExtent. "
274 karl 1.1 "\n\n"
275 "Note - this property originally touched on two concepts "
276 "that are now separated into this property and "
277 "NameNamespace. Values 2,3,4,5,6, and 8 are retained for "
278 "backwards compatibility but are deprecated in lieu of the "
279 "corresponding values in CIM_StorageExtent.NameNamespace. \n"
280 "\n"
281 "For example, the preferred source for SCSI virtual (RAID) "
282 "disk names is from Inquiry VPD page 83 response, type 3 "
283 "identifiers. These will have NameFormat set to 'NAA' and "
284 "NameNamespace to 'VPD83Type3'. \n"
285 "\n"
286 "Format of the Name property. Values for extents "
287 "representing SCSI volumes are (per SCSI SPC-3): \n"
288 "2 = VPD Page 83, NAA IEEE Registered Extended (VPD83NAA6) \n"
289 "(DEPRECATED) \n"
290 "3 = VPD Page 83, NAA IEEE Registered (VPD83NAA5) \n"
291 "(DEPRECATED) \n"
292 "4 = VPD Page 83, (VPD83Type2) (DEPRECATED) \n"
293 "5 = VPD Page 83, \n"
294 "T10 Vendor Identification (VPD83Type1) (DEPRECATED) \n"
295 karl 1.1 "6 = VPD Page 83, Vendor Specific (VPD83Type0) (DEPRECATED) "
296 "\n7 = Serial Number/Vendor/Model (SNVM) SNVM is 3 strings "
297 "representing the vendor name, product name within the "
298 "vendor namespace, and the serial number within the model "
299 "namespace. Strings are delimited with a '+'. Spaces may be "
300 "included and are significant. The serial number is the text "
301 "representation of the serial number in hexadecimal upper "
302 "case. This represents the vendor and model ID from SCSI "
303 "Inquiry data; the vendor field MUST be 8 characters wide "
304 "and the product field MUST be 16 characters wide. For "
305 "example, \n"
306 "'ACME____+SUPER DISK______+124437458' (_ is a space "
307 "character) \n"
308 "8 = Node WWN (for single LUN/controller) (NodeWWN) \n"
309 "(DEPRECATED) \n"
310 "9 = NAA as a generic format. See \n"
311 "http://standards.ieee.org/regauth/oui/tutorials/fibrecomp_id.html. "
312 "Formatted as 16 or 32 unseparated uppercase hex characters "
313 "(2 per binary byte). For example '21000020372D3C73' \n"
314 "10 = EUI as a generic format (EUI64) See \n"
315 "http://standards.ieee.org/regauth/oui/tutorials/EUI64.html. "
316 karl 1.1 "\nFormatted as 16 unseparated uppercase hex characters (2 "
317 "per binary byte) \n"
318 "11 = T10 vendor identifier format as returned by SCSI "
319 "Inquiry VPD page 83, identifier type 1. See T10 SPC-3 "
320 "specification. This is the 8-byte ASCII vendor ID from the "
321 "T10 registry followed by a vendor specific ASCII "
322 "identifier; spaces are permitted. For non SCSI volumes, "
323 "'SNVM' may be the most appropriate choice. 12 = OS Device "
324 "Name (for LogicalDisks). See LogicalDisk Name description "
325 "for details."),
326 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
327 "10","11", "12" },
328 Values { "Unknown", "Other", "VPD83NAA6", "VPD83NAA5",
329 "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN",
330 "NAA", "EUI64", "T10VID", "OS Device Name" },
331 ModelCorrespondence { "CIM_StorageExtent.Name",
332 "CIM_StorageExtent.NameNamespace",
333 "CIM_StorageExtent.OtherNameFormat" }]
334 uint16 NameFormat;
335
336 [Description (
337 karl 1.1 "The preferred source SCSI for volume names is SCSI VPD Page "
338 "83 responses. Page 83 returns a list of identifiers for "
339 "various device elements. The metadata for each identifier "
340 "includes an Association field, identifiers with association "
341 "of 0 apply to volumes. Page 83 supports several namespaces "
342 "specified in the Type field in the identifier metadata. See "
343 "SCSI SPC-3 specification. \n"
344 "2 = VPD Page 83, Type 3 NAA (NameFormat SHOULD be NAA) \n"
345 "3 = VPD Page 83, Type 2 EUI64 (NameFormat EUI) \n"
346 "4 = VPD Page 83, Type 1 T10 Vendor Identification \n"
347 "(NameFormat T10) \n"
348 "Less preferred volume namespaces from other interfaces: \n"
349 "5 = VPD page 80, Serial number (NameFormat SHOULD be Other) "
350 "\n6 = FC NodeWWN (NameFormat SHOULD be NAA or EUI) \n"
351 "7 = Serial Number/Vendor/Model (NameFormat SHOULD be SNVM) "
352 "\nThe preferred namespace for LogigicalDisk names is "
353 "platform specific device namespace; see LogigicalDIsk "
354 "Description. \n"
355 "8 = OS Device Namespace."),
356 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" },
357 Values { "Unknown", "Other", "VPD83Type3", "VPD83Type2",
358 karl 1.1 "VPD83Type1", "VPD80", "NodeWWN", "SNVM",
359 "OS Device Namespace" },
360 MappingStrings { "SPC.INCITS-T10| VPD 83, Association 0 | "
361 "Identifier" },
362 ModelCorrespondence { "CIM_StorageExtent.Name",
363 "CIM_StorageExtent.OtherNameNamespace",
364 "CIM_StorageExtent.NameFormat" }]
365 uint16 NameNamespace;
366
367 [Description (
368 "A string describing the namespace of the Name property when "
369 "NameNamespace includes the value 1, \"Other\"."),
370 ModelCorrespondence { "CIM_StorageExtent.NameNamespace" }]
371 string OtherNameNamespace;
372
373 [Description (
374 "A string describing the format of the Name property when "
375 "NameFormat includes the value 1, \"Other\"."),
376 ModelCorrespondence { "CIM_StorageExtent.NameFormat" }]
377 string OtherNameFormat;
378 };
379 karl 1.1
380 // ===================================================================
381 // BasedOn
382 // ===================================================================
383 [Association, Version ( "2.6.0" ), Description (
384 "BasedOn is an association describing how StorageExtents can be "
385 "assembled from lower level Extents. For example, "
386 "ProtectedSpaceExtents are parts of PhysicalExtents, while "
387 "VolumeSets are assembled from one or more Physical or "
388 "ProtectedSpaceExtents. As another example, CacheMemory can be "
389 "defined independently and realized in a PhysicalElement or can "
390 "be 'based on' Volatile or NonVolatileStorageExtents.")]
391 class CIM_BasedOn : CIM_Dependency {
392
393 [Override ( "Antecedent" ), Description (
394 "The lower level StorageExtent.")]
395 CIM_StorageExtent REF Antecedent;
396
397 [Override ( "Dependent" ), Description (
398 "The higher level StorageExtent.")]
399 CIM_StorageExtent REF Dependent;
400 karl 1.1
401 [Description (
402 "StartingAddress indicates where in lower level storage, the "
403 "higher level Extent begins.")]
404 uint64 StartingAddress;
405
406 [Description (
407 "EndingAddress indicates where in lower level storage, the "
408 "higher level Extent ends. This property is useful when "
409 "mapping non-contiguous Extents into a higher level "
410 "grouping.")]
411 uint64 EndingAddress;
412
413 [Description (
414 "If there is an order to the BasedOn associations that "
415 "describe how a higher level StorageExtent is assembled, the "
416 "OrderIndex property indicates this. When an order exists, "
417 "the instances of BasedOn with the same Dependent value "
418 "(i.e., the same higher level Extent) should place unique "
419 "values in the OrderIndex property. The lowest value implies "
420 "the first member of the collection of lower level Extents, "
421 karl 1.1 "and increasing values imply successive members of the "
422 "collection. If there is no ordered relationship, a value of "
423 "zero should be specified. An example of the use of this "
424 "property is to define a RAID-0 striped array of 3 disks. "
425 "The resultant RAID array is a StorageExtent that is "
426 "dependent on (BasedOn) the StorageExtents that describe "
427 "each of the 3 disks. The OrderIndex of each BasedOn "
428 "association from the disk Extents to the RAID array could "
429 "be specified as 1, 2 and 3 to indicate the order in which "
430 "the disk Extents are used to access the RAID data.")]
431 uint16 OrderIndex;
432 };
433
434
435 // ===================================================================
436 // end of file
437 // ===================================================================
|