Home arrow Site Administration arrow Page 4 - Advanced Concepts on Dealing with Files and Filesystems in BSD

HACK#21: Manage Temporary Files and Swap Space - Administration

In this conclusion to a two-part article, we continue our discussion of BSD commands and filesystems. It is excerpted from chapter two of the book BSD Hacks, written by Dru Lavigne (O'Reilly, 2005; ISBN: 0596006799). Copyright 2005 O'Reilly Media, Inc. All rights reserved. Used with permission from the publisher. Available from booksellers or direct from O'Reilly Media.

  1. Advanced Concepts on Dealing with Files and Filesystems in BSD
  2. HACK#19: Access Windows Shares Without a Server
  3. HACK#20: Deal with Disk Hogs
  4. HACK#21: Manage Temporary Files and Swap Space
  5. HACK#22: Recreate a Directory Structure Using mtree
  6. HACK#23: Ghosting Systems
By: O'Reilly Media
Rating: starstarstarstarstar / 8
January 04, 2007

print this article



Add more temporary or swap space without repartitioning.

When you install any operating system, it's important to allocate sufficient disk space to hold temporary and swap files. Ideally, you already know the optimum sizes for your system so you can partition your disk accordingly during the install. However, if your needs change or you wish to optimize your initial choices, your solution doesn't have to be as drastic as a repartitionand-- reinstall--of the system.

man tuninghas some practical advice for guesstimating the appropriate size of swap and your other partitions.

Clearing /tmp

Unless you specifically chose otherwise when you partitioned your disk, the installer created a /tmp filesystem for you:

  % grep tmp /etc/fstab
  /dev/ad0s1e   /tmp  ufs  rw  2  2 
% df -h /tmp






Mounted on







Here I searched /etc/fstab for the /tmp filesystem. This particular filesystem is 256 MB in size. Only a small portion contains temporary files.


The df (disk free) command will always show you a number lower than the actual partition size. This is because eight percent of the filesystem is reserved to prevent users from inadvertently overflowing a filesystem. See man tunefs for details.

It's always a good idea to clean out /tmp periodically so it doesn't overflow with temporary files. Consider taking advantage of the built-in periodic script /etc/periodic/daily/110.clean-tmps [Hack #20].

You can also clean out /tmp when the system reboots by adding this line to /etc/rc.conf:


Moving /tmp to RAM

Another option is to move /tmp off of your hard disk and into RAM. This has the built-in advantage of automatically clearing the filesystem when you reboot, since the contents of RAM are volatile. It also offers a performance boost, since RAM access time is much faster than disk access time.

Before moving /tmp, ensure you have enough RAM to support your desired /tmp size. This command will show the amount of installed RAM:

  % dmesg | grep memory
  real memory  = 335462400 (319 MB)
  avail memory = 320864256 (306 MB)

Also check that your kernel configuration file containsdevice md(or memory disk). TheGENERICkernel does; if you've customized your kernel, double-check that you still havemd support:

  % grep -w md /usr/src/sys/ i386/conf/CUSTOM
device         md     # Memory "disks"

Changing the /tmp line in /etc/fstab as follows will mount a 64 MB /tmp in RAM:

  md /tmp mfs rw,-s64m 2 0

Next, unmount /tmp (which is currently mounted on your hard drive) and remount it using the new entry in /etc/fstab:

  # umount /tmp
mount /tmp
# df -h /tmp






Mounted on







Notice that the filesystem is nowmd0, the first memory disk, instead ofad0s1e, a partition on the first IDE hard drive.

Creating a Swap File on Disk

Swap is different than /tmp. It's not a storage area for temporary files; instead, it is an area where the filesystem swaps data between RAM and disk. A sufficient swap size can greatly increase the performance of your filesystem. Also, if your system contains multiple drives, this swapping process will be much more efficient if each drive has its own swap partition.

The initial install created a swap filesystem for you:

  % grep swap /etc/fstab
  /dev/ad0s1b     none   swap   sw  0   0
  % swapinfo














Note that theswapinfocommand displays the size of your swap files. If you prefer to see that output in MB, try theswapctlcommand with the-lhflags (which make the listing more human):

  % swapctl -lh
Device:      1048576-blocks Used:   
  /dev/ad0s1b         624     0

To add a swap area, first determine which area of disk space to use. For example, you may want to place a 128 MB swapfile on /usr. You'll first need to usedd to create this as a file full of null (or zero) bytes. Here I'll create a 128 MB swapfile as /usr/swap0:

  # dd if=/dev/zero of=/usr/swap0 bs=1024k count=128
  128+0 records in
  128+0 records out
  134217728 bytes transferred in 4.405036 secs (30469156 bytes/sec)

Next, change the permissions on this file. Remember, you don't want users storing data here; this file is for the filesystem:

  # chmod 600 /usr/swap0

Since this is really a file on an existing filesystem, you can'tmount your swapfile in /etc/fstab. However, you can tell the system to find it at boot time by adding this line to /etc/rc.conf:


To start using the swapfile now without having to reboot the system, usemdconfig:

  # mdconfig -a -t vnode -f /usr/swap0 -u 1 && swapon /dev/md1

The -a flag attaches the memory disk. -t vnode marks that the type of swap is a file, not a filesystem. The -f flag sets the name of that file: /usr/swap0.

The unit number-u 1must match the name of the memory disk /dev/md1. Since this system already has /tmp mounted on /dev/md0, I chose to mount swap on /dev/md1.&& swapontells the system to enable that swap device, but only if themdconfig command succeeded.

swapctl should now show the new swap partition:

  % swapctl -lh
Device:        1048576-blocks   Used:
/dev/ad0s1b           624       0
/dev/md1              128       0

Monitoring Swap Changes

Whenever you make changes to swap or are considering increasing swap, usesystatto monitor how your swapfiles are being used in real time:

  % systat -swap

The output will show the names of your swap areas and how much of each is currently in use. It will also include a visual indicating what percentage of swap contains data.

OpenBSD Differences

You can make this hack work on OpenBSD, as long as you remember that the RAM disk device isrdand its configuration tool isrdconfig. Read the relevant manpages, and you'll be hacking away.

See Also

  • man tuning (practical advice on /tmp and swap)
  • man md
  • man mdconfig
  • man swapinfo
  • man swapctl
  • man systat
  • The BSD Handbook entry on adding swap (http://www.freebsd.org/doc/en_ US.ISO8859-1/books/handbook/adding-swap-space.html)

>>> More Site Administration Articles          >>> More By O'Reilly Media

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort


- Coding: Not Just for Developers
- To Support or Not Support IE?
- Administration: Networking OSX and Win 7
- DotNetNuke Gets Social
- Integrating MailChimp with Joomla: Creating ...
- Integrating MailChimp with Joomla: List Mana...
- Integrating MailChimp with Joomla: Building ...
- Integrating MailChimp with Joomla
- More Top WordPress Plugins for Social Media
- Optimizing Security: SSH Public Key Authenti...
- Patches and Rejects in Software Configuratio...
- Configuring a CVS Server
- Managing Code and Teams for Cross-Platform S...
- Software Configuration Management
- Back Up a Joomla Site with Akeeba Backup

Developer Shed Affiliates


Dev Shed Tutorial Topics: