Linux system errors

No Space Left

28
HighLinux System

Reviewed for reference consistency: August 11, 2026

the filesystem ran out of data blocks or of inodes

What 28 Means

The 28 error on the Linux system errors indicates no space left — the filesystem ran out of data blocks or of inodes. This typically occurs due to data blocks exhausted: the storage is genuinely full of file content.

Exit code 28 corresponds to ENOSPC, 'No space left on device'. The storage refused a write, and the interesting question is which table ran dry: the data blocks everyone checks first, or the inode table that allocates one entry per file regardless of size. A filesystem can be 90% empty by bytes and still out of inodes.

How to fix 28

General informational guidance, not professional advice. Commands can affect your system or data — back up first and proceed at your own risk. FixerCode is an independent reference, not affiliated with any vendor mentioned.

  1. Check block-level free space

    df -h shows consumed and free data blocks per filesystem, the first and most common form of ENOSPC.

    df -h
  2. Check inode-level free space

    df -i shows the inode tables; a filesystem at 100% IUseU% is out of file slots despite free bytes.

    df -i
  3. Find the largest consumers under a path

    A sized summary of a suspect tree shows which subdirectories hold the bulk, guiding cleanup before the next write failure.

    du -sh /var/log

Technical Background

ENOSPC has a second face that plain df does not show. The obvious failure — bytes exhausted — matches everyone's mental model. The quieter form is inode exhaustion: every file consumes one metadata entry from a table fixed at filesystem creation, so a directory of ten million empty files can stop all writes on a mostly empty volume.

The two failures need different inventories. Block exhaustion is found with the standard free-space view; inode exhaustion is found with its inode sibling. Misreading the first as the only form is why 'there is still space' confusion follows this errno around.

Quotas layer a third accounting on top: an identity's usage cap independent of both blocks and inodes physically remaining. On shared systems, the writer's own quota is often the binding constraint while every global number looks comfortable.

Common Causes

  • Data blocks exhausted: the storage is genuinely full of file content
  • Inode exhaustion: millions of small files consumed the metadata table while bytes remain free
  • A per-user or per-group quota reached while the filesystem itself still has room

Typical Scenarios

  • A log directory growing unchecked until writes start failing across the whole system
  • A mail store or build cache with millions of tiny files hitting the inode wall while df shows free space
  • A shared server where one account's quota is exhausted though the volume has gigabytes free

What to Know

Two checks cover the common ground: the block-level free view and the inode-level view of the same filesystem. When both show headroom, the per-identity quota report is the remaining table that could be full.

Frequently Asked Questions

Common questions about Linux 28 error

The most common reason is inode exhaustion: each file, however tiny, consumes one inode, and the inode table is sized at filesystem creation. df reports blocks; df -i reports inodes — the second number is the one that is empty.

Yes. Per-user and per-group quotas cap consumption independently of physical space, so one account can hit its cap while the volume holds free gigabytes. Quota reporting tools show the per-identity usage directly.

A memory-mapped file whose growth cannot allocate blocks ends up with mapped pages that have nothing to back them; the first touch of such a page raises SIGBUS. ENOSPC is the write-path symptom of the same full filesystem.

Related Error Codes

Related Errors From Other Categories

Similar error codes documented across different platforms and systems