Skip to main content
RunBook Academy

CephXCIV · Hardware ReplacementHardware Replacement

Verifying replacement hardware before deployment

Intermediate⏱ ~17 minsmartctllsblkethtool

What you'll learn

  • Verify compatibility before deployment
  • Check firmware and its consistency
  • Identify differences from the existing fleet
  • Decide whether a difference is acceptable

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

Replacement hardware that differs from the fleet produces problems that appear as Ceph problems and are diagnosed as such for a long time.

Compatibility

# the drive
smartctl -i /dev/sdX | grep -E 'Model|Firmware|Rotation|Capacity|Form Factor'
lsblk -o NAME,SIZE,ROTA,MODEL,SERIAL /dev/sdX
PropertyMust matchWhy
Capacityideally; the weight is set from itmismatched capacities need weight care
InterfaceyesSATA in a SAS-only backplane may not work
Sector sizeyes512e versus 4Kn affects alignment
Rotation ratefor class detectionaffects device class
Form factor and connectoryesphysical fit
# sector size, which is easy to overlook
smartctl -i /dev/sdX | grep -i 'Sector Size'
blockdev --getss --getpbsz /dev/sdX

A 4Kn drive in a fleet of 512e drives is functional and behaves differently enough to be worth knowing about.

Firmware

smartctl -i /dev/sdX | grep -i firmware
nvme id-ctrl /dev/nvmeXn1 | grep -i '^fr'
# compare against the fleet
for d in /dev/sd{b..m}; do
  printf '%-10s ' "$d"
  smartctl -i "$d" | awk -F: '/Firmware Version/ {gsub(/ /,"",$2); print $2}'
done | sort -k2 | uniq -c -f1
Firmware differences within a fleet:
  usually harmless
  occasionally the cause of behaviour differences
  worth recording so a later investigation can consider it

Known-bad firmware revisions exist for many drive models, and checking the vendor’s advisories before deploying is worth the minutes.

Differences from the fleet

# a comparison against an existing drive
for f in Model Firmware Rotation 'Sector Size' Capacity; do
  printf '%-14s new=%-24s old=%s\n' "$f" \
    "$(smartctl -i /dev/sdX | grep -i "$f" | cut -d: -f2- | xargs)" \
    "$(smartctl -i /dev/sdb | grep -i "$f" | cut -d: -f2- | xargs)"
done
DifferenceAcceptable?
Newer firmware, same modelusually
Different model, same specificationsusually; verify performance
Larger capacityyes, with the CRUSH weight set correctly
Smaller capacityyes, with the weight set correctly; reduces the host’s total
Different sector sizeverify; may affect performance
Different rotation rateaffects device class; verify detection
Consumer rather than enterpriseno for OSD use

Deciding

A difference is acceptable when:
  it is understood
  its effect is bounded
  it is recorded so a later investigation can consider it

It is not acceptable when:
  it changes the device class
  it lacks power-loss protection where the fleet has it
  its endurance rating is below the workload's requirement
# record it
echo "$(date -I) osd.44 replaced: $(smartctl -i /dev/sdX | grep -E 'Model|Serial|Firmware' | tr '\n' ' ')" \
  >> /var/log/ceph-hardware.log

Quiz

Knowledge check · 4 questions

  1. Q1. Why does a drive without power-loss protection become a persistent latency outlier?

  2. Q2. A larger replacement drive automatically receives a correct CRUSH weight.

  3. Q3. Verify a replacement drive before deployment.

    A replacement drive has arrived. It is a different model from the fleet but the same nominal capacity and interface.

  4. Q4. Which hardware differences are not acceptable for an OSD replacement?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Confirm a replacement has power-loss protection where the fleet does — without it BlueStore’s flushes write through to media and the drive becomes a permanent latency outlier that looks like a failure. Verify the CRUSH weight matches the capacity after any non-identical replacement.

Cross-course references

  • Kubernetes: heterogeneous node hardware produces workload behaviour differences
  • Linux: mixing drive specifications in an array produces the slowest member’s behaviour