Firmware and BIOS drift: the outage you can see coming
You buy eight identical servers. Two years later you have eight servers that look identical and are not. Different BIOS versions, different controller firmware, different network card firmware, different settings applied during different troubleshooting sessions by different people. That is drift, and it is one of the most under-rated causes of the failures that get written up as โintermittentโ.
How drift happens
- An update is applied to fix a specific problem on a specific machine, and never rolled out to the rest.
- A rollout covers nine of eleven hosts; two were busy and got skipped.
- A replacement server arrives from the supplier with whatever firmware was current that month.
- A setting is toggled during an incident at 3am to get a service back, and nobody writes it down.
Every one of those is a reasonable act. Drift is not the result of bad practice; it is the result of normal practice without a baseline.
Why it bites
Failures that will not reproduce
A workload runs fine on seven hosts and misbehaves on the eighth. Hours go into the application before anyone thinks to compare firmware. The bug was fixed by the vendor eighteen months ago on every host except that one.
Clusters that are not really uniform
Virtualisation and clustering assume the members are interchangeable. When they are not, you get uneven performance, migration failures, and features that silently fall back to a lower level to accommodate the odd one out.
Security holes with a known fix
Firmware vulnerabilities are patched by the vendor. A host that missed the rollout is exposed to something that has a published remedy โ the worst kind of exposure, because it is both known and avoidable.
Support conversations that stall
โPlease update to the current firmware and try againโ is a reasonable first response from any vendor, and it costs you a maintenance window before the real diagnosis even begins.
The fix is a baseline, not a policy document
Pick a known-good version for each firmware component, write it down, and measure everything against it. The value is not in being on the newest release โ it is in knowing what everything is on, and being able to see the exceptions at a glance.
- Define the baseline per model. An R640 and an R740 will not share versions; that is fine.
- Measure, do not assume. Read the current versions from the machines themselves rather than from your change log.
- Rank the gaps. A production host eighteen months behind matters more than a lab host three weeks behind.
- Roll forward in waves โ lab, then pre-production, then production โ and re-measure after each.
- Re-baseline on a schedule, so the target moves deliberately rather than drifting again.
Make it visible or it will not happen
Drift is invisible by nature: nothing alerts, nothing goes red, everything works until it doesn't. The only reliable countermeasure is to put it on a screen somebody looks at โ a list of hosts behind baseline, sorted by how far behind and how important they are.
That is one of the things our iDRAC console surfaces automatically, and it is a standard part of an infrastructure review: what the estate is actually running, versus what you believe it is running.