Linux ยท Self-assessment
Knowledge checks
Every knowledge check in this course, in curriculum order. Each link opens the page at its quiz. The questions are auto-graded in the browser and nothing is recorded โ a wrong answer costs you only the explanation, which is the part worth reading.
- Knowledge checks
- 542
- Parts covered
- 83
- Of all lessons
- 100%
Part I
Foundations
6 checks
- Welcome to Linux for Production SysadminsA hands-on, production-oriented Linux course for systems administrators.โ
- History and ecosystem of UNIX and LinuxFrom Bell Labs through GNU, the kernel, distributions, and licensing.โ
- Kernel vs userland โ the layered modelHardware, kernel, libraries, services, shell, applications, users.โ
- The Filesystem Hierarchy StandardWhat lives where on a Linux system and why.โ
- /proc, /sys, /dev, /run โ the kernel-exposed filesystemsPseudo-filesystems that let userland talk to the kernel without ioctl.โ
- Linux distributions and support lifecyclesDebian vs RHEL families, LTS releases, and how to plan for end of life.โ
Part II
Shell and Command-Line Operations
10 checks
- Shell anatomy โ commands, options, arguments, exit codesHow the shell parses what you type and reports what happened.โ
- Quoting, expansion, and globbingHow the shell turns what you type into what the command receives.โ
- Environment variables, PATH, and shell initialisationWhere variables come from, why PATH matters, and which startup files matter.โ
- Redirection, pipes, and three-channel I/OConnecting commands and files through stdin, stdout, and stderr.โ
- Exit codes, conditionals, and testsUsing $? to drive if, while, and logical operators.โ
- Core text tools โ grep, cut, sort, uniq, tr, wcThe high-frequency text manipulation toolkit.โ
- sed and awk in productionStream editors for text reshaping and field-based extraction.โ
- find, locate, and xargs โ bulk operations on filesSelecting files and applying commands to them safely.โ
- Shell history, aliases, and functionsProductivity patterns that pay back every day.โ
- jq and structured text โ JSON, YAML, and CSV at the command lineReading, querying, and reshaping structured data without a script.โ
Part III
Filesystems and Files
6 checks
- Linux file types and the seven file kindsRegular, directory, symlink, device, socket, pipe, and what each means to a sysadmin.โ
- Inodes, dentries, and the VFS โ how Linux tracks filesWhat an inode actually stores and why `df` and `du` can disagree.โ
- Hard links and symbolic linksTwo ways to make one file reachable from two paths; what each can and cannot do.โ
- Permissions, ownership, and umaskThe read/write/execute bits, owners and groups, and the default-permission mask.โ
- POSIX ACLs โ fine-grained permissions beyond owner/group/otherWhen the standard three-class permissions are not enough.โ
- Extended attributes, immutable attributes, and capabilitiesThe file-level metadata that lives outside the standard mode bits.โ
Part IV
Users, Groups and Identity
6 checks
- /etc/passwd, /etc/shadow, /etc/groupHow Linux stores identity, what every field means, and what should never be edited by hand.โ
- UIDs, GIDs, and supplementary groupsHow Linux identity numbers and group memberships actually work.โ
- Password policies and account lockingchage, PAM, password aging, account expiration, and lockout.โ
- Service accounts and system accountsDesigning accounts for daemons, CI, and shared services.โ
- Name Service Switch (NSS) and getentHow Linux decides where to look for users, groups, and hosts.โ
- Account lifecycle and offboarding - creating, changing and removing usersuseradd, usermod and userdel in production: what each tool touches, what it deliberately does not, and why a reused UID hands one person another person files.โ
Part V
sudo and Privileged Access
6 checks
- Root vs sudo โ the production privilege modelWhy sudo replaced direct root login and what it gives you.โ
- sudoers syntax โ rules, aliases, and defaultsThe grammar that decides who can do what.โ
- Drop-in files, package-installed rules, and #includedirHow to keep sudoers modular, version-controlled, and package-aware.โ
- Least-privilege sudo designDesigning sudoers rules that grant exactly the access required and nothing more.โ
- Sudo logging, I/O capture, and SIEM integrationTurning every sudo invocation into an actionable audit trail.โ
- Shell escapes, NOEXEC, and sudoeditWhy a sudoers rule that names a command without arguments is equivalent to ALL, and the three controls that actually bound a grant.โ
Part VI
Processes
6 checks
- The Linux process model โ PIDs, PPIDs, sessions, and groupsHow the kernel tracks running work and how a sysadmin observes it.โ
- Process lifecycle โ fork, exec, exit, and waitHow a process is created, what happens during execution, and how it terminates.โ
- Signals โ SIGTERM, SIGKILL, SIGHUP, and the restHow processes receive asynchronous notifications and what each signal means.โ
- Threads and cgroup viewsThreads, thread groups, and how the kernel tracks many execution contexts in one process.โ
- Nice, renice, and CPU scheduling prioritiesHow to politely ask the scheduler to give your process more or less CPU.โ
- ps, pgrep, pkill, top, htop โ the production toolkitThe commands that answer every "what is running on this host?" question.โ
Part VII
systemd and Service Management
8 checks
- systemd architecture โ PID 1 and the unit modelWhy systemd is PID 1, what units are, and how the dependency graph works.โ
- systemctl and unit managementStart, stop, enable, mask, and inspect units.โ
- Writing systemd unit filesAuthoring your own service, socket, and timer units from scratch.โ
- Targets, dependencies, and orderingHow systemd's transaction model decides what runs in what order.โ
- systemd timers โ replacing cron with calendar and monotonic schedulesWhen systemd timers are better than cron, and how to write them.โ
- systemd sockets, paths, and activationOn-demand service activation, file watchers, and the activation magic of systemd.โ
- Drop-in overrides โ modifying units without rewritingThe right way to make a partial change to a vendor-provided unit.โ
- systemd-analyze, security review, and boot diagnosticsFind slow boot units, audit hardening, and verify security profiles.โ
Part VIII
Logging and journald
6 checks
- Linux logging architecture โ kernel, journald, syslogHow Linux captures, stores, and queries logs from every source.โ
- journalctl โ querying the systemd journalThe full power of journal filtering: by unit, time, priority, and field.โ
- rsyslog, syslog-ng, and traditional syslogThe text-log pipeline that predates journald and still ships logs to /var/log.โ
- logrotate โ the rotation policyHow Linux manages text-log file growth, retention, and post-rotation actions.โ
- Persistent journals and disk pressureWhy the journal sometimes fills the disk and how to size it.โ
- Centralised logging โ rsyslog forwarding and journald remoteShip every log to a central store before the host dies.โ
Part IX
Boot Process
6 checks
- Firmware, UEFI, and BIOSThe pre-OS layer that hands control to the bootloader.โ
- GRUB โ the bootloaderHow GRUB loads the kernel and initramfs.โ
- Kernel, initramfs, and the first userlandWhat the kernel does after GRUB hands off, and how the root filesystem is mounted.โ
- systemd targets and rescue modeBoot into specific states for recovery and maintenance.โ
- Emergency and rescue mode โ when normal boot failsThe diagnostic paths when the system cannot reach multi-user.target.โ
- Boot failure diagnosis from the OOB consoleReading the console output for the four common boot failure modes.โ
Part X
Kernel Management
6 checks
- Kernel versions, releases, and lifecycleHow kernel versions work, what LTS means, and how to plan kernel updates.โ
- Kernel modules โ load, list, dependencies, blacklistHow Linux extends the kernel at runtime and how to manage the extensions.โ
- sysctl โ runtime kernel tuningHow to read and modify runtime kernel parameters.โ
- Kernel logs, taint flags, and oops decodingReading dmesg output, recognising taint flags, and understanding kernel oops.โ
- Live kernel patching โ kpatch, kgraft, and livepatchHow to apply security kernel patches without rebooting.โ
- Kernel command line parameters - the settings you can only make at bootThe three places a kernel knob can live, how the kernel splits its command line between itself, modules and init, and how to prove a parameter actually took effect.โ
Part XI
Package Management
7 checks
- Package management overview โ apt vs dnfHow package managers work, why they exist, and the production discipline around them.โ
- apt and dpkg โ Debian-family package managementThe day-to-day commands for installing, querying, and upgrading on Debian and Ubuntu.โ
- dnf and rpm โ RHEL-family package managementThe day-to-day commands for installing, querying, and upgrading on RHEL, Rocky, Alma.โ
- Repositories, signing, and trusted sourcesHow packages are signed, why GPG keys matter, and how to configure a trusted repo set.โ
- Package pinning, holds, and version selectionHow to pin specific versions in production and why.โ
- Security updates and CVE responseHow to receive, test, and deploy security updates on a fleet.โ
- Package cache, cleanup, and rollbackHow to manage disk space, package cache, and when things go wrong.โ
Part XII
Repository Security and Supply Chain
6 checks
- Repository trust and GPG signingHow trust flows from a vendor key to an installed package, and what can break it.โ
- Third-party repository riskWhen to trust a non-vendor repository, when not to, and how to contain the risk.โ
- Package provenance and SBOMHow to know what is inside a package and where it came from.โ
- Mitigating curl | bash and other supply-chain footgunsWhy the "curl | bash" pattern is dangerous and what to do instead.โ
- Malicious packages and maintainer compromiseWhat a valid signature does and does not prove, how upstream compromise reaches a signed repository, and how to respond when a package you installed turns out to be backdoored.โ
- Language package managers on production hostspip, npm and gem install code outside the distribution trust model. How dependency confusion works, why lockfiles are not hashes, and how to contain install-time code execution.โ
Part XIII
Disks and Block Devices
6 checks
- Block devices, naming, and disk identificationHow Linux names disks and partitions, and what each name means.โ
- Partitions, GPT, and MBRHow disks are divided and what each partition holds.โ
- Filesystem signatures and wipefsHow the kernel detects and wipes filesystem signatures.โ
- Persistent naming - UUIDs, labels, and stable pathsHow to reference disks in fstab without breaking under hardware changes.โ
- Sector sizes and partition alignment - 512n, 512e, and 4KnLogical versus physical sector size, why a misaligned partition doubles every write, and how to read the topology a device reports.โ
- Rescanning and growing block devices - when the kernel still sees the old sizeA LUN grew, a virtual disk grew, and lsblk has not noticed. The layers that each have to be told separately, and the ones where a mistake is unrecoverable.โ
Part XIV
Filesystems
6 checks
- Filesystem concepts - journaling, allocation, and durabilityWhat a filesystem does and why ext4 / XFS / btrfs make different choices.โ
- ext4 deep dive - features, tuning, and operationsHow ext4 works, what its tuning knobs do, and how to operate it.โ
- XFS deep dive - features, tuning, and operationsHow XFS works, what its tuning knobs do, and how to operate it on large filesystems.โ
- btrfs where it fits - snapshots, subvolumes, and operationsWhen to use btrfs and how to operate its advanced features.โ
- Inode exhaustion - the filesystem that says noThe disk is not full, but the filesystem refuses to create files. Why, and how to fix it.โ
- Filesystem check, repair, and recovery with fsck and xfs_repairWhen the filesystem itself is broken: how to check, repair, and recover safely.โ
Part XV
/etc/fstab and Mount Management
6 checks
- fstab syntax - fields, options, and the dump/pass columnsHow /etc/fstab actually works and what each column means.โ
- Mount options and systemd integrationHow mount options interact with systemd-managed mounts and the fstab generator.โ
- Recovering from a broken fstab without a live USBHow to recover a host that will not boot because of an fstab entry.โ
- Network filesystems in fstab - _netdev, automount, and the boot you cannot watchHow a network mount in /etc/fstab becomes a boot-time dependency on another host, and how to write the entry so a filer outage does not take the host down.โ
- fstab entries that are not disks - bind mounts, tmpfs, and swapThe three fstab entry types that have no block device behind them, and the specific ways each of them fails.โ
- Mount units by hand, and verifying a mount change before you rebootWhen to write a .mount unit instead of an fstab line, what the unit form loses, and how to check a mount change before the reboot that tests it for real.โ
Part XVI
LVM
7 checks
- LVM concepts - PV, VG, LV, and the storage stackWhat LVM does, why it exists, and how the layers fit together.โ
- LVM creation, extension, and snapshotsHow to create, extend, and snapshot LVM volumes safely.โ
- LVM snapshots and rollback - the local safety netHow to use LVM snapshots for atomic rollback of changes.โ
- LVM monitoring and capacity planningHow to monitor LVM capacity and plan growth before it becomes a problem.โ
- LVM troubleshooting - common failures and how to recoverWhen LVM does not work as expected: missing PV, full VG, broken LV, and how to recover.โ
- Shrinking an LV - the highest-risk LVM operationHow to reclaim space from a logical volume without destroying the filesystem, and why XFS cannot shrink at all.โ
- LVM thin provisioning and thin-pool monitoringHow thin pools over-commit storage, why metadata exhaustion is worse than data exhaustion, and the two percentages you must alert on.โ
Part XVII
Software RAID
6 checks
- mdadm RAID concepts - levels, layouts, and failure modesWhat RAID does, the common levels, and how to choose the right one.โ
- RAID1 mirroring - simple and reliableHow RAID1 works and when to use it for production data.โ
- RAID5 and RAID6 - parity for capacity and fault toleranceHow RAID5 and RAID6 work, when to use them, and the rebuild trade-offs.โ
- RAID10 - mirrored stripes for performance and redundancyHow RAID10 combines striping and mirroring, and when to choose it.โ
- Degraded arrays and rebuilds - replacing a failed diskHow to identify a degraded array, replace a failed disk, and monitor the rebuild.โ
- md RAID monitoring and failure detectionMake an mdadm array tell you when a disk dies: persistence, mdadm --monitor alerting, periodic scrubs, write-intent bitmaps and node_exporter metrics.โ
Part XVIII
Enterprise Storage
6 checks
- SAN vs NAS vs object storage - which one to chooseThe taxonomy of enterprise storage and how to choose the right one for the workload.โ
- iSCSI - block storage over IPHow iSCSI works, how to connect, and how to operate it for production.โ
- Fibre Channel - high-speed block storageHow Fibre Channel works and when to choose it over iSCSI.โ
- NFS client - mounting and operating network filesystemsHow to mount, mount with options, and operate NFS for production.โ
- Multipath and device-mapper - redundant paths to SAN LUNsHow multipath works, when to use it, and how to configure it for production.โ
- Shared storage failure paths - reading a host whose storage has gone awayThe four shapes a shared-storage failure takes on the host, how to tell them apart when df itself hangs, and the order recovery has to happen in.โ
Part XIX
Networking Foundations
8 checks
- OSI and TCP/IP models - what each layer is forHow the seven-layer OSI model and the four-layer TCP/IP model map to Linux sysadmin work.โ
- Ethernet and MAC addressing - what is on the wireHow Ethernet frames carry MAC addresses, what those addresses look like, and how a frame traverses a LAN.โ
- IPv4 addressing, subnetting, and CIDRHow IPv4 addresses are structured, how subnet masks and CIDR notation work, and how to size a subnet for production use.โ
- IPv6 addressing and subnettingHow IPv6 addresses are structured, how the prefix length works, and why IPv6 matters in production.โ
- ARP and IPv6 neighbour discoveryHow hosts map IP addresses to MAC addresses on a LAN, and why this is the layer where most "cannot reach" starts.โ
- TCP and UDP - transport-layer essentialsHow TCP provides reliable streams, how UDP provides datagrams, and how Linux exposes both via ss and /proc.โ
- ICMP and path MTU - control messages and fragmentationHow ICMP messages signal errors and reachability, and how path MTU discovery prevents fragmentation problems.โ
- DNS and DHCP conceptsHow DNS resolves names to addresses, how DHCP assigns addresses, and why both are foundational for production.โ
Part XX
Linux Network Configuration
7 checks
- The ip command - the sysadmin network toolkitHow ip replaced ifconfig and route, what its subcommands do, and the workflow for inspecting and changing state.โ
- Linux interface configuration - addresses, MTU, offloadsHow to assign addresses, set MTU, and tune offloads on a Linux network interface.โ
- Routing and default gateways on LinuxHow the routing table works, what a default gateway is, and how to add and debug routes on a Linux host.โ
- Netplan on Ubuntu - declarative network configurationHow Netplan reads YAML and configures the network via NetworkManager or systemd-networkd.โ
- NetworkManager - flexible configuration for desktops and laptopsHow NetworkManager handles wired, wireless, and VPN connections, and how to control it from the command line.โ
- systemd-networkd - predictable configuration for serversHow systemd-networkd reads .network files and applies them, and why it is the right default for headless servers.โ
- Distribution comparison - network configuration across distrosHow Debian, Ubuntu, RHEL, and SUSE differ in default network tooling, and what to expect when you move between them.โ
Part XXI
Advanced Linux Networking
8 checks
- VLANs and 802.1Q - segmenting a network with tagsHow VLANs work at layer 2, what the 802.1Q tag does, and how to configure VLAN interfaces on Linux.โ
- Linux bridges and bridge VLANsHow a Linux bridge connects layer-2 segments, and how bridge VLANs let you filter 802.1Q tags on a per-port basis.โ
- Bonding and LACP - aggregating links for redundancy and throughputHow Linux bonding aggregates multiple links into one logical interface, and how LACP negotiates with the switch.โ
- NIC teaming - the userspace alternative to bondingHow teamd differs from the kernel bonding driver, and when (rarely) it is the right choice.โ
- MTU and jumbo frames - when 1500 is not enoughHow MTU affects throughput, why jumbo frames help, and what to do when a tunnel forces a smaller MTU.โ
- Multiple routing tables on LinuxHow Linux supports multiple routing tables, and how the kernel picks which table to use.โ
- Policy routing - choosing routes by source, mark, or interfaceHow Linux policy routing selects a route based on packet metadata, and the real-world cases where it is the right tool.โ
- IPv6 advanced - privacy, SLAAC details, and operational gotchasHow IPv6 privacy extensions work, what SLAAC actually does, and the operational pitfalls unique to IPv6.โ
Part XXII
Network Troubleshooting
9 checks
- Network troubleshooting methodology - the systematic approachHow to debug network problems systematically: define the symptom, isolate the layer, test the hypothesis.โ
- ss and socket state - inspecting TCP and UDP from the kernelHow ss reads kernel state directly, what every TCP state means, and how to spot trouble.โ
- ping, traceroute, and mtr - path diagnosisHow to use ping, traceroute, and mtr to find where a network path is broken, and how to interpret the output.โ
- dig and nslookup - DNS diagnosis in detailHow to use dig and nslookup to query DNS, read answers, and trace resolution chains.โ
- tcpdump and packet capture - seeing the bytesHow to capture packets with tcpdump, filter for what matters, and read the output to diagnose problems.โ
- ethtool and offloads - link-layer diagnosticsHow to use ethtool to read and tune NIC settings, identify offload problems, and diagnose link-layer issues.โ
- arping and ARP inspection - forcing layer-2 discoveryHow to use arping, arp-scan, and ip neigh to inspect and trigger ARP resolution on the local link.โ
- nc and openssl s_client - probing TCP and TLSHow to use nc and openssl s_client to test TCP connectivity, send raw data, and probe TLS endpoints.โ
- curl as a diagnostic tool - HTTP, headers, and timingHow to use curl to debug HTTP/HTTPS problems: verbose output, header inspection, timing, redirects, and TLS.โ
Part XXIII
DNS
6 checks
- DNS resolver architecture - how Linux finds namesHow the Linux resolver library, NSS, and systemd-resolved interact, and how to configure them correctly.โ
- /etc/resolv.conf - the resolver configuration fileHow /etc/resolv.conf works, who owns it, and how to configure it correctly without getting overwritten.โ
- systemd-resolved - the modern stub resolverHow systemd-resolved provides per-interface DNS, caching, DNSSEC, and DNS-over-TLS on modern Linux hosts.โ
- Recursive resolution - how a name becomes an IPHow the recursive DNS lookup chain works, from the root servers to the authoritative answer, and what each step does.โ
- Authoritative DNS, TTLs, and caching behaviourHow authoritative DNS works, what TTLs control, and how to design TTL strategy for production zones.โ
- Cluster DNS failure modes - what breaks when DNS is downHow DNS outages affect clusters, the cascading failures that follow, and how to design for DNS resilience.โ
Part XXIV
Time Synchronisation
6 checks
- Time concepts - UTC, monotonic, and the wall clockHow Linux represents time, the difference between UTC and monotonic clocks, and why it matters for production.โ
- chrony architecture - the modern NTP client and serverHow chrony works: sources, selection, slewing, and how to configure it as both client and server.โ
- chrony client configuration - tuning for accuracy and resilienceHow to configure a chrony client for production: sources, makestep, drift, and what each directive does.โ
- systemd-timesyncd - the lightweight NTP clientHow systemd-timesyncd provides basic NTP client functionality, and when to prefer it over chrony.โ
- Time skew operational impact - what breaks when clocks driftHow time skew breaks TLS, Kerberos, databases, logs, and other production systems, and how to detect it.โ
- NTP fleet design - hierarchy, falsetickers and leap secondsWhy the number of time sources matters more than their accuracy, how chrony decides one of them is lying, and what a leap second does to a fleet that has not decided how to handle it.โ
Part XXV
Firewalls
9 checks
- Firewall concepts - what a Linux firewall actually doesHow Linux firewalls work at the kernel level, what hooks exist, and the difference between host and network firewalls.โ
- nftables architecture - tables, chains, and rulesHow nftables is structured: tables, chains, hooks, and the syntax for rules.โ
- nftables chains, tables, and hooks in depthHow to choose chains, priorities, and the right hook for each rule.โ
- nftables stateful filtering and conntrackHow conntrack tracks connections, and how to use stateful matches in nftables.โ
- nftables NAT - source NAT, destination NAT, and masqueradeHow Network Address Translation works in nftables: SNAT, DNAT, masquerade, and port forwarding.โ
- iptables legacy and migration to nftablesHow iptables works, why it is deprecated, and how to migrate to nftables.โ
- firewalld - zone-based firewall managementHow firewalld works: zones, services, and the relationship with nftables.โ
- ufw and distribution firewall wrappersHow ufw and other distribution firewall wrappers work, and when to use them versus direct nftables.โ
- Validating actual firewall behaviourHow to test that your firewall actually blocks what you think it blocks: external scans, nmap, and rule validation.โ
Part XXVI
SSH
8 checks
- SSH architecture - how Secure Shell actually worksHow SSH provides confidentiality, integrity, and authentication: the protocol layers, key exchange, and channel model.โ
- SSH keys and known_hosts - the key-based authentication modelHow SSH keys work, how to generate them, and how known_hosts protects against man-in-the-middle attacks.โ
- ssh-agent and forwarding - keeping keys safeHow ssh-agent holds decrypted keys, how agent forwarding works, and the security implications of each.โ
- sshd configuration - hardening the serverHow to configure sshd for security and reliability: authentication, ciphers, access controls, and logging.โ
- SSH certificates and bastionsHow SSH certificates replace TOFU for large fleets, and how bastions protect production hosts from direct internet exposure.โ
- ProxyJump and jump hosts - secure access patternsHow ProxyJump works, how to use it for bastion hosts, and how to combine it with port forwarding for complex topologies.โ
- SSH hardening - production checklistA comprehensive SSH hardening checklist: ciphers, authentication, banners, timeouts, logging, and rate limiting.โ
- SSH MFA and 2FA conceptsHow multi-factor authentication works with SSH: TOTP, FIDO2/U2F, hardware tokens, and the operational trade-offs.โ
Part XXVII
Authentication and Enterprise Identity
8 checks
- PAM architecture - pluggable authentication on LinuxHow PAM (Pluggable Authentication Modules) works: stacks, modules, control flags, and the configuration files.โ
- NSS - Name Service Switch for users, groups, and hostsHow NSS (Name Service Switch) lets the resolver look up users, groups, and hosts from multiple sources.โ
- LDAP and Active Directory - directory services fundamentalsHow LDAP and Active Directory work: schemas, binds, searches, and how Linux integrates with them.โ
- Kerberos concepts - tickets, realms, and principalsHow Kerberos authentication works: realms, principals, tickets, and the role of the KDC.โ
- SSSD architecture - the system security services daemonHow SSSD provides NSS, PAM, and Kerberos integration for central identity on Linux.โ
- SSSD and Active Directory integrationA complete guide to joining Linux to AD with SSSD, configuring Kerberos, and verifying single sign-on.โ
- Central identity failure modes - what breaks when LDAP or AD is downHow to design central identity for resilience: cache lifetimes, fallback paths, offline auth, and what to do when the central server is down.โ
- PAM and NSS troubleshooting - fixing auth that breaksA systematic approach to debugging PAM and NSS failures: stack inspection, log analysis, common errors, and recovery.โ
Part XXVIII
SELinux and AppArmor
6 checks
- MAC vs DAC - mandatory versus discretionary access controlThe difference between Discretionary Access Control (DAC) and Mandatory Access Control (MAC), and why MAC matters for production.โ
- SELinux architecture - contexts, policy, and enforcementHow SELinux works: labels, policy types, enforcement modes, and the tools to manage it.โ
- SELinux contexts and labels - inspecting and fixingHow to read, set, and restore SELinux contexts on files, processes, and ports.โ
- SELinux policy and modes - enforcing, permissive, and custom policiesHow SELinux policies work, how to switch modes safely, and when to write custom policy modules.โ
- AppArmor concepts - path-based MAC for Debian-family systemsHow AppArmor works: profiles, modes, and how to manage them on Ubuntu and Debian.โ
- MAC denial investigation - diagnosing SELinux and AppArmor denialsA systematic approach to diagnosing MAC denials: from denial to fix, using audit logs, AVC, and profile modes.โ
Part XXIX
Linux Security Hardening
7 checks
- Linux hardening principles - defence in depthThe principles of host hardening: defence in depth, least privilege, fail-safe defaults, and the CIS Controls.โ
- SSH and sudo hardening - the privileged access surfaceHow to harden SSH and sudo: the two most common paths to root on Linux and the controls that limit them.โ
- Kernel hardening with sysctl - the runtime network and security parametersHow to harden the Linux kernel runtime parameters with sysctl: networking, ASLR, kernel pointers, and other security settings.โ
- Mount options for security - nodev, nosuid, noexecHow filesystem mount options defend against privilege escalation and execution of untrusted code: nodev, nosuid, noexec, and more.โ
- Service minimisation - reducing the attack surfaceHow to minimise the services running on a host: disable what is not needed, run what is needed in containers, and audit the listening surface.โ
- Package update discipline - patching as a security controlHow package updates are a security control: frequency, automation, validation, and the trade-offs of unattended upgrades.โ
- CIS benchmarks conceptually - mapping controls to the frameworkHow CIS Benchmarks are structured, what they cover, and how to apply them to a Linux host without breaking applications.โ
Part XXX
Linux Capabilities and Privilege
6 checks
- Traditional root model - why capabilities existWhy the all-or-nothing root model is dangerous and how Linux capabilities split root powers into discrete pieces.โ
- Linux capabilities overview - the full list and categoriesThe complete Linux capabilities, organised by category, and how to use them in practice.โ
- File capabilities - replacing setuid with fine-grained privilegesHow to grant capabilities to binaries via file xattrs, replacing setuid for service privilege.โ
- capsh and capability debugging - inspecting and dropping capabilitiesHow to inspect, decode, and manipulate process capabilities with capsh, getpcaps, and prctl.โ
- Process capability sets and the exec transitionThe five per-thread capability sets, the kernel algorithm that recomputes them at execve, and why an inheritable capability on its own does nothing.โ
- Root-equivalent capabilities - when dropping to one changes nothingWhich individual capabilities are a complete path back to root, how each one gets there, and how to review a capability grant instead of counting it.โ
Part XXXI
Audit and Security Logging
6 checks
- auditd architecture - the Linux audit frameworkHow auditd works: rules, watch points, the audit log, and ausearch / aureport tools.โ
- audit rules and watch points - what to recordHow to write audit rules for files, syscalls, and users; what to record and what to skip.โ
- ausearch and aureport - querying the audit logHow to use ausearch and aureport to find specific events and summarise the audit log.โ
- Authentication and sudo logs - what gets recorded and how to read itHow authentication events are logged in auth.log, secure, journald, and sudo.log; how to read and correlate them.โ
- Central security logging - shipping logs to a SIEMHow to centralise auth.log, journald, sudo.log, and audit.log to a SIEM or central log server.โ
- Audit record anatomy and attribution - answering whoReading a raw audit event across its several records, and using auid and ses to attribute an action to a human rather than to a shared account.โ
Part XXXII
Vulnerability and Patch Management
6 checks
- Vulnerability concepts - CVEs, severity, and exploitabilityHow vulnerabilities are disclosed, classified by severity, and prioritised for patching.โ
- CVE severity vs context - prioritising for the environmentHow to apply CVSS scores in context: asset value, exposure, compensating controls, and patch availability.โ
- Scanning and detecting vulnerabilitiesTools and techniques for vulnerability scanning: package scanners, CVE matching, and continuous detection.โ
- Patch priority decisions - timing and riskHow to decide when to patch, what risk to accept, and how to balance security against availability.โ
- Emergency patching - reacting to critical CVEs under pressureHow to react to a critical CVE with active exploitation: triage, communicate, deploy, verify, post-mortem.โ
- Reboot and restart requirements - finishing the patchInstalling the package does not stop the vulnerable code running. How to detect deleted-but-mapped libraries, pending reboots and stale kernels, and how to decide what actually has to restart.โ
Part XXXIII
Fleet Patch Management
6 checks
- Fleet patch strategy - waves, canaries, and rollbackHow to patch a fleet of hosts safely: dev/test/canary/production waves, health validation, and automated rollback.โ
- Canary and wave deployments - phased rollout with health checksHow to deploy changes to a small subset first, validate, then expand - the canary and wave patterns.โ
- Rollback strategies - safe deployment reversalsHow to roll back a deployment safely: package rollback, configuration revert, container redeploy, and database migration reversal.โ
- Pre-patching and post-patching validationHow to validate a patching operation before, during, and after - health checks, smoke tests, and rollback triggers.โ
- Automated patching in a fleet - what to automate and what never toThe trade-off automation makes against the wave strategy, how to keep automated patching staged, and the guardrails that stop it becoming a fleet-wide simultaneous change.โ
- Repository snapshots - making a wave reproducibleWhy a canary that validated version N tells you nothing about a production wave that installs N+1, and how point-in-time repository snapshots turn promotion into a metadata change.โ
Part XXXIV
Configuration Management
6 checks
- Why manual does not scale - the case for configuration managementHow manual configuration breaks down at scale: drift, snowflake servers, error-prone changes, and the discipline that fixes it.โ
- Desired state and idempotency - the foundations of CMHow desired-state configuration works, why idempotency matters, and how to write idempotent CM code.โ
- Ansible for sysadmins - the modern CM toolHow Ansible works: inventory, modules, playbooks, and the most common patterns for sysadmins.โ
- Inventory and facts - knowing your fleetHow Ansible inventory and facts work: static inventory, dynamic inventory, and gathered host facts.โ
- Config drift detection - keeping reality aligned with declared stateHow to detect configuration drift: comparing hosts, scheduled checks, alerting on deviation, and remediation.โ
- Safe CM rollout - blast radius, check mode, and the control nodeConfiguration management applies a mistake to the whole fleet at machine speed. The pre-flight ladder that contains it, what check mode genuinely proves, and why the control node is the most valuable host you own.โ
Part XXXV
Shell Scripting for Sysadmins
7 checks
- Script structure and conventions - the production shell scriptHow to write production shell scripts: structure, conventions, error handling, and documentation.โ
- Variables and quoting - the foundation of safe shell scriptsHow variables and quoting work in bash: expansion, special variables, quoting rules, and common pitfalls.โ
- Conditions and loops - controlling script flowHow if/case/for/while work in bash, with patterns for production scripts.โ
- Functions and arguments - reusable, testable script componentsHow to write functions in bash: arguments, return values, local variables, and testing.โ
- Error handling - set -euo pipefail and trapHow to handle errors in production shell scripts: set -euo pipefail, trap, and exit codes.โ
- Traps and temporary files - clean exit on signal or errorHow to use trap for cleanup, mktemp for safe temporary files, and atomic operations.โ
- ShellCheck and static analysis - catching bugs before runtimeHow to use ShellCheck to find common shell bugs and style issues, and integrate it into your workflow.โ
Part XXXVI
Scheduled Operations
6 checks
- cron syntax and anacron - the classic schedulerHow cron works: syntax, crontab fields, anacron for missed jobs, and common production patterns.โ
- systemd timers replacing cron - the modern schedulerHow systemd timers work: calendar and monotonic timers, OnCalendar syntax, and replacing cron jobs.โ
- Locking and concurrency - preventing duplicate jobsHow to prevent two instances of a job from running simultaneously: flock, lock files, and atomic operations.โ
- Job logging and failure detection - knowing what happenedHow to log scheduled jobs so that success and failure are visible: stdout/stderr capture, exit codes, and alerting.โ
- Timeouts, retries and jitter - scheduled jobs that fail safelyBound a scheduled job with RuntimeMaxSec, retry it deliberately, and spread a fleet-wide schedule with RandomizedDelaySec so 400 hosts do not fire at once.โ
- Auditing the schedule - what actually runs on this hostEnumerate every scheduled job on a host across cron, systemd timers, at and per-user crontabs, then reconcile the inventory against what the team believes is running.โ
Part XXXVII
Resource Management
6 checks
- cgroups v2 architecture - the Linux resource control subsystemHow cgroups v2 works: controllers, hierarchies, and how systemd uses them to manage resources.โ
- ulimits and limits.conf - per-user resource limitsHow ulimits work, how /etc/security/limits.conf sets per-user limits, and how to apply them in production.โ
- File descriptors and /proc/fd - understanding open filesHow file descriptors work on Linux, how to inspect them, how deleted-but-open files hold disk space, and how to diagnose "too many open files" errors.โ
- systemd resource controls - applying cgroups via unitsHow systemd uses cgroups to control CPU, memory, IO, and tasks for every service.โ
- OOM killer behaviour - what happens when memory runs outHow the OOM killer works: triggers, victim selection, configuration via sysctl, and how to investigate OOM kills.โ
- cgroup accounting - proving which limit was actually hitRead cpu.stat, memory.events, memory.peak, pids.current and io.stat to show which resource limit a service hit, instead of inferring it from a symptom.โ
Part XXXVIII
Linux Performance Fundamentals
6 checks
- USE methodology - the framework for performance investigationBrendan Gregg's USE method: check Utilisation, Saturation, and Errors for every resource, every time.โ
- top, htop, and vmstat - the basic performance toolsHow to use top, htop, and vmstat to inspect CPU, memory, and process state on a running host.โ
- mpstat and pidstat - per-CPU and per-process statisticsHow to use mpstat for per-CPU stats and pidstat for per-process stats, with focus on context switches and CPU usage.โ
- iostat and sar - storage and historical performanceHow to use iostat for disk I/O stats and sar for historical performance data over time.โ
- free, slabtop, and /proc/meminfo - memory diagnosticsHow to use free, slabtop, and /proc/meminfo to understand Linux memory: cache, anonymous memory, slab, and reclaim.โ
- Measure, change one thing, measure again - the tuning disciplineRED for services and USE for resources, why a single before/after pair proves nothing, and the change record that makes a tuning session reversible.โ
Part XXXIX
CPU Performance
6 checks
- CPU utilisation and load average - measuring the workloadHow to interpret CPU utilisation, %user vs %system vs %iowait, and load average as a saturation metric.โ
- Run queue and context switching - measuring contentionHow the kernel scheduler manages runnable processes, what context switches mean, and how to spot contention.โ
- Interrupts, softirqs, and steal time - hardware and VM signalsHow interrupts work on Linux, what softirqs are, and how steal time signals VM overcommit.โ
- CPU affinity and NUMA - controlling where processes runHow CPU affinity and NUMA topology affect performance, and how to use taskset and numactl.โ
- CPU frequency, governors and thermal throttling - the clock is not constantRead the cpufreq driver, governor and achieved frequency, distinguish a power policy from a thermal limit, and explain why the same benchmark returns a different number every run.โ
- perf - finding the code that is burning the CPUSample a running system with perf top, perf record and perf stat, read a call graph, and fix the missing symbols and permission failures that make the first attempt useless.โ
Part XL
Memory Performance
6 checks
- Virtual memory and pages - how Linux manages memoryHow virtual memory works: pages, page tables, the MMU, and how Linux maps virtual to physical addresses.โ
- Page cache and anonymous memory - the two memory kindsThe difference between page cache (file-backed) and anonymous memory, and how the kernel reclaims each.โ
- Swap and memory pressure - when the system runs out of RAMHow swap works, when to use it, how to tune swappiness, and how to detect memory pressure before OOM.โ
- OOM killer decisions - who gets killed and whyHow the OOM killer selects victims: heuristics, oom_score, oom_score_adj, and how to influence the decision.โ
- RSS, PSS and shared pages - what a process really costsWhy summing RSS across processes over-counts memory, how to read smaps_rollup for a defensible per-process figure, and how to estimate a working set.โ
- Kernel memory, huge pages and the tuning knobs that backfireDiagnose unreclaimable slab growth, read the THP counters in /proc/vmstat, and understand why drop_caches, swappiness and overcommit rarely do what the tuning guide claims.โ
Part XLI
Storage Performance
6 checks
- I/O latency, throughput, and IOPS - the three storage metricsThe three primary storage performance metrics: latency (how long?), throughput (how much?), IOPS (how many?).โ
- Queue depth and utilisation - storage saturation signalsHow queue depth and device utilisation indicate storage saturation, and how to read them in iostat.โ
- iotop and pidstat - per-process I/O statisticsHow to use iotop and pidstat to identify which process is causing storage I/O.โ
- fio and safe benchmarking - measuring storage baselineHow to use fio for safe storage benchmarking: setting up a test, choosing parameters, and interpreting results.โ
- The I/O stack - which layer is adding the latencyApplication, page cache, filesystem journal, block layer and device each add latency, and iostat only sees one of them. Read f_await, /sys/block stat and per-layer evidence.โ
- Writeback and filesystem tuning - dirty pages, mount options and fstrimSize the dirty page limits in bytes rather than percent, choose atime and journal options from measurement, and run discard as a weekly batch instead of inline.โ
Part XLII
Network Performance
6 checks
- Bandwidth and latency - the two network metricsThe two primary network metrics: bandwidth (how much?) and latency (how long?), and how to measure them.โ
- Packet loss and retransmits - when the network dropsHow to detect packet loss and TCP retransmits, what causes them, and how to fix the underlying problem.โ
- Socket queues and connection states - TCP tuningHow TCP buffers work, what the listen backlog means, and how to tune for high-connection workloads.โ
- iperf3 and throughput testing - measuring bandwidthHow to use iperf3 to measure network bandwidth, latency, and jitter between two hosts.โ
- The bandwidth-delay product - why a fast link runs slowCompute the BDP, read cwnd, rtt and delivery_rate from ss -ti, and decide whether a long fat link needs bigger windows or a different congestion control.โ
- sar -n - network history and the counters nobody collectedRead historical network data from sysstat, compute interface utilisation against link speed, and check that the counters you need were actually being recorded.โ
Part XLIII
eBPF and Advanced Observability
6 checks
- eBPF overview - in-kernel observability for sysadminsWhat eBPF is, how it works, and the sysadmin use cases that matter: tracing, networking, security.โ
- Tracepoints, kprobes, and uprobes - eBPF attachment pointsHow eBPF programs attach to kernel and user events: tracepoints, kprobes, uprobes, and their use cases.โ
- bpftrace and bcc - sysadmin use cases and examplesPractical bpftrace and bcc scripts for common sysadmin questions: latency, packet drops, process activity.โ
- BPF maps and state - communicating with userspaceHow BPF maps work: storing data, communicating between kernel and userspace, and patterns for production eBPF tools.โ
- Running eBPF safely - kernel requirements, permissions and lockdownCheck kernel config, BTF, capabilities and lockdown state before an incident, and read the specific errors bpftrace, bcc and bpftool produce when one of them is missing.โ
- The cost of tracing - eBPF overhead, dropped events and production safetyProbe types differ in cost by orders of magnitude. Aggregate in the kernel, bound what you attach, read the dropped-event warnings, and know which probes not to put on a hot path.โ
Part XLIV
Central Monitoring
6 checks
- Monitoring design - what to monitor, how to alert, and whyHow to design a monitoring system: the four golden signals, RED method, USE method, and what to monitor on Linux.โ
- Prometheus and node_exporter - the standard Linux monitoring stackHow Prometheus and node_exporter work: the pull model, metric format, and exposing host metrics.โ
- Grafana and alerting - dashboards and notificationHow to set up Grafana for dashboards and configure alerting with Alertmanager.โ
- What to monitor on Linux - the production checklistA practical checklist of what to monitor on every Linux host: CPU, memory, disk, network, services, security events.โ
- Hardware monitoring sensors - temperature, voltage, fanHow to read hardware sensors: temperature, voltage, fan speed, and how to alert on hardware problems.โ
- Operating the monitoring stack - retention, cardinality and who watches the watcherPrometheus as a production service: sizing the TSDB, finding the metric that exploded, the scrape limits that protect it, safe reloads, maintenance silences and the dead man switch.โ
Part XLV
Central Logging
6 checks
- Central logging design - the architecture and decisionsHow to design a central logging system: sources, transport, processing, storage, and access.โ
- rsyslog forwarding - traditional syslog shippingHow to configure rsyslog to forward logs to a central system, with TLS, queues, and reliability.โ
- Fluent Bit and Vector - modern log shippersHow to use Fluent Bit and Vector for modern log shipping: structured data, parsing, and routing.โ
- Loki and Elasticsearch - the modern log storeHow to deploy Loki and Elasticsearch as the central log store, with retention and search tuning.โ
- Log cardinality and capacity - sizing and tuningHow to design log cardinality for performance, plan capacity for log volume, and tune the store for production.โ
- Where log messages go missing - and how to prove they did notEvery hop in a central logging pipeline can drop a message for a different reason and report it in a different place. The seven drop points, how to see each one, and the canary that verifies the whole path end to end.โ
Part XLVI
OpenTelemetry
6 checks
- OpenTelemetry three pillars - metrics, logs, tracesHow OpenTelemetry unifies metrics, logs, and traces under one framework for observability.โ
- OTel collectors and agents - the deployment modelHow to deploy OpenTelemetry collectors and agents: the agent/gateway pattern, OTLP, and the host receiver.โ
- OTel host receiver and process metricsHow to use the OTel host receiver for host metrics and the process receiver for per-process metrics, replacing node_exporter.โ
- OTel into Grafana and Tempo - the visual stackHow to ship OTel data to Grafana for visualisation and Tempo for traces: integration, dashboards, and queries.โ
- OTel logs on a Linux host - the journald and filelog receiversHow logs actually reach an OpenTelemetry pipeline on a Linux host: the journald and filelog receivers, parsing and severity, offset checkpointing, and the rotation traps that duplicate or lose lines.โ
- The cost of telemetry - cardinality, sampling and collector limitsWhy an OTel pipeline is a capacity decision: how metric cardinality multiplies, how to drop attributes at the agent, head versus tail sampling for traces, and the collector metrics that tell you it is dropping data.โ
Part XLVII
Backup Strategy
6 checks
- Backup concepts - what to back up and howThe fundamentals of backup: file vs application, full vs incremental, retention, and the difference between backup and DR.โ
- Application-consistent vs crash-consistent backupsThe difference between application-consistent and crash-consistent snapshots, and when each matters.โ
- 3-2-1 and modern backup strategiesThe classic 3-2-1 backup rule and its modern variations: 3-2-1-1-0, immutable backups, and air-gapped copies.โ
- Immutable and offline copies - the last line of defenceWhy immutable and offline backups matter, and how to implement them with S3 Object Lock, tape rotation, and air-gapped disks.โ
- Encryption and key management - protecting backups at restHow to encrypt backups at rest, manage encryption keys, and recover them in a DR scenario.โ
- Backing up what is not a file - partition tables, LVM metadata, LUKS headers and package stateThe restore that fails rarely fails on file data. It fails on the structure the files were living in, which nothing backed up because it was never a file.โ
Part XLVIII
Backup Tools
6 checks
- rsync and tar - the classic backup toolsHow to use rsync and tar for backup: incremental, network-efficient, and the building blocks of backup strategies.โ
- BorgBackup and Restic - the modern deduplicated backup toolsHow to use BorgBackup and Restic for modern, deduplicated, encrypted backups with snapshots and efficient storage.โ
- Filesystem snapshots as backup - ZFS and btrfsHow to use ZFS and btrfs snapshots for backup: instant, space-efficient, but crash-consistent.โ
- LVM snapshots for backups - the classic Linux approachHow to use LVM snapshots for backup: instant creation, copy-on-write, but with a watch-out for production impact.โ
- Enterprise backup integration - Veeam, NetBackup, and similarHow enterprise backup tools integrate with Linux: Veeam Agent for Linux, Veritas NetBackup, Rubrik, and the agent-based model.โ
- Backup tool selection - choosing the right tool for the workloadHow to choose the right backup tool for your workload: size, application type, retention, compliance, and operational fit.โ
Part XLIX
Restore
6 checks
- Restore matters more than backup - the discipline of restoreWhy restore is more important than backup, and the discipline that makes restores reliable when they matter most.โ
- Restore testing discipline - the regular validation routineHow to run restore tests regularly, what to look for, and how to use the results to improve the backup system.โ
- Restore files and ownership - the practical detailsHow to restore individual files, preserve ownership and ACLs, and verify the result.โ
- Restore services and configuration - the full-system recoveryHow to restore an entire service or host: configuration, application data, dependencies, and verification.โ
- Partial and point-in-time restores - one file, one directory, one momentMost restores are not a rebuild. They are one file from Tuesday, and the hard parts are finding the right version and not damaging the live data while you do it.โ
- Restore drills - turning an asserted RTO into a measured oneThe RTO in the DR plan is a number somebody chose. This is how to replace it with a number you observed, and why the observed one is always larger.โ
Part L
Disaster Recovery
6 checks
- RPO and RTO - modelling recovery objectivesHow to model Recovery Point Objective (RPO) and Recovery Time Objective (RTO) and design a backup strategy that meets them.โ
- Disaster scenarios - what to plan forCommon disaster scenarios for Linux hosts: hardware failure, ransomware, datacenter loss, and how to plan for each.โ
- Bare-metal recovery - restoring to a fresh hostHow to recover a Linux host from bare metal: installation, configuration, data restore, and validation.โ
- Dependencies: DNS, certificates, identity - the cascade risksHow DNS, certificates, and identity dependencies cascade in DR: if one is down, the whole recovery can fail.โ
- Full cluster loss recovery - the worst-case scenarioHow to recover from total cluster loss: data centre failure, ransomware, or region outage. The runbook and the discipline.โ
- Declaring a disaster, failing over, and failing backWho decides it is a disaster, which step makes failover irreversible, how to stop both sites serving at once, and the failback nobody plans for.โ
Part LI
Linux Fleet Architecture
6 checks
- Fleet management plane - how a Linux fleet is operatedThe architecture of a Linux fleet: management plane, configuration, identity, monitoring, and how they work together.โ
- Naming and inventory - knowing your fleetHow to name, identify, and inventory Linux hosts: hostname conventions, host IDs, and the inventory database.โ
- Environment separation - dev, staging, and productionHow to separate environments: dev, staging, production. Why it matters and how to enforce it.โ
- Central identity and secrets - the foundation of fleet securityWhy central identity and secrets management are critical: where to put them, how to operate, and the common pitfalls.โ
- Host enrolment and decommissioning - joining and leaving the fleetThe transaction that connects a host to every part of the management plane, the bootstrap trust problem, and why decommissioning is the half that rots.โ
- Scaling the management plane - what breaks between 50 and 5000 nodesThe specific walls a fleet architecture hits at each order of magnitude: push fan-out, catalogue compilation, metric cardinality, log volume, credential issuance rate, and the recovery herd.โ
Part LII
High Availability Fundamentals
6 checks
- Availability and reliability - the metrics that matterHow to define and measure availability: the 9s, MTBF, MTTR, and the cost of each.โ
- Redundancy and fault tolerance - building for failureHow to design for failure: redundancy at each layer, fault tolerance patterns, and the trade-offs.โ
- Failure domains - what fails togetherHow to identify failure domains and design across them: power, network, hardware, software, and human.โ
- N+1 capacity - the math of headroomHow N+1 capacity planning works: failure capacity, maintenance capacity, growth, and the 90%-on-3-nodes trap.โ
- Host availability vs service availability - measuring the right thingWhy a host that was up 99.99% of the month can front a service that missed its target, and how to compose availability across a dependency chain.โ
- Redundancy levels - N+1, N+2, 2N and 2N+1What each redundancy level costs, what it survives, and why raising the level on a small cluster is disproportionately expensive.โ
Part LIII
Quorum and Split Brain
6 checks
- Quorum concepts - the math of agreementHow quorum works in distributed systems: majority, partition, and the requirement for an odd number of nodes.โ
- Membership and partitions - the failure mode that breaks quorumHow membership changes and network partitions affect quorum: split brain, isolated nodes, and the recovery.โ
- Split brain explained - the cluster failure modeHow split brain happens, why it is dangerous, and how quorum plus fencing prevents it.โ
- Witness and quorum devices - breaking geographic tiesHow witness and quorum devices break ties when a cluster is split across sites with even node counts.โ
- Failure detection - how a cluster decides a node has failedToken timeouts, monitor operations and no-quorum-policy: how a cluster infers failure from silence, and what it costs to infer it faster.โ
- Two-node clusters and tie-breaking - the honest versionWhat two_node, wait_for_all, auto_tie_breaker and last_man_standing actually do, why a two-node cluster depends entirely on fencing, and how to break the fence race.โ
Part LIV
Fencing and STONITH
6 checks
- Why fencing exists - the cluster disciplineWhy fencing is required for any healthy cluster: preventing data corruption from the minority group.โ
- Fencing devices and agents - the practical implementationHow fencing devices work: IPMI, BMC, iLO, iDRAC, PDU, and the agents that drive them.โ
- STONITH and data integrity - the shoot-the-other-node-in-the-head patternHow STONITH works, what it guarantees, and how it integrates with Pacemaker for production clusters.โ
- Unresponsive is not dead - the evidence problem fencing solvesWhy a node that stopped answering cannot be assumed to have stopped writing, what counts as evidence that it stopped, and how the zombie writer corrupts a filesystem.โ
- SBD and watchdog fencing - when the node fences itselfDisk-based and diskless SBD, the hardware watchdog that enforces it, why softdog is not a fencing device, and the timeout relationships that make it safe.โ
- Fencing design principles - evaluating any platformThe four properties a fencing method must have, how to write a fence path per failure mode, and the anti-patterns that pass design review.โ
Part LV
Pacemaker and Corosync
6 checks
- Corosync architecture - the cluster membership layerHow Corosync works: membership, quorum, and the transport for cluster communication.โ
- Pacemaker architecture - the resource managerHow Pacemaker works: resource agents, constraints, and the policy engine that decides where resources run.โ
- Pacemaker resources and resource agentsHow Pacemaker resource agents work: the operations, the standard agents, and how to write a custom one.โ
- Pacemaker constraints: location, colocation, orderHow Pacemaker constraints shape resource placement: location, colocation, and order, with examples.โ
- Pacemaker fencing integration - tying STONITH to resourcesHow Pacemaker uses STONITH: location, topology, and the relationship between fencing and resource placement.โ
- Pacemaker troubleshooting - the systematic approachA systematic approach to troubleshooting Pacemaker clusters: from symptom to root cause, with the common failure modes.โ
Part LVI
Keepalived and VRRP
6 checks
- VRRP concepts - virtual router redundancy protocolHow VRRP works: virtual router, master and backup, and the election when the master fails.โ
- Keepalived configuration - the Linux VRRP implementationHow to configure keepalived on Linux: VRRP instance, virtual IP, priorities, scripts, and the production-grade setup.โ
- Keepalived health checks - service-aware failoverHow keepalived monitors service health and triggers failover: HTTP checks, TCP checks, and custom scripts.โ
- Keepalived limitations - when VRRP is not enoughThe limits of keepalived: same-subnet requirement, basic health checks, no application awareness, and when to use a load balancer instead.โ
- Virtual IP mechanics - what actually moves during a failoverHow a VIP moves at layer 2: gratuitous ARP, neighbour caches, virtual MACs, why clients keep talking to the dead node, and the conntrack state that does not follow.โ
- Sync groups and multiple VIPs - keeping a service togetherWhen one VRRP instance is enough, when you need a sync group, why dual-stack needs two instances, and how a sync group amplifies a flapping check.โ
Part LVII
Linux Load Balancing
6 checks
- Load balancing concepts - distributing traffic across backendsHow load balancing works: layer 4 vs layer 7, algorithms, health checks, session persistence, and the common patterns.โ
- HAProxy configuration - the production-grade layer 7 LBHow to configure HAProxy for production: frontends, backends, health checks, session persistence, and the production discipline.โ
- nginx as a load balancer - the versatile optionHow to use nginx as a layer 7 load balancer: upstream, health checks, and the trade-offs vs HAProxy.โ
- IPVS and the kernel load balancer - the layer 4 workhorseHow IPVS works inside the Linux kernel: layer 4 load balancing, the algorithms, and when to use it over HAProxy.โ
- Health checks and persistence - the safety net of load balancingHow health checks and session persistence make load balancing reliable: active vs passive checks, sticky sessions, and the trade-offs.โ
- Connection draining - taking a backend out without dropping requestsThe drain, maint and ready states in HAProxy, weight zero in IPVS, graceful reloads in nginx, and why session persistence makes a drain take far longer than the in-flight requests suggest.โ
Part LVIII
Clustered Service Architecture
6 checks
- Stateless services - the simplest cluster architectureWhy stateless services are the foundation of scalable clusters: properties, examples, and how to design them.โ
- Shared state and replicated state - when stateless is not enoughHow to handle state in clustered services: shared storage, replication, leader election, and the patterns that work.โ
- External state and databases - the stateful backendHow to keep cluster state in external systems: databases, caches, and object stores, and the patterns that work.โ
- Application architecture constraints - the limits of clusteringHow application design limits what a cluster can do: statefulness, dependencies, and the patterns that work.โ
- Identifying the right cluster pattern - a decision procedureFive questions that classify any service into stateless, active-passive, active-active, external-state or leader-elected, with worked examples and the case for not clustering at all.โ
- Failover as the client sees it - the outage the cluster does not measureWhy a twenty-second failover produces a fifteen-minute client outage, what happens to in-flight requests, and how to measure the RTO that users actually experience.โ
Part LX
Distributed Storage Concepts
6 checks
- Ceph architecture intro - the modern distributed storageHow Ceph works: RADOS, OSDs, MONs, MDS, and the components that make up a modern distributed storage system.โ
- Gluster concepts intro - the other distributed filesystemHow GlusterFS works: volumes, bricks, translators, and when to use it over Ceph or SAN.โ
- Object and block storage tradeoffs - the right tool for the dataHow to choose between object storage and block storage: access patterns, performance, consistency, and the use cases for each.โ
- Replication, quorum, and consistency - the distributed storage disciplineHow distributed storage systems replicate data and maintain consistency: replication factor, quorum, and CAP theorem in practice.โ
- Failure domains in distributed storage - where the replicas actually landHow CRUSH rules and Gluster brick order decide which physical failures you survive, and the arithmetic that makes a three-replica pool undersized forever.โ
- Recovery and rebalancing - what a distributed store does after a failureDegraded versus misplaced, the out timer, recovery throttles that modern Ceph ignores, and resolving a Gluster split brain by naming the survivor.โ
Part LXI
DRBD Concepts
6 checks
- DRBD architecture - the distributed replicated block deviceHow DRBD works: block-level replication between two hosts, primary/secondary, and when to use it for HA.โ
- DRBD primary/secondary and split-brain handlingHow DRBD handles primary/secondary roles, how split brain is really detected on reconnect, and how to recover with --discard-my-data.โ
- DRBD in a cluster - integration with Pacemaker for HAHow to integrate DRBD with Pacemaker for a complete HA solution: resource configuration, constraints, and failover testing.โ
- DRBD resync and online verification - reading the replication stateHow to read DRBD disk and connection states, tune the resync controller, and prove the two copies are actually identical with online verification.โ
- Dual-primary DRBD - what it actually requiresWhen both DRBD nodes may be Primary at once, why that only works with a cluster filesystem, and the three preconditions that are not optional.โ
- When DRBD materially helps HA - and when it does notChoosing between DRBD, shared storage, distributed storage and application-level replication, with the write-latency and RPO arithmetic that decides it.โ
Part LXII
Cluster Networking
6 checks
- Cluster network design - management, application, and storageHow to design a cluster network: separate management, application, and storage networks, and the production considerations.โ
- Management vs application vs storage - the network rolesWhy the three cluster networks (management, application, storage) must be separate: the consequences of mixing, and the production patterns.โ
- Redundant interfaces and switches - the cluster network resilienceHow to add redundancy at the network layer: NIC bonding, switch stacking, and dual uplinks for HA clusters.โ
- VLANs and failure domains in cluster networksHow to use VLANs in cluster networks: trunk ports, access ports, and the failure domain design.โ
- Multicast and unicast on the cluster networkWhy Corosync moved off multicast, what an IGMP querier has to do with a cluster that dies after five minutes, and what the knet transport needs from the network.โ
- Latency, jitter and cluster membershipHow the totem token budget turns network delay into fenced nodes, why jitter matters more than average latency, and how to measure and tune it without making things worse.โ
Part LXIII
Cluster Time, DNS and Identity Dependencies
6 checks
- DNS cluster failure impact - what happens when DNS is downHow DNS failures cascade in a cluster: services that depend on DNS, the symptoms, and the mitigation.โ
- NTP skew cluster impact - the silent time bombHow NTP skew affects cluster services: Kerberos, TLS, database replication, and the symptoms of a skewed cluster.โ
- LDAP and certificate expiry cluster impact - the silent credential failuresHow LDAP and certificate expiry affect cluster services: authentication failures, expired services, and the recovery patterns.โ
- Mapping cluster dependencies - finding what you depend onHow to discover a cluster external dependencies from the running system rather than from memory, classify them as hard or soft, and record the blast radius of each.โ
- Designing around dependency failures - remove, cache, degrade, break glassThe four strategies for surviving a dependency outage, how to choose fail-open or fail-closed per dependency, and why circular dependencies only surface during a cold start.โ
- Testing dependency failures - injecting the outage safelyHow to exercise a dependency outage with a bounded blast radius and an automatic rollback, why grey failures matter more than hard ones, and what to measure.โ
Part LXIV
Rolling Maintenance
6 checks
- Rolling maintenance workflow - the loop that keeps a cluster servingThe go/no-go gate before the first node, the drain-change-validate-return loop, and the rule that the previous node must be fully back before the next one is touched.โ
- Maintenance mode and drain - the safe cluster updateHow to put a node in maintenance mode, drain traffic, and bring it back. The safe cluster update pattern.โ
- Health validation after a change - the safety netHow to validate that a cluster change is healthy: smoke tests, monitoring checks, and the discipline of verified changes.โ
- Batch sizing and rollback - the change control disciplineHow to choose batch size for cluster changes and have a tested rollback plan. The change control discipline for HA clusters.โ
- Draining behind a load balancer - rolling maintenance without a cluster managerHow to take a node out of rotation when the traffic director is HAProxy, nginx or keepalived rather than Pacemaker, and how to know the drain actually finished.โ
- Orchestrating the rolling loop - automation that stops on evidenceExpressing drain, change, validate and return as an Ansible play with serial batches, a real health gate, and abort conditions that fire before the whole fleet is broken.โ
Part LXV
Rolling Kernel Upgrades
6 checks
- Kernel package install - the kernel upgrade workflowHow to install a new kernel on a cluster node: package management, reboot requirement, and validation.โ
- Reboot and boot validation - the kernel upgrade verificationHow to verify that a new kernel boots correctly and the system is fully functional after the reboot.โ
- Live kernel patching concepts - patching without rebootingHow live kernel patching works: kpatch, kgraft, and Livepatch; the trade-offs and when to use it.โ
- Kernel rollback - getting back to the kernel that workedRunning versus installed kernels, BLS boot entries, one-shot versus persistent default changes, initramfs rebuilds, and version-locking the kernel that broke the host.โ
- Cluster capacity during a kernel campaign - the reboot budgetHow long a node is really out for a kernel reboot, why the 24-hour hold turns a patch into a multi-week campaign, and what that does to the capacity you are running on the whole time.โ
- Proving a kernel campaign worked - CVEs, backports and vulnerability stateWhy comparing kernel version strings against upstream is meaningless on enterprise distributions, how to map a CVE to a vendor kernel build, and what /sys/devices/system/cpu/vulnerabilities actually tells you.โ
Part LXVI
Capacity Planning for Clusters
6 checks
- Capacity utilisation bands - the 90%-on-3-nodes trapHow to design capacity utilisation bands, the 90%-on-3-nodes trap, and the trade-offs of headroom.โ
- Normal and peak - measuring the load you actually haveHow to establish a capacity baseline from sysstat history: normal versus peak, why the average hides the number that matters, and the peak-to-mean ratio.โ
- Utilisation is not saturation - what the queue tells you that the percentage cannotWhy a utilisation percentage stops predicting service quality long before it reaches 100%, and how to measure saturation directly with run queue, await, and pressure stall information.โ
- Forecasting growth - turning a trend into a dateHow to convert a growth rate into the date a resource runs out: linear versus compound growth, doubling time, filesystem fill dates, and subtracting the procurement lead time.โ
- Maintenance capacity - what a change window costs the clusterWhy planned maintenance consumes the same headroom as a failure, how to size for concurrent maintenance and failure, and when N+2 is the honest answer.โ
- Writing the capacity plan - finding the binding constraintHow to turn per-resource measurements into one capacity plan: the six resources that run out, which one binds first, and the dated actions the plan must produce.โ
Part LXVII
Cluster Monitoring
6 checks
- Cluster monitoring design - what to monitor in a clusterHow to design cluster monitoring: quorum, membership, failovers, resources, and the actionable alerts.โ
- Monitoring failovers and resources - the cluster activityHow to monitor cluster failovers and resource state: tracking events, alerting on anomalies, and the actionable signals.โ
- Actionable cluster alerts - the alert that leads to actionHow to design cluster alerts that are actionable: the right signal, the right threshold, the right runbook, and the right action.โ
- Monitoring cluster storage and replication - watching the standby tooWhy monitoring the active node hides the failure that matters, how to watch replication health and redundancy, and which storage signals page rather than ticket.โ
- Monitoring cluster network and time - the leading indicatorsWatching corosync links, the redundant ring that has been down for months, and why node-to-node clock comparison matters more than agreement with an upstream server.โ
- What cluster monitoring cannot tell youSeven questions no monitoring system can answer about a cluster, what to put in place instead, and a decision procedure for what is worth waking someone for.โ
Part LXVIII
Cluster Incident Response
6 checks
- Cluster IR: node unreachable - the most common incidentA runbook for the most common cluster incident: a node becomes unreachable. The diagnostic, the recovery, the prevention.โ
- Cluster IR: network partition - deciding which side is realRunning an incident when the cluster has split: recognising a partition from inside it, choosing the surviving side, and why restarting the cluster service destroys the evidence.โ
- Cluster IR: quorum loss - the arithmetic and the decision recordReading the vote arithmetic during a quorum-loss incident, diagnosing a failed quorum device, and recording the decision when you have to relax quorum by hand.โ
- Cluster IR: fencing failure and the fence loopThree fencing incidents - the fence that never completes, the fence loop, and the node that comes back and is fenced again - and what a fenced node means for the incident timeline.โ
- Cluster IR: shared storage loss - when a stop cannot succeedThe cluster incident where storage disappears, resource stops hang in uninterruptible sleep, and the cluster starts fencing healthy nodes because it cannot prove anything has stopped.โ
- Cluster IR: building one timeline from nodes whose clocks disagreeCollecting evidence across cluster nodes during an incident: measuring clock offset before trusting timestamps, anchoring on a shared event, and merging several journals into one defensible timeline.โ
Part LXIX
Hardware Health
6 checks
- SMART and NVMe health - disk failure predictionHow to use SMART and NVMe health monitoring to predict disk failures before they happen.โ
- RAID controller monitoring - the storage layer belowHow to monitor RAID controllers: BBU, cache, RAID state, and the vendor-specific tools.โ
- IPMI and BMC basics - the lights-out management foundationHow IPMI and BMC work: the out-of-band management interface, common commands, and the security considerations.โ
- Thermal and ECC monitoring - the memory and CPU healthHow to monitor thermal and ECC memory: temperature, fan speed, ECC errors, and the predictive replacement discipline.โ
- Hardware inventory and the SEL - turning an alert into a part numberHow to map a health alert onto a physical component with dmidecode, lsblk and lshw, and how to read the BMC System Event Log that records what the OS never saw.โ
- Firmware lifecycle - the layer your package manager cannot seeAuditing and updating BIOS, BMC, drive and NIC firmware with fwupd and vendor tools, why firmware version drift is a real defect, and why firmware rollback usually does not exist.โ
Part LXX
Out-of-Band Management
6 checks
- OOB architecture - the out-of-band management layerHow out-of-band management is designed: separate network, dedicated hardware, and the security considerations.โ
- Redfish and IPMI APIs - the standards for hardware managementHow Redfish and IPMI work as management standards: the API surface, the typical operations, and when to use which.โ
- OOB and DR - the out-of-band layer in disaster recoveryHow out-of-band management fits into disaster recovery: the role of BMC, the relationship to data center DR, and the testing discipline.โ
- Serial console and SOL - the text lifeline into a hostHow to wire a serial console end to end - firmware, GRUB, kernel and getty - and reach it over IPMI serial-over-LAN when the host has no network.โ
- OOB power control - the commands that change stateRead-only BMC queries first, then the power verbs and what each one actually does to a running host, plus the targeting discipline that stops you rebooting the wrong node.โ
- OOB credentials and break-glass - access that survives the outageBMC account management, the circular dependency that makes a password vault useless during an incident, and a break-glass path you can actually test.โ
Part LXXI
TLS and PKI
6 checks
- TLS and PKI concepts - the foundation of encrypted communicationHow TLS and PKI work: certificates, certificate authorities, chains of trust, and the renewal lifecycle.โ
- OpenSSL for sysadmins - the practical toolkitHow to use openssl for the common sysadmin tasks: generating keys, creating CSRs, signing certificates, checking expiry.โ
- Certificate authorities and chains - the trust model in practiceHow certificate authorities work in practice: public CAs, private CAs, intermediate CAs, and the trust chain.โ
- Certificate renewal and expiry - the lifecycle disciplineHow to manage certificate renewal and expiry: monitoring, automation, and the production discipline.โ
- TLS troubleshooting - diagnosing failures from the wireWhy the certificate on disk is not evidence about what a server serves, and an ordered diagnostic for chain, name, date, trust store, SNI and protocol failures.โ
- Certificate revocation in practice - CRL, OCSP and short lifetimesHow CRL and OCSP actually behave, why soft-fail makes web revocation weak, what stapling fixes, and why short-lived certificates are the control that works.โ
Part LXXII
Secrets
6 checks
- Secrets - the credential management problemWhy secrets management is a problem in production: where secrets live, how they leak, and the principles of secret management.โ
- Secrets at rest - ownership, modes and the copies you forgotWhere credential files actually live on a Linux host, the modes and ownership they need, the window between creating a file and securing it, and the copies that outlive the original.โ
- Secrets in scripts, logs and shell historyHow a correctly written script still leaks its credentials: xtrace into the journal, verbose clients in CI logs, per-tool history files, and the masking that does not mask.โ
- Private keys - passphrases, agents and the keys you cannot rotateHandling SSH and TLS private keys as secrets: what a passphrase actually buys, agent lifetime and forwarding, matching a key to its certificate, and the keys that get baked into an image.โ
- Rotation - making a credential change a routine operationWhy rotation is a change-management problem rather than a cryptographic one: consumer inventories, the two-credential overlap window, proving the old credential is unused, and emergency rotation after an exposure.โ
- External secret managers - the bootstrap and availability problemsWhat changes when secrets move to a central store: how the host authenticates to it without a chicken-and-egg credential, what happens when the store is unreachable, and the failure modes a store introduces.โ
Part LXXIII
Change Management
6 checks
- Change plans and peer review - the discipline of safe changesWhy change plans and peer review are the foundation of safe production changes: pre-checks, rollback, and validation.โ
- Change classes and blast radius - sizing the process to the changeHow to classify a change as standard, normal or emergency, how to estimate blast radius honestly, and why reversibility matters more than the size of the diff.โ
- Pre-checks and state capture - what to record before you touch anythingWhy a change must start from a known-good state, how to prove the host is healthy before you change it, and how to capture the before picture that validation and rollback both depend on.โ
- Staged rollout - canaries, cohorts and the health gateHow to roll a change across a fleet in stages: choosing a representative canary, sizing cohorts, setting soak time, and gating on health rather than on a timer.โ
- Abort criteria and the point of no return - rollback as part of the procedureWhy rollback belongs in the procedure rather than after it: writing abort criteria before the change, finding the point of no return, and choosing between rolling back and fixing forward.โ
- Maintenance windows, freezes and the observation periodHow to size and defend a maintenance window, when a change freeze helps and when it makes things worse, and why the change is not finished when the window closes.โ
Part LXXIV
Configuration Drift
6 checks
- Drift remediation - bringing hosts back to desired stateHow to remediate drift: the runbook for bringing hosts back, the prevention pattern, and the documentation.โ
- How drift accumulates - the eight ways hosts stop matchingWhere configuration drift actually comes from: build-time divergence, package upgrades rewriting configs, emergency changes, partial rollouts, and the drift a configuration management tool creates itself.โ
- Detecting drift independently of the CM toolThree sources of truth that do not come from your configuration management tool: package verification, a file integrity baseline, and node-to-node comparison - and what each one cannot see.โ
- Package and version drift across a fleetDrift that lives in installed packages rather than configuration files: version divergence, package holds, third-party repositories on a subset of hosts, and code that is installed but not running.โ
- Runtime versus on-disk drift - when the file is right and the system is notDrift between the configuration on disk and the state actually loaded: firewall rules, sysctl values, systemd overrides and kernel modules - and why the reboot is when it all arrives at once.โ
- The limits of drift detection - measuring what nothing managesWhy "no changes" only proves the tool checked what it manages, how to measure management coverage on a real host, and how to decide what should be declared.โ
Part LXXV
Immutable vs Mutable Infrastructure
6 checks
- Mutable server traditions - the legacy approachWhat mutable server traditions are, why they were the norm, and the limitations that led to the immutable approach.โ
- Golden images and immutable patterns - the modern approachHow golden images and immutable patterns work: bake once, deploy many, replace on change.โ
- Cloud images and the image build pipelineWhat a distribution cloud image actually is, how to verify one before you build on it, and how to run an image pipeline that produces reproducible, traceable, retirable images rather than an unlabelled pile of AMIs.โ
- Configuration management and image baking - choosing the seamConfiguration can be applied at bake time, at launch time or at run time. Choosing deliberately is what separates an immutable fleet from one that has a golden image and a convergence loop fighting each other.โ
- State in an immutable fleet - what survives replacement and what does notReplacing an instance deletes everything on its root disk. Finding every piece of state a Linux host holds, deciding where each piece belongs, and running stateful services under a model built for disposable machines.โ
- The trade-offs, and the emergency change that has to existWhat immutable infrastructure costs, where it is the wrong choice, and how to design the emergency in-place change so the fix does not silently disappear at the next replacement.โ
Part LXXVI
Virtualisation and Linux
6 checks
- Linux as a VM - virtual hardware, guest tools and the clockWhat changes when Linux runs as a guest: virtio devices and how to confirm them, guest agents and what breaks without one, memory ballooning and misleading free output, and why a hypervisor snapshot is not a backup.โ
- Guest agents - the out-of-band channel into a running VMHow a guest agent actually talks to the hypervisor, why it works when the network does not, the freeze hooks that make a snapshot application-consistent, and the root-level command channel it opens.โ
- Converting a guest to virtio - the migration that makes a VM unbootableHow to verify which device model a guest is really using, and how to move an existing guest from emulated devices to virtio without losing the boot.โ
- CPU topology in a guest, and what the guest cannot seeThe socket and core layout a VM reports is a configuration choice with licensing and performance consequences, the CPU model constrains migration, and steal time is the only window a guest has onto its host.โ
- Timekeeping in a guest - clock sources, steps and the resumed VMWhy a descheduled vCPU loses time, how kvm-clock and the TSC differ across a migration, what chrony does with a large offset by default, and the failure modes of a guest that resumes with the wrong clock.โ
- Growing a guest online - disk, filesystem, memory and CPUThe hypervisor changes the virtual hardware and the guest keeps using the old numbers until you tell it not to: rescanning a resized disk, the full grow chain, hot-added memory that arrives offline, and why hot-added CPUs often do nothing.โ
Part LXXVII
Linux in the Cloud
6 checks
- cloud-init and the instance metadata serviceHow a cloud instance configures itself at first boot, how to debug cloud-init when it does not, the per-provider metadata endpoints, and why that endpoint must be blocked from application containers.โ
- Ephemeral and persistent storage - the cloud storage modelHow cloud storage works: ephemeral vs persistent volumes, snapshots, encryption, and the right pattern for the workload.โ
- Writing user-data - payload formats, module frequency, and the test loopThe user-data payload formats cloud-init accepts, which modules run in which stage, the per-instance/per-boot/per-once frequency model, and how to test a configuration before it reaches a real instance.โ
- Instance lifecycle - reboot, stop/start, terminate, replaceWhat each instance state transition does to the Linux system underneath: which disks survive, which addresses change, what cloud-init does next, and why "the instance was replaced" is a data-loss event you have to design around.โ
- Security groups and the host firewall - two layers that fail differentlyThe platform firewall and the guest firewall are separate enforcement points with different failure signatures. How to tell which one dropped the packet, why stateless rules break return traffic, and why address-based rules break at the next instance replacement.โ
- Instance identity and cloud IAM from the Linux sideHow a process on an instance proves who it is to a cloud API: instance roles versus static keys, the credential resolution chain that silently shadows them, and the places on a Linux box where a secret leaks.โ
Part LXXVIII
Containers from the Linux Perspective
6 checks
- Container primitives - namespaces, cgroups, OverlayFS, capabilitiesHow containers are built on Linux: namespaces for isolation, cgroups for resources, OverlayFS for layers, capabilities for permissions.โ
- OverlayFS for containers - the layered filesystemHow OverlayFS works for containers: lowerdir, upperdir, workdir, and the operational implications.โ
- Network namespaces by hand - building container networking with ipConstruct the network a container runtime builds for you: a namespace, a veth pair, a bridge, forwarding and NAT - using only ip and nft, so the failures become recognisable.โ
- User namespaces and UID mapping - the kernel side of rootlessHow a user namespace maps container UID 0 to an unprivileged host UID, where subuid ranges come from, why files appear owned by nobody, and the AppArmor restriction that breaks rootless tooling on modern Ubuntu.โ
- What containers do not isolateThe shared kernel, the sysctls that are host-wide, the clock that is not virtualised, and the reason nproc and free report the host inside every container.โ
- Attributing host symptoms to containers - triage without the runtime CLIA host is unhealthy and the cause is inside a container. How to get from a PID, a socket, a full filesystem or a runaway cgroup to the container responsible, using only /proc, the cgroup hierarchy and nsenter.โ
Part LXXIX
Troubleshooting Methodology
6 checks
- The troubleshooting loop - ten steps and their stop-rulesThe named, repeatable diagnostic loop this course uses: ten steps, the Linux commands for each, and the rule that tells you when a step is finished.โ
- Evidence-based diagnosis - capture before you disturbHow to collect Linux evidence that survives a restart, keep a defensible timeline, and tell correlation from causation.โ
- Preventing recurrence - closing the failure gap and the detection gapHow to turn a restored service into follow-up actions that actually stop the incident happening again, and that shorten it if it does.โ
- Defining the symptom - turning a complaint into a measurementStep 1 of the troubleshooting loop in detail: how to convert "it is slow" into an observed value, an expected value and a first-seen time, and what to do when it will not reproduce.โ
- What changed - working the highest-yield questionStep 3 of the troubleshooting loop in detail: the six places a Linux host records what changed, how to read each of them, and why a host that has changed nothing can still break.โ
- Narrowing to one subsystem - bisect the path, then test one thingSteps 5 to 7 of the troubleshooting loop: bisecting the request path to localise a fault, writing a hypothesis that can be proved wrong, and designing a test that measures more than it changes.โ
Part LXXX
Common Failure Scenarios
6 checks
- Failure: a service will not start, a host will not bootThe distinguishing evidence for the two most common Linux failures: a unit that refuses to start, and a host that stops at an emergency shell.โ
- Failure: filesystem full, inodes exhausted, filesystem read-onlyThree failures that all present as "cannot write": how to tell them apart with df -h, df -i and dmesg, and how to recover each.โ
- Failure: DNS, routing, packet loss, firewall and certificate expiryHow to localise a network failure to a layer - resolution, route, filtering, or TLS - instead of guessing, and the evidence that identifies each.โ
- Failure: OOM kills, CPU saturation and disk latencyTelling a memory failure from a CPU failure from a storage failure when every one of them presents as "the server is slow".โ
- Failure: cluster node loss, quorum loss and dependency outagesDiagnosing a lost cluster node, a split partition, a failed fence, and the shared dependencies - DNS, time, identity - that take a whole cluster down at once.โ
- Failure: nobody can log in, and sudo stopped workingFour different failures behind one symptom: identity resolution, authentication, authorisation and session setup - and the three commands that tell them apart before you touch anything.โ
Part LXXXI
Incident Command
6 checks
- Incident roles and communication - the team coordinationHow to coordinate an incident response team: roles, communication, and the post-incident review.โ
- Impact assessment - measuring what is broken for whomHow to establish the impact of an incident before declaring a severity: the four dimensions, measuring from the edge rather than from the component, and handling unknown impact.โ
- Stabilisation - restoring service before you understand itThe mitigation catalogue, the one-change-at-a-time rule, and why diagnosing before stabilising costs more than it saves - plus the cases where stabilising first is wrong.โ
- Evidence preservation - what recovery destroysWhich evidence each recovery action erases, the sixty-second capture that fits before a restart, log retention arithmetic, and the different rules for a security incident.โ
- Escalation and handover - moving an incident between peopleWhen to escalate and what escalation actually transfers, the handover packet for a long incident, and what a vendor needs before they will help.โ
- Recovery and stand-down - closing an incident properlyVerifying recovery from the user position, the observation period before stand-down, unwinding the emergency changes, and what carries forward into the review.โ
Part LXXXII
Root Cause Analysis
6 checks
- Avoiding human error as cause - the systemic approachWhy human error is not the root cause and how to design systems that prevent humans from making mistakes.โ
- Trigger, contributing factors, root cause - taking an incident apartThe three-part decomposition that makes a post-incident review produce work worth doing, and why the trigger is almost never the thing to fix.โ
- Reconstructing the timeline - evidence over recollectionHow to build an incident timeline from timestamped evidence rather than memory: the sources, the clock problems, the two clocks you must track separately, and what an unexplained gap means.โ
- Causal chains and stopping rules - not settling for the first plausible answerHow to push a causal chain past the first plausible explanation, why five whys produces a single misleading line, and the rules that tell you when the analysis is finished.โ
- Systemic causes - the conditions that made the incident possibleHow to find the causes that live above any single host: normalised deviance, missing feedback loops, coupling, and the difference between an incident and a pattern.โ
- The blameless postmortem - writing an RCA that produces changeThe structure of a post-incident review document, what blameless actually requires in practice, and the writing habits that decide whether anything gets fixed.โ
Part LXXXIII
Operational Documentation
6 checks
- Architecture and dependency maps - the documentation foundationHow to document the architecture and dependencies of a service: diagrams, inventories, and the operational reference.โ
- Build and recovery procedures - the operational referenceHow to document the build and recovery procedures: the steps to bring a service up, and the steps to bring it back.โ
- Runbooks that work at 3amWriting an operational procedure for a reader who is half awake, does not own the system, and cannot ask anyone: expected output per step, named decision criteria, bounded waits, and how to test a runbook before it is needed.โ
- Inventories, maintenance procedures and escalation pathsThe three operational records that are not procedures: what you have and who owns it, the recurring work that has no ticket, and the escalation path that has to work before you need it.โ
- The incident record - writing it while it is happeningWhat a contemporaneous incident record contains and why it cannot be reconstructed afterwards: the timeline, negative results, decisions with reasoning, honest detection, and evidence captured before it is destroyed.โ
- Documentation that stays true and can be foundThe two ways operational documentation fails without anyone noticing: it drifts out of agreement with the system, and it exists somewhere the reader never looks. Both have mechanical fixes.โ
Toolkit
Runbooks
14 checks
- Runbook: Take and verify a backupRun an on-demand or scheduled backup so that it is restorable: quiesce the data, capture it consistently, verify the archive, and record what was taken.โ
- Runbook: Cluster node failure - triage, recover, return to serviceA node has left the cluster. Establish whether it failed, was fenced, or was partitioned; confirm resources are running exactly once; and return the node safely.โ
- Runbook: Disaster recovery - full cluster lossA production runbook for the worst-case DR scenario: total cluster loss, the procedure, communication, and verification.โ
- Runbook: Fencing failure - recover a fenced nodeA production runbook for recovering when fencing fails or a node is incorrectly fenced.โ
- Runbook: Investigate a systemd service that will not startDiagnose a failed or flapping systemd unit: read the real error, separate config faults from dependency and permission faults, and restore the service.โ
- Runbook: Investigate an OOM killFind out what the OOM killer killed and why: read the kill record, separate a global OOM from a cgroup OOM, and fix the cause rather than adding RAM.โ
- Runbook: Keepalived failover - test and recoverA production runbook for testing and recovering from a keepalived failover event.โ
- Runbook: Load balancer failure - recover and restoreA production runbook for recovering from a load balancer failure: HAProxy down, backend pool exhausted, or routing issues.โ
- Runbook: Pacemaker failover - test and recoverA production runbook for testing and recovering from Pacemaker failover, including STONITH and resource constraints.โ
- Runbook: Quorum lossRestore a cluster that has lost quorum: establish which partition is authoritative, recover membership safely, and avoid the forced-quorum actions that cause split brain.โ
- Runbook: Reboot a production serverReboot a production host without turning a two-minute restart into an outage: prove it will come back before you take it down, drain it, reboot, and validate.โ
- Runbook: Rolling kernel upgrade - the production procedureA production runbook for a rolling kernel upgrade: drain, reboot, validate, return, with rollback procedure.โ
- Runbook: Rotate a TLS certificateReplace a TLS certificate without an outage: build the correct chain, validate the key pair before deploying, reload rather than restart, and verify from outside the host.โ
- Runbook: Filesystem full - blocks, inodes, and deleted-but-open filesRestore a full filesystem safely: separate block exhaustion from inode exhaustion from deleted-but-open files, reclaim space without deleting evidence, and prevent recurrence.โ
Toolkit
Break/fix scenarios
5 checks
- Break/Fix: the resources will not fail over and the node is UNCLEANPacemaker refuses to start a resource anywhere. Separate a failing fence path from a constraint and from shared storage, and understand why the refusal is the guarantee working.โ
- Break/Fix: the filesystem is full and deleting the big file did not helpENOSPC on a live host. Find the real consumer, reclaim space from a file that is already unlinked, and choose between rotation, archival and growth without losing data.โ
- Break/Fix: a node vanished from the cluster โ network, fencing, or split brain?A node drops out of a Corosync ring. Tell a blocked network path apart from a completed fence and from a genuine split brain, using signals that do not lie about UDP.โ
- Break/Fix: the server is slow and every resource looks busyA server is slow. Separate the saturated resource from the merely busy ones with the USE method, and reject the three diagnoses that utilisation figures invite.โ
- Break/Fix: a service is down and the health check is failingA failure injection drill: stop a critical service, diagnose it from the evidence rather than the assumption, restore it, and write the runbook.โ