Tag: troubleshooting

  • When is a disk space problem not a disk space problem?

    A co-worker setup an Ansible playbook to update some packges but it kept erroring out. The error that Ansible reported from “yum” was “No space left on device“. He had jumped onto the system and saw that this partition had plenty of space left so asked if I could look into it.

    I got on and confirmed that when I ran a simple “yum update” it showed this:

    [root@linux5237 ~]# echo n | yum update

    Loaded plugins: product-id, rhnplugin, search-disabled-repos, security, subscription-manager

    [Errno 28] No space left on device: ‘/var/run/rhsm/cert.pid’

    This system is receiving updates from RHN Classic or RHN Satellite.

    Could not create lock at /var/run/yum.pid: [Errno 28] No space left on device: ‘/var/run/yum.pid’

    Hmm, no disk space still. Looking at the “df /var” output looks good:

    [root@linux5237 ~]# df /var

    Filesystem           1K-blocks   Used Available Use% Mounted on

    /dev/mapper/rootvg-varlv

                           2514736 914948   1468716  39% /var

    Suspecting other resource issues I checked the inode availability using “df -i:

    [root@linux5237 ~]# df -i /var

    Filesystem           Inodes  IUsed IFree IUse% Mounted on

    /dev/mapper/rootvg-varlv

                         163840 163840     0  100% /var

    A ha! No inodes left. I’ll let you use your favorite search engine to look up details, but an easy way to think of “inodes” is as space on the first few pages of a book dedicated to being the “table of contents.” If you have a book with a few chapters, you only need a single page for the table of contents (the inodes). If you have a book with lots of chapters and sub-chapters, you might need a lot of pages (more inodes). By default Unix systems have a forumla on how much of the filesystem to dedicate to being “inodes” and how much is left for actual data storage. Usually this is fine for most systems.

    To find them we want to look for directories which have chewed up the 163K files:

    for i in /var/*; do echo $i; find $i |wc -l; done

    This pointed to the “/var/spool/app01/” directory – it has over 160K small files.  The owner of the system was able to clean up some old files there and the “yum update” worked as expected.

    It’s possible to override the inode settings when the filesystem is formatted, so if you know this ahead a time you can do this. If you run into this after the fact, the usual resolution is to backup the data, reformat the filesystem with more inodes allocated, then restore from backup.