Storage Troubleshooting

Storage problems on production Ubuntu servers range from simple disk-full situations to hardware failures to file system corruption. The key is knowing how to quickly diagnose which problem you are dealing with, because the urgency and response differ: a full disk needs immediate cleanup, a failing disk needs immediate backup and replacement, and file system corruption needs careful offline repair.

Disk full errors

# Symptom: "No space left on device" errors
# Step 1: Identify which partition is full
df -hT

df output showing full disk

Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda1      ext4   50G   50G     0 100% /    ← Full!
# Step 2: Find what's using the space
sudo du -h --max-depth=1 / 2>/dev/null | sort -rh | head -10
# Then drill down:
sudo du -h --max-depth=1 /var | sort -rh | head -10
sudo du -h --max-depth=1 /var/log | sort -rh | head -10

# Step 3: Quick wins to free space immediately
sudo apt clean                        # Clean apt cache
sudo apt autoremove                   # Remove unused packages
sudo journalctl --vacuum-size=200M    # Limit journal to 200 MB
sudo truncate -s 0 /var/log/bigfile.log   # Truncate large log file

# Step 4: Check for inode exhaustion (different cause, same symptom)
df -i    # 100% IUse% = inode exhaustion
find /var/spool -type f | wc -l   # Often the culprit

I/O errors and bad sectors

# Symptom: errors in /var/log/syslog or kernel messages
sudo dmesg | grep -E "error|I/O|bad sector|SCSI|ata" | tail -20

dmesg I/O error messages

[1234567.890] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[1234567.891] ata1.00: failed command: READ FPDMA QUEUED
[1234567.892] ata1.00: end_request: I/O error, dev sdb, sector 104857600
# Check SMART data (disk health monitoring)
sudo apt install -y smartmontools
sudo smartctl -a /dev/sdb | grep -E "SMART|Reallocated|Pending|Uncorrectable"

# Run a SMART short test (1-2 minutes)
sudo smartctl -t short /dev/sdb
# Wait, then check results:
sudo smartctl -a /dev/sdb | grep -A5 "SMART Self-test log"

# If SMART shows reallocated sectors or uncorrectable errors → disk is failing
# Immediately: take a backup, plan replacement

Slow disk performance

# Diagnose slow disk with iostat
sudo apt install -y sysstat
iostat -xd 2 5    # Extended stats, 2-second interval, 5 times

iostat output showing a busy disk

Device    r/s     w/s    rMB/s   wMB/s   await  %util
sda       2.00   45.00    0.10    2.25    125ms   98%   ← 98% utilization!
sdb       5.00    1.00    2.00    0.05     8ms    12%
# Find which process is causing high disk I/O
sudo iotop -o    # -o = show only processes with active I/O

# Check for a runaway process writing logs
lsof -p $(pidof myapp) | grep "\.log"

# Check if it's a background kernel process
sudo iotop -o -k -P    # -k = kilobytes, -P = processes only

File system corruption

# Symptom: "structure needs cleaning" or read-only remount
dmesg | grep -E "ext4|xfs|corrupt|remounting"

# If the file system was remounted read-only automatically:
# 1. Determine which device
mount | grep "read-only"

# 2. Unmount and run fsck
sudo umount /data
sudo fsck -y /dev/sdb1    # ext4

# For XFS:
sudo xfs_repair /dev/sdb1

# For the root filesystem: boot into recovery mode, then:
# sudo fsck -y /dev/sda1
# sudo reboot

LVM troubleshooting

# Symptom: LV not available after reboot
sudo lvs    # Shows 'inactive'?
sudo vgchange -ay    # Activate all volume groups
sudo lvs    # Should now show active

# Symptom: "Volume group not found"
sudo vgscan    # Scan for volume groups on all disks
sudo vgchange -ay

# Symptom: Disk added but VG still shows same free space
sudo pvscan --cache    # Rescan PVs
sudo pvs               # Verify the new PV is listed

# LVM debugging: verbose scan output
sudo vgscan -v
sudo lvscan -v

Conclusion

For disk-full errors: df -h then du --max-depth=1 to drill down. For I/O errors: check dmesg and smartctl -a — reallocated sectors mean replace the disk soon. For slow I/O: iostat -xd to identify the device, then iotop -o to identify the process. For file system corruption: unmount and run fsck -y (ext4) or xfs_repair (XFS). For LVM issues: start with vgchange -ay to ensure volume groups are activated, then pvs/vgs/lvs to see the current state.

Need help with Ubuntu administration?

Work directly with Muhammad Irfan Aslam for Ubuntu Server, Linux, cloud, Docker, DevOps, CI/CD, or infrastructure troubleshooting support.

Work with Muhammad Irfan Aslam