How to Configure RAID Using HPE Smart Array Controllers

3 Nov 2026, 17:4316 min readby ITYantra Admin

Step-by-step guide to configuring RAID arrays using HPE Smart Array controllers including SSA, ssacli, and best practices.

# How to Configure RAID Using HPE Smart Array Controllers

Introduction

HPE Smart Array controllers are hardware RAID solutions integrated into ProLiant servers. They provide hardware-accelerated RAID with battery/flash-backed write cache, online RAID level migration, and predictive drive failure analysis. This guide covers complete RAID configuration using HPE Smart Storage Administrator (SSA) and the ssacli command-line utility, covering RAID levels 0, 1, 5, 6, 10, 50, and 60.

You will learn:

  • Smart Array controller architecture and components
  • RAID level selection criteria for different workloads
  • Configuration via SSA (boot-time utility)
  • Configuration via ssacli (command line, online)
  • Online RAID migration and expansion
  • Write cache configuration and battery management
  • Drive replacement and array rebuild procedures
  • Troubleshooting common Smart Array issues

Technical Background

Smart Array Controller Architecture

HPE Smart Array controllers are hardware RAID controllers with the following architecture:

**Processor:** Dedicated IOP (Input/Output Processor) that handles RAID calculations independently of the host CPU.

**Cache:** DRAM cache for read and write operations, protected by battery or capacitor backup.

**Write Cache:** Write operations are acknowledged to the OS once written to cache, then destaged to disk. This significantly improves write performance.

**Read Cache:** Frequently accessed data is cached in DRAM for faster subsequent reads.

**Battery/Capacitor Backup:**

  • **Smart Storage Battery (Gen10):** Traditional battery backup unit (BBU), typically 72-hour data retention
  • **Smart Storage Capacitor Pack (Gen10+):** Capacitor-based backup, no battery replacement needed, indefinite data retention while powered

**Backup Behavior:** During power loss, the battery/capacitor provides power to maintain cache contents until power is restored. On next boot, data is destaged to disk.

RAID Levels Supported

| RAID Level | Description | Minimum Drives | Capacity Efficiency | Fault Tolerance | Read Performance | Write Performance | |------------|-------------|----------------|---------------------|-----------------|------------------|-------------------| | RAID 0 | Striping | 2 | 100% | None | Excellent | Excellent | | RAID 1 | Mirroring | 2 | 50% | 1 drive | Good | Good | | RAID 5 | Striping with distributed parity | 3 | (n-1)/n | 1 drive | Excellent | Good | | RAID 6 | Striping with dual distributed parity | 4 | (n-2)/n | 2 drives | Excellent | Moderate | | RAID 10 | Mirrored stripes | 4 | 50% | 1 drive per mirror | Excellent | Good | | RAID 50 | Striped RAID 5 sets | 6 | Varies | 1 drive per set | Excellent | Good | | RAID 60 | Striped RAID 6 sets | 8 | Varies | 2 drives per set | Excellent | Moderate |

Drive Types Supported

  • **SAS (Serial Attached SCSI):** Enterprise-grade, 12 Gb/s, high reliability, dual-port
  • **SATA:** Cost-effective, 6 Gb/s, suitable for bulk storage
  • **NVMe:** High-performance, PCIe-attached, for Gen10 Plus and Gen11
  • **Mixed Drive Types:** Supported in separate arrays (not within the same array)

Array and Logical Drive Concepts

**Array:** A group of physical drives managed together by the controller. All drives in an array must be the same type (SAS or SATA) and should be similar capacity.

**Logical Drive:** A virtual disk presented to the OS, created from an array. Multiple logical drives can exist on one array.

**Spare Drive:** A designated drive that automatically replaces a failed drive in a fault-tolerant array.

Prerequisites

Hardware Requirements

  • HPE ProLiant server with Smart Array controller (B140i, P408, P816, etc.)
  • Compatible SAS, SATA, or NVMe drives (HPE-qualified recommended)
  • Smart Storage Battery or Capacitor Pack (for write cache protection)
  • For online management: server running OS with ssacli installed

Software Requirements

  • HPE Smart Storage Administrator (SSA) - boot-time utility
  • HPE ssacli (formerly hpssacli) - command-line utility
  • HPE Management Component Pack (MCP) for ssacli and monitoring agents
  • Operating system with kernel module support for the Smart Array controller

Knowledge Requirements

  • Understanding of RAID levels and their trade-offs
  • Familiarity with server storage concepts
  • Basic Linux or Windows command line knowledge

Step-by-Step Implementation

Step 1: Identify Storage Controller

**Purpose:** Determine which Smart Array controller is installed and its slot number.

1. Boot into SSA (press F10 during POST) 2. Select the controller to view details 3. Note the controller slot number and model 4. Alternatively, use ssacli from the OS

**Commands:**

# Linux - List all Smart Array controllers
ssacli ctrl all show

# Windows - Using ssacli.exe
ssacli ctrl all show

**Expected Output:**

Smart Array P408i-a SR Gen10 in Slot 0
   (sn: 2MXXXXXXXX)
   ...

**Verification:** Controller detected with correct slot number and model.

Step 2: Check Physical Drive Status

**Purpose:** Verify all drives are detected and healthy before array creation.

1. In SSA: View physical drives under the controller 2. Via ssacli: Check physical drive status

**Commands:**

# List all physical drives
ssacli ctrl slot=0 pd all show status

# Detailed drive information
ssacli ctrl slot=0 pd all show detail

**Expected Output:** All drives show "OK" status. No drives showing "Failed" or "Predictive Failure".

**Verification:** All physical drives reported as healthy.

Step 3: Create Array and Logical Drive

**Purpose:** Create a RAID array and present a logical drive to the OS.

**Via SSA (Boot-time):** 1. Select the controller 2. Select "Create Array" 3. Select physical drives for the array 4. Choose RAID level 5. Configure logical drive size and caching 6. Save and exit

**Via ssacli (Online):**

# Create RAID 1 array (mirroring, 2 drives)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2 raid=1

# Create RAID 5 array (3+ drives)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3 raid=5

# Create RAID 6 array (4+ drives)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4 raid=6

# Create RAID 10 array (4+ drives, even number)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4 raid=1+0

# Create RAID 50 array (6+ drives)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6 raid=5+0

# Create RAID 60 array (8+ drives)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6,1I:1:7,1I:1:8 raid=6+0

**Parameters:**

  • `ctrl slot=0`: Controller slot number (from Step 1)
  • `drives=`: Drive identifiers in format `box:bay:drive` (typically `1I:1:N`)
  • `raid=`: RAID level (1, 5, 6, 1+0, 5+0, 6+0)

**Expected Output:** "Created successfully" or "Operation succeeded."

**Verification:** New logical drive visible in `ssacli ctrl slot=0 ld all show`.

Step 4: Configure Write Cache

**Purpose:** Enable write cache for performance with data protection.

**Commands:**

# Enable write cache with write back
ssacli ctrl slot=0 modify ncw=enable

# Check write cache status
ssacli ctrl slot=0 show detail | grep -i cache

# Disable write cache (write through - safer but slower)
ssacli ctrl slot=0 modify ncw=disable

**ncw values:**

  • `enable`: Write back cache (faster, requires battery/capacitor)
  • `disable`: Write through (slower, no cache risk)

**Verification:** Write cache status shows "Enabled" with battery/capacitor status "OK".

Step 5: Configure Spare Drive (Optional)

**Purpose:** Designate a hot spare for automatic failure replacement.

**Commands:**

# Assign a drive as spare
ssacli ctrl slot=0 array all add spares=1I:1:6

# Remove spare designation
ssacli ctrl slot=0 array all remove spares=1I:1:6

# View spare drives
ssacli ctrl slot=0 pd all show | grep -i spare

**Verification:** Drive shows as "Spare" in SSA or ssacli output.

Step 6: Initialize Logical Drive

**Purpose:** Prepare the logical drive for OS use.

**Commands:**

# Initialize logical drive (logical drive number from ld show)
ssacli ctrl slot=0 logicaldrive 1 modify init=start

# Check initialization progress
ssacri ctrl slot=0 logicaldrive 1 show status

**Note:** Initialization can take hours for large drives. The logical drive is usable during initialization but performance may be reduced.

Configuration Examples

Complete RAID 10 Setup for Database Server

#!/bin/bash
# Configure RAID 10 for 8x 1.92TB SAS drives on DL380 Gen10+
# Controller in slot 0

# Verify controller and drives
ssacli ctrl slot=0 show detail
ssacli ctrl slot=0 pd all show status

# Create RAID 10 array with all 8 drives
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6,1I:1:7,1I:1:8 raid=1+0

# Enable write cache
ssacli ctrl slot=0 modify ncw=enable

# Verify configuration
ssacli ctrl slot=0 ld all show status
ssacli ctrl slot=0 pd all show status

Complete RAID 6 Setup for File Server

# Configure RAID 6 for 6x 4TB SATA drives (maximum capacity with dual-drive fault tolerance)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6 raid=6

# Enable write cache
ssacli ctrl slot=0 modify ncw=enable

# Create two logical drives (OS and Data)
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6 size=500 raid=6
ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,1I:1:3,1I:1:4,1I:1:5,1I:1:6 raid=6

Online RAID Migration (RAID 5 to RAID 6)

**Purpose:** Add fault tolerance without downtime.

**Warning:** Migration takes hours depending on drive size and system load.

# Check current logical drive configuration
ssacli ctrl slot=0 logicaldrive 1 show detail

# Migrate from RAID 5 to RAID 6
ssacli ctrl slot=0 logicaldrive 1 modify raid=6

# Monitor migration progress
ssacli ctrl slot=0 logicaldrive 1 show status

# Verify completion (shows "OK" when done)
ssacli ctrl slot=0 logicaldrive 1 show detail

Online Capacity Expansion (Add Drives to Array)

# Add unassigned drives to existing array
ssacli ctrl slot=0 array all add drives=1I:1:7,1I:1:8

# Expand logical drive to use new capacity
ssacli ctrl slot=0 logicaldrive 1 modify size=max

# Verify expansion
ssacli ctrl slot=0 logicaldrive 1 show detail

Verification

Array Health Verification

# Check controller status
ssacli ctrl slot=0 show status

# Check all logical drives
ssacli ctrl slot=0 ld all show status

# Check all physical drives
ssacli ctrl slot=0 pd all show status

# Detailed controller information
ssacli ctrl slot=0 show detail

**Expected Output:** All statuses show "OK". No drives showing "Failed", "Predictive Failure", or "Offline".

Logical Drive Verification

# Verify logical drive details
ssacli ctrl slot=0 logicaldrive 1 show detail

# Check for migration or rebuild status
ssacli ctrl slot=0 logicaldrive 1 show status

**Verify:**

  • RAID level matches intended configuration
  • Size matches expected capacity
  • Cache status: Enabled
  • Status: OK

OS-Level Verification

**Linux:**

# Check block devices
lsblk

# Check filesystem
df -h

# Check Smart Array kernel module
lsmod | grep hpsa

**Windows:**

  • Disk Management: Logical drive visible and online
  • Device Manager: No unknown devices under "Storage controllers"
  • HPE Storage Management Utility: Arrays and drives healthy

Performance Verification

# Linux - Sequential read test
fio --name=seq-read --rw=read --bs=1M --size=10G --numjobs=4 --iodepth=16 --runtime=60

# Linux - Sequential write test
fio --name=seq-write --rw=write --bs=1M --size=10G --numjobs=4 --iodepth=16 --runtime=60

# Windows - DiskSpd
diskspd -b1M -t4 -o16 -d60 -W -C -S -L -c10G C:\testfile.dat

Document baseline performance for comparison after changes.

Troubleshooting

| Scenario | Symptom | Possible Cause | Diagnostic | Corrective Action | Verification | |----------|---------|----------------|------------|-------------------|--------------| | Drive showing Failed | Array degraded, drive status "Failed" | Physical drive failure, loose connection | `ssacli ctrl slot=0 pd all show` | Replace drive, verify rebuild starts | Array status returns to OK | | Predictive Failure | Drive status "Predictive Failure" | SMART thresholds exceeded, drive likely to fail | SSA drive detail, `smartctl` | Replace drive proactively | New drive status "OK" | | No logical drive | OS doesn't see storage | Array not created, logical drive not initialized | `ssacli ctrl slot=0 ld all show` | Create array and logical drive | Logical drive visible in OS | | Write cache disabled | Poor write performance | Battery/capacitor failed or missing | `ssacli ctrl slot=0 show detail` | Replace battery/capacitor, then enable ncw | Write cache enabled | | Array degraded | One drive missing from array | Drive pulled, failed, or not seated | `ssacli ctrl slot=0 pd all show` | Reseat or replace drive | Rebuild completes, array OK | | Rebuild slow | Rebuild taking days | High system load, low-priority rebuild | `ssacli ctrl slot=0 ld all show` | Reduce system load, increase rebuild priority | Rebuild completes | | Controller not detected | ssacli shows no controllers | Driver not loaded, controller failed | `lsmod | grep hpsa`, dmesg | Reinstall controller driver, reseat controller | Controller detected | | Cannot create array | "No eligible drives" | Drives already in array, wrong interface | `ssacli ctrl slot=0 pd all show` | Use unassigned drives, delete existing array | Array created successfully | | Migration stuck | RAID migration not progressing | Heavy I/O load, large drives | `ssacli ctrl slot=0 ld all show` | Reduce I/O, wait for completion | Migration status "OK" | | Battery failed | Write cache disabled, performance degraded | Battery end of life | iLO hardware log, SSA | Replace Smart Storage Battery | Battery status OK, cache enabled | | Drive not spinning | Drive not detected | Power issue, drive failure | SSA physical drive view, check drive LEDs | Reseat drive, replace if needed | Drive detected and spinning |

Best Practices

1. **Use HPE-qualified drives** — Non-HPE drives may work but won't be supported and can cause unpredictable behavior.

2. **Match drive capacities** — Using different capacity drives wastes capacity (limited to smallest drive in array).

3. **Use RAID 6 or RAID 60 for large drives** — Drives >2TB have higher unrecoverable read error rates during rebuild.

4. **Always configure a spare** — Hot spare enables automatic recovery from drive failure.

5. **Enable write cache with battery backup** — Significantly improves write performance with data protection.

6. **Separate OS and data arrays** — Use RAID 1 for boot, RAID 5/6/10 for data.

7. **Monitor predictive failures** — Replace drives showing predictive failure before they fail.

8. **Test drive replacement procedure** — Practice in non-production before doing it live.

9. **Document array configuration** — Record RAID level, drives, logical drive sizes for disaster recovery.

10. **Keep firmware updated** — Storage controller firmware updates improve drive compatibility and fix bugs.

Conclusion

HPE Smart Array controllers provide reliable hardware RAID with online management capabilities. By understanding RAID level trade-offs, following proper configuration procedures, and implementing monitoring and maintenance practices, you can build storage arrays that meet your performance, capacity, and fault tolerance requirements.

Key decisions include RAID level selection based on workload, write cache configuration, and spare drive planning. Regular monitoring via ssacli or SSA ensures early detection of drive issues before they impact production.

References

  • HPE Smart Storage Administrator User Guide: https://www.hpe.com/info/ssa-docs
  • HPE ssacli Command Line Utility: https://www.hpe.com/info/ssacli-docs
  • HPE Smart Array Controllers: https://www.hpe.com/info/smartarray
  • HPE Service Pack for ProLiant (SPP): https://www.hpe.com/info/spp
  • RAID Level Comparison: https://www.snia.org/education
  • HPE ProLiant Storage Configuration: https://www.hpe.com/info/proliant-storage
#hpe#smart-array#raid#storage-controller#ssacli#server-storage