Skip to main content
RunBook Academy

CephXCVII · Network MaintenanceNetwork Maintenance

Individual link and NIC maintenance

Intermediate⏱ ~16 minipethtoolceph

What you'll learn

  • Take a bond member out of service safely
  • Verify traffic has moved
  • Replace the component
  • Restore and verify

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

Replacing a cable or transceiver on a live host is routine when the bond carries the traffic, and produces an outage when it does not.

Taking a member out

# check the current state
cat /proc/net/bonding/bond0 | grep -A4 'Slave Interface: eth0'
# take it down cleanly
ip link set eth0 down
# verify the bond adapted
cat /proc/net/bonding/bond0 | grep -E 'Slave Interface|MII Status'
ip -s link show bond0

Taking the member down administratively is cleaner than unplugging it: the bond converges on a link-down event rather than on a timeout.

Verifying traffic has moved

sar -n DEV 1 10 | grep -E 'eth0|eth1|bond0'
eth0 should show zero traffic
eth1 should show the bond's full traffic
bond0 should be unchanged
# and Ceph is unaffected
ceph -s
ceph osd perf | sort -k2 -rn | head -3

A latency increase at this point means the surviving member cannot carry the load, and the replacement should be deferred to a quieter window.

Replacing the component

# identify the physical port
ethtool -p eth0 30    # blink the LED for 30 seconds
ethtool -i eth0 | grep -E 'driver|bus-info'
lldpctl eth0 2>/dev/null | grep -E 'PortDescr|SysName'
The LLDP output names the switch and port, which confirms which cable to
pull at the far end.
# after replacing
ip link set eth0 up

Restoring and verifying

cat /proc/net/bonding/bond0 | grep -E 'Slave Interface|MII Status|Speed|Duplex'
ethtool eth0 | grep -E 'Speed|Duplex|Link detected'
# error counters should be clean on the new component
ethtool -S eth0 | grep -iE 'err|drop|crc'
# and traffic distributes across both again
sar -n DEV 1 10 | grep -E 'eth0|eth1'
# throughput restored
# a peer on the same cluster network, running `iperf3 -s`:
PEER=192.0.2.23

iperf3 -c "$PEER" -t 20 -P 8

A replacement that links at a lower speed, or negotiates half duplex, or accumulates errors, is worse than the component it replaced.

Quiz

Knowledge check · 4 questions

  1. Q1. Why take a bond member down administratively before unplugging it?

  2. Q2. A replacement transceiver that links up is a successful replacement.

  3. Q3. Replace a faulty transceiver on a live host.

    A transceiver on one bond member is producing CRC errors. The host has a 2-member bond and normal traffic is well within a single member's capacity.

  4. Q4. What identifies a physical port unambiguously at both ends?

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

Production discipline

Take a bond member down administratively before unplugging it — the convergence is immediate where a physical removal may wait for an LACP timeout. Verify speed, duplex, and error counters on a replacement component; linking up is not the same as working correctly.

Cross-course references

  • Kubernetes: draining before removing is the same convergence principle
  • Linux: clean removal of a redundant component beats abrupt removal everywhere