Scrounging for Disk Space
Server disks are getting larger all of the time, but
this simple fact doesn't seem to be making much of a
difference in the system administrator's day-to-day
routine. OUr disks are still filling up faster than
most of us can trim them down. So, when we just need
to free up a chunk of disk space in a hurry on some
particular file system, what should we do?
Finding a chunk of disk space that we can potentially
move from one partition to another in order to create
needed space sounds easy enough, but is a relatively
tedious task. There are no obvious tools or commands
to identify candidate files or directories quickly and
easily. Aside from tracking down core files and large
temporary files (files that we can generally identify
by name), there's no easy way to find a file or group
of files that can be moved or removed in a pinch.
Let's look at some tricks that might make the task a
little easier.
Finding Large Files
To find large files within a particular partition, we
can always use a command like this:
find / -mount -type f -size +10000 -ls
This command will look through the root partition (but
NOT other partitions) for files larger than 5 MB or so,
the 10000 in this command representing the file size in
512-byte blocks and the "+" indicating "larger than".
The "mount" argument in this command keeps this find
command from searching through all other mounted
partitions for candidates while the "-type f" clause
keeps the command from reporting on anything other than
regular files.
Similar commands can be constructed to find large files
in other file systems. Here's one looking in /opt for
files larger than half a gigabyte that has found two 1
GB files:
# find /opt -mount -type f -size +1000000 -ls 177 1049096 -rw------t 1 root other 1073741824 Oct 7 16:05 /opt/swapfile 178 1049096 -rw------t 1 root other 1073741824 Oct 7 16:08 /opt/swapfile2
NOTE: In this example, the located files appear to be
swap files. We can determine if they are in current use
as swap with a "swap -l" command.
Finding Large Directories
If we don't find an adequate number of large files that
we can move or remove from the target file system, we
might be able to find a directory that, moved intact, will
create the needed space. Candidate directories are
trickier, though, because we need to determine their size
based on their contents, not on the size of the directory
files themselves. Sure, we can use a combination of find
and "du -sk", but exactly how to put these commands
together to create useful output presents something of
a challenge -- and one that I've found myself having to
address several times a year.
Instead of coming up with an ad hoc command for finding
candidate directories on as as needed basis, let's
examine a Perl script that solves the problem once and
for all. This script uses a find command that is similar
to those shown above, but adds a "du -sk" command to
compute the size of each directory and then a selection
process based on this size
Win an Amazon Kindle!
This month's giveaway gadget - Amazon's Kindle - will keep you entertained on the long trip home to visit family and friends over the holidays. Enter the drawing now!
Applied Security Visualization
By Raffael Marty
Published by Addison-Wesley Professional
Learn more!

IT Manager's Handbook
By Bill Holtsnider and Brian D. Jaffe
Published by Morgan Kaufmann
Learn more!

Windows Vista Resource Kit
By Mitch Tulloch, Tony Northrup, and Jerry Honeycutt
Published by Microsoft Press
Learn more!








