Skip to content

RAID Target Config Guide

The raid-target-config parameter defines the desired RAID layout for a machine. This guide covers how to gather hardware inventory, understand controller indexing, and build the correct config for a given hardware platform.

Once created, the raid-target-config is typically placed in a hardware profile so operators can apply it to machines during provisioning. See the Hardware RAID operations guide for how operators use it in workflows.

Gather Controller and Disk Information

Run the raid-inventory task on a representative machine. This populates the raid-current-config parameter with structured controller and disk data including PCI addresses, physical disks, and volume information.

Not all RAID tools report PCI addresses in raid-current-config. If PCI information is missing, check the gohai-inventory parameter instead. The gohai hardware inventory collects PCI bus info for each block device under the storage section (reported as BusInfo: "pci@<address>"). Cross-reference the disk serial numbers or slot positions between gohai-inventory and raid-current-config to determine which PCI bus each controller is on.

Understand Controller Indexing

drp-raid discovers all controllers across all installed tools, then sorts them by PCI address (bus, device, function) in ascending order. The position in that sorted list is the controller's index.

For example, given perccli output showing three controllers:

Controller ID Model PCI Address Disks
0 PERC RAID Controller 00:4a:00:00 6
1 HBA Pass-through 00:0d:00:00 0
2 HBA Pass-through 00:b5:00:00 0

After PCI sort, the indexes are:

Index Controller PCI Bus (hex) Notes
0 HBA Pass-through 0d No disks, JBOD-only
1 PERC RAID Controller 4a 6 disks, RAID-capable
2 HBA Pass-through b5 No disks, JBOD-only

The PERC controller with the disks is at index 1, not 0.

Controller index vs Controller ID

The Controller field in raid-target-config is the positional index after PCI sorting, not the ID reported by the RAID tool. The tool-reported IDs (0, 1, 2) are unrelated to the index used in the config.

Default controller

If Controller is omitted from a spec, it defaults to 0. When the target controller is not at index 0, you must set Controller explicitly.

Identify Disk Types and Protocols

Review the PD LIST in the raid-current-config. Each disk has:

  • Size — physical capacity
  • Intf (Protocol) — SATA, SAS, or NVMe
  • Med (Media Type) — SSD or HDD

When a controller has mixed disk types, use the Type and Protocol fields in your specs to ensure the right disks go to the right volumes.

Check Controller Capabilities

In the raid-current-config, check the controller's reported capabilities:

  • RAID Level Supported — which RAID levels the controller supports
  • Current Personality — must be RAID-Mode for volume creation; controllers in HBA-Mode only support JBOD pass-through

If the controller is in HBA-Mode, it must be switched to RAID mode (via BIOS or perccli64 /c0 set personality=RAID) before raid-configure can create volumes.

VolSpec Field Reference

Each entry in raid-target-config is a volume specification (VolSpec). The key fields are:

Field Description Example
Controller Index of the target controller (default: 0) 1
RaidLevel RAID level to create "raid1", "raid5", "jbod"
DiskCount Number of disks or "min"/"max" "2", "max"
Size Volume size or "min"/"max" "min", "max", "500 GB"
Type Disk media type filter "ssd", "disk", "disk,ssd"
Protocol Disk protocol filter "sata", "sas", "nvme"
Bootable Mark volume as bootable true
StripeSize Stripe size (default: 64 KB) "256 KB"

Specs are processed in order. Each spec picks disks from its controller's pool, and those disks are removed from the pool before the next spec runs. This means the first spec gets first pick, and subsequent specs on the same controller get the remaining disks.

Examples

Single Controller with Mixed Disks

A machine with one controller at index 0 containing 2x SATA SSDs and 6x SAS HDDs:

JSON
[
  {
    "Bootable": true,
    "DiskCount": "2",
    "RaidLevel": "raid1",
    "Size": "min",
    "Type": "ssd",
    "Protocol": "sata"
  },
  {
    "DiskCount": "max",
    "RaidLevel": "raid5",
    "Type": "disk",
    "Protocol": "sas"
  }
]

Controller is omitted because there is only one controller (index 0). Type and Protocol ensure SSDs go to raid1 and HDDs go to raid5.

Multi-Controller (BOSS + PERC)

A Dell machine with a BOSS NVMe controller at index 0 and a PERC at index 1:

JSON
[
  {
    "DiskCount": "2",
    "RaidLevel": "raid1",
    "Size": "min"
  },
  {
    "Controller": 1,
    "DiskCount": "3",
    "RaidLevel": "raid5"
  }
]

The first spec targets Controller 0 (BOSS) implicitly. The second explicitly targets Controller 1 (PERC).

All Disks on One Controller

A machine with one controller and 6 identical disks, all for a single RAID5:

JSON
[
  {
    "DiskCount": "max",
    "RaidLevel": "raid5"
  }
]

Multiple Controllers, Only One RAID-Capable

A machine with a RAID controller at index 1 (after PCI sort) and two HBA pass-through controllers with no disks at indexes 0 and 2:

JSON
[
  {
    "Bootable": true,
    "Controller": 1,
    "DiskCount": "2",
    "RaidLevel": "raid1",
    "Size": "min"
  },
  {
    "Controller": 1,
    "DiskCount": "max",
    "RaidLevel": "raid5"
  }
]

Both specs must specify Controller: 1 because the disks are on the second controller in PCI sort order.

Troubleshooting

"No disks available"

  • Check that Controller in your spec points to the index with disks, not the tool-reported ID
  • Verify the Type and Protocol filters match what the disks actually report
  • Run raid-inventory and check the raid-current-config to confirm disk availability

"controller N does not exist"

The spec references a controller index beyond the number of controllers present. Check raid-current-config for the actual number of controllers after deduplication.

"disks vary in size by more than 10 percent"

drp-raid rejects volumes where candidate disks differ in size by more than 10%. Use Type and Protocol filters to separate disk groups, or set AllowMixedSizes: true on the individual spec.

RAID level not supported / volumes not created

Check Current Personality in the controller status. If it shows HBA-Mode, the controller cannot create RAID volumes. Switch to RAID mode via BIOS or perccli.