VTrak Drive Size Coercion Implementation
Introduction
Drive Size Coercion is aligning the physical drive size to a suitable boundary for the purpose of raid configuration. This is the size accounted for the creation of array and logical drives.
Scope
This document briefly describes the implementation of drive size coercion of VTrak controllers.
Overview
Drives From different vendors come with different number of LBA’s for same given size. Aligning these drive sizes to a common boundary makes it possible for raid configuration to use the hot spares and drives for replacement with minor capacity difference.
Terminology
- LD: Logical Drive
- LBA: Logical Block Address (synonym to 512 bytes)
- Sector: 1 logical block – 512 bytes
- PD: Physical Drive
- Capacity: Drive size (after or before coercion)
- LED: light emitting diode
- BP: Back plane
- FRU: Field Replaceable Unit
- SEP: Storage Enclosure Processor
- SEMB: Storage Enclosure Management Bridge- In the scope of this document the terms “SEMB”, “controller”, “mother board” and “SEP driver” are synonymous.
- POR: Power On Reset
- BGA: Back ground activity – used with reference to scheduler that runs in the context of application to control some of the back ground activities in VTrak controllers.
- MDD/DDF: configuration Data on disk.
- Gigabyte: In the context of this document, refers to 1000 * 1000 * 1000 bytes and note that this is not equal to 1024 * 1024 * 1024 bytes.
- OEM: Original Equipment Manufacturer.
Requirements
Key requirements for drive capacity coercion with VTrak controllers.
- An option to disable coercion
- Truncate drive size to the nearest GByte boundary
- Coercion based on drive capacity
- Use a coercion table
Please note: Since alternate methods of coercion could truncate drive size differently, a previously coerced or truncated drive capacity holds good irrespective of any new coercion method enabled. The following sections describe the above features in detail.
Coercion Options
No Coercion
The VTrak controller settings provide option to enable or disable coercion. If disabled, no coercion method will be applied to the drives in controller. This configurable size for the raid purposes with the drive capacity after DDF/MDD size. This option is persistent, as controller settings are stored in NVRAM.
Coercion aligning to GigaByte boundary
This is the default method if coercion is enabled. This method truncates the drive capacity after MDD size to nearest gigabyte boundary. If drive capacity is less than 1 gigabyte, no coercion is applied.
The formula for this method is given below:
Coerced Drive Capacity = ((Drive Capacity – MDD size)/ GigaByteInSectors ) * GigaByteInSectors
Where GigaByteInSectors = 0x1DCD65 ( 0x1DCD65h = 1953125 sectors = 1000000000 bytes)
Coercion aligning to 10GB boundary
This method truncates the drive size for raid purposes to 10GB boundary.
The formula for this method is given below:
Coerced Drive Capacity = ((Drive Capacity – MDD size)/ 10GigaByteInSectors ) * 10GigaByteInSectors
Where 10GigaByteInSectors = 0x12a05f2 (0x12a05f2= 19531250 sectors = 10000000000 bytes)
Coercion based on drive Size or Group rounding
If this method is chosen (also called group rounding method), coercion is based on drive capacity. The drive is truncated to 1GB less than the drive’s closest 10GB/5GB boundary.
Today’s drive are of greatly varying capacity for given size range. The actual problem is that even though all the vendors claim the same size, the margin varies between couple of MBs (30MB) to GBs (2GBs). For example Seagate claims drive size to be 80GB, however actual size is only couple of MB more than 80GB. Maxtor and Hitachi are almost 2GB above 80GB.
When looking at drive size after DDF reserved space, Seagate’s only 79GB, Maxtor and Hitachi both are 81GB. This means that even having 10GB coercion will not solve the problem, since Seagate is going to be at 70GB and both Maxtor and Hitachi will be at 80GB. Keeping this scenario in mind, to make drives from different vendors to be usable in raid set-up, the alignment boundary is chosen to be 1GB less than the closest 10GB/5GB boundary of the disk size.
Here is a more detailed example: Drives which are above 80GB and below 85GB would be coerced to 79GB. Drives above 85GB and below 90GB would be coerced to 84GB and so on. If this method is applied to drives smaller than 50GB, wasted space would be considerable. However drives greater than 50GB and less than 1TB, this coercion method should be fine.
Coercion Table Method
This method is based on the coercion table residing in the flash. The default coercion table is described below. The coercion table is searched to find the entry that matches the requested drive capacity. Corresponding coercion factor is used get the coerced size as given below:
Coerced Drive Capacity = (Drive Capacity – MDD Size) / Coercion Factor) * Coercion Factor
Currently there is no interfaces or APIs provided to accept an OEM table. Therefore the default coercion table is used and shown below:
Entry Number | Drive Size | Coercion Boundary |
1 | 0-19GB | 1GB |
2 | 20-39GB | 20GB |
3 | 40-59GB | 40GB |
4 | 60-79GB | 60GB |
5 | 80-99GB | 80GB |
6 | 100-119GB | 100GB |
7 | 120-159GB | 120GB |
8 | 160-199GB | 160GB |
9 | 200-249GB | 200GB |
10 | 250-299GB | 250GB |
11 |
300-319GB |
300GB |
12 | 320-359GB | 320GB |
13 | 360-399GB | 360GB |
14 | 400-449GB | 400GB |
15 | 450-599GB | 450GB |
16 | 600-799GB | 600GB |
17 | 800-999GB | 600GB |
18 | 1TB > | 1TB |
Conclusion
With different coercion options, you can choose the best method that will allow ease of RAID configuration with drives of different capacity.