IPMI Power Control: Key Differences Between “chassis power cycle” and “chassis power reset” Commands


2 views

When managing servers remotely, IPMI (Intelligent Platform Management Interface) provides critical power control capabilities through the ipmitool utility. Two frequently used commands often cause confusion:

ipmitool chassis power cycle
ipmitool chassis power reset

The power cycle command performs a complete power interruption:

  • First sends a hard power off (equivalent to pulling the plug)
  • Waits 1 second (configurable delay)
  • Then powers the system back on

The power reset command attempts a graceful reboot:

  • Sends a reset signal to the motherboard
  • Similar to pressing the reset button on the chassis
  • No complete power interruption occurs

Use power cycle when:

# For complete hardware-level reset
ipmitool -H hostname -U admin -P password chassis power cycle

This is particularly useful for:

  • Recovering from kernel panics
  • Clearing hardware lockups
  • Testing power supply reliability

Use power reset when:

# For software-level reboot attempt
ipmitool -H hostname -U admin -P password chassis power reset

This works better for:

  • Application crashes
  • OS hangs where the kernel is still responsive
  • Situations where you want to preserve power state

Here's a Python script demonstrating both methods:

import subprocess

def ipmi_power_control(host, user, password, command):
    cmd = f"ipmitool -H {host} -U {user} -P {password} chassis power {command}"
    try:
        result = subprocess.run(cmd, shell=True, check=True, capture_output=True)
        return result.stdout.decode()
    except subprocess.CalledProcessError as e:
        return f"Error: {e.stderr.decode()}"

# Example usage
print(ipmi_power_control("192.168.1.100", "admin", "secret", "cycle"))
print(ipmi_power_control("192.168.1.100", "admin", "secret", "reset"))

Be aware of these implementation details:

  • The delay between power off and on during cycle can be adjusted with -d option
  • Some BMC implementations may handle these commands slightly differently
  • Always verify your specific hardware's behavior in documentation

If you encounter issues:

# Check power status first
ipmitool chassis power status

# Verify IPMI connectivity
ipmitool -H hostname -U admin -P password mc info

# For detailed logs
ipmitool sel list

When managing servers through IPMI, the two most frequently used power control commands often cause confusion:

ipmitool chassis power cycle
ipmitool chassis power reset

While both commands ultimately restart the system, their internal behavior differs significantly in how they achieve this result.

The power reset command performs a hard reset of the system by asserting the hardware reset line (similar to pressing the physical reset button). This immediately stops all processor execution and resets hardware components without proper shutdown sequences.

Example reset command with BMC authentication:

ipmitool -I lanplus -H 192.168.1.100 -U admin -P password chassis power reset

In contrast, power cycle executes a complete power down/up sequence:

  1. Sends ACPI shutdown signal to OS
  2. Waits for full power off (typically 1-2 seconds)
  3. Powers system back on

Sample power cycle implementation:

ipmitool -I lan -H bmc.example.com -f ~/ipmi_passfile chassis power cycle

Use power reset when:

  • The OS is completely unresponsive
  • You need immediate hardware-level reset
  • Debugging low-level hardware issues

Prefer power cycle for:

  • Graceful application restarts
  • Database server maintenance
  • Any situation requiring clean shutdown
Behavior Power Reset Power Cycle
ACPI Shutdown No Yes
Disk Cache Flush No Attempted
Hardware Initialization Partial Full
Average Duration 5-15 sec 30-90 sec

For automated recovery scripts, consider combining both approaches:

# Try graceful cycle first
ipmitool chassis power cycle
sleep 120

# Fall back to hard reset if unresponsive
if ! ping -c 3 server.example.com; then
  ipmitool chassis power reset
fi

Remember that some BMC implementations may vary in their exact behavior, so always test in your specific environment.