
A real-world incident report for engineers dealing with filesystem corruption on production Linux...
A real-world incident report for engineers dealing with filesystem corruption on production Linux servers
It started with a simple complaint: our company's OpenStack Horizon portal was unreachable. The browser returned ERR_CONNECTION_TIMED_OUT. No warning, no gradual degradation — just gone.
We had two physical HPE ProLiant DL380 Gen10 servers running the environment, accessible only via HP iLO 5 remote console. No physical access. No one near the data centre. Just me, a browser, and an iLO HTML5 console.
This is the story of what happened, what we tried, what failed, and what every engineer should know before they find themselves in the same situation.
The first thing I noticed was that pinging the servers returned Destination host unreachable even on VPN. This ruled out a simple service crash — something was fundamentally wrong at the OS level.
Opening the iLO console for the controller node revealed the server was stuck in a BusyBox initramfs emergency shell with the following critical errors:
UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY
Failure: File system check of the root filesystem failed
The root filesystem requires a manual fsck
Lesson #1: Always check iLO/IPMI console first. The OS may be completely down while the management interface is still accessible.
The root filesystem was on an LVM logical volume. The initramfs had tried to run an automatic fsck and failed. The errors pointed to:
The size mismatch error was particularly telling:
The filesystem size is 288358400 blocks
The physical size of the device is 285474816 blocks
Either the superblock or the partition table is likely to be corrupt
Lesson #2: A filesystem size larger than the physical device usually means the LVM volume was shrunk without first shrinking the filesystem, or the superblock was corrupted during an unclean shutdown.
The initramfs environment is extremely limited. Here is what we tried and the results:
vgchange -ay
✅ This worked and activated all volume groups.
e2fsck -y -b 32768 /dev/mapper/<your-lv-name>
⚠️ This started working but kept getting killed by the OOM (Out of Memory) killer because initramfs has very limited RAM available for processes.
lvm lvextend -l +100%FREE /dev/<vg-name>/<lv-name>
✅ This successfully extended the volume to match what the filesystem expected.
mke2fs -S -b 4096 /dev/mapper/<your-lv-name>
✅ The superblock was rewritten. e2fsck then started making real progress fixing inodes.
dd if=/dev/zero of=/swapfile bs=1048576 count=4096
mkswap /swapfile
# swapon /swapfile — NOT AVAILABLE in initramfs
❌ swapon is not available in initramfs. This is a critical limitation.
Lesson #3: The initramfs environment is missing many essential tools including swapon, resize2fs, tune2fs, debugfs, and lvextend. Plan for this limitation before you need it.
Every time e2fsck got deep into repairing the large volume, the kernel OOM killer terminated it:
Out of memory: Killed process (e2fsck)
The server had significant RAM but initramfs was only making a small portion available for user processes. Without swap, e2fsck couldn't complete the repair.
Lesson #4: For large filesystems (500GB+), e2fsck requires significant RAM. Always ensure swap is available before running fsck on large volumes. If you're in initramfs without swap, you need a different approach.
We tried to boot Ubuntu 20.04 Live Server from an ISO mounted via iLO Virtual Media. This would have given us a full Ubuntu environment with all tools.
The challenges we encountered:
Lesson #5: Test your iLO Virtual Media boot process BEFORE you need it in an emergency. Know whether your server's UEFI will boot from iLO virtual media and in what order.
We discovered the HPE Embedded UEFI Shell under: System Utilities → Embedded Applications → Embedded UEFI Shell
From there we could launch the GRUB bootloader directly:
fs0:
cd EFI\ubuntu
shimx64.efi
This gave us access to the GRUB menu and boot parameter editing. We modified the boot parameters to skip fsck:
linux /vmlinuz-<version>-generic root=/dev/mapper/<lv-name> ro fsck.mode=skip
Unfortunately the filesystem was too corrupted to mount even with fsck skipped.
Lesson #6: The HPE Embedded UEFI Shell is a powerful recovery tool. Learn how to use it. It can launch bootloaders directly from the EFI partition without needing a working boot order.
After extensive repair attempts, the final error was:
EXT4-fs error: inode #2: special inode unallocated
get root inode failed
mount failed
Inode #2 is the root directory inode — the most critical inode in any ext4 filesystem. When this is destroyed, the filesystem cannot be mounted under any circumstances without specialist data recovery tools.
Lesson #7: If inode #2 is corrupted, you need either a backup restore or professional data recovery. No amount of e2fsck will fix a destroyed root inode.
resize2fs, tune2fs, debugfs — not available in initramfsswapon — not available in initramfs# Activate LVM volumes from initramfs
vgchange -ay
# List mapper devices
ls /dev/mapper/
# Find backup superblocks
dumpe2fs /dev/mapper/<device> | grep -i superblock
# Run fsck with backup superblock
e2fsck -y -b 32768 /dev/mapper/<device>
# Extend LVM volume (using lvm wrapper in initramfs)
lvm lvextend -l +100%FREE /dev/<vg-name>/<lv-name>
# Rewrite superblock (does NOT destroy data)
mke2fs -S -b 4096 /dev/mapper/<device>
# Create swap file
dd if=/dev/zero of=/swapfile bs=1048576 count=4096
mkswap /swapfile
swapon /swapfile # (not available in initramfs)
# Mount filesystem read-only
mount -o ro /dev/mapper/<device> /mnt
# Chroot into recovered system
chroot /mnt /bin/bash
Filesystem corruption at the inode level is one of the most serious failures a Linux system administrator can face. The key takeaways from this incident are:
If you find yourself in a similar situation, I hope this article saves you some of the hours I spent learning these lessons the hard way.
If this article helped you, please clap and share. If you have questions or have been through a similar experience, leave a comment below.
Tags: #Linux #OpenStack #SysAdmin #DevOps #DisasterRecovery #Ubuntu #LVM #Filesystem #HPE #iLO
gemmaI ported the whole Gemma-4 family — E2B, E4B, 12B, 31B, and the 26B-A4B MoE — to run on...
communityHey DEV, I'm Tobore. Let's actually connect. I've been on here for a while now, mostly writing and...
ai(yep, kinda clickbait, just for the funsies 😊) At the beginning of the year, I relaunched my...
aiMy laptop was sitting idle with the fan at full tilt. Nothing was running that I knew of. The culprit...
githubactionsI Built a Thing! TL;DR — Google Gemini-based Pull Request reviews and Issue Triaging for...
aiI've been hearing the word "harness" thrown around a lot lately. I assumed it just meant "the IDE" or...
Workflows from the Neura Market marketplace related to this DeepSeek resource