Administration
  Home arrow Administration arrow Page 4 - Advanced Concepts on Dealing with Files and Filesystems in BSD
Dev Shed Forums  
Administration  
AJAX  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Smartphone Development  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Mobile Linux  
App Generation ROI  
IBM® developerWorks  
Forums Sitemap  
E-Commerce Hosting  
Linux Web Hosting  
Managed Hosting  
Small Business Hosting  
VPS Hosting  
Weekly Newsletter

 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid  
Request Media Kit
Contact Us  
Site Map  
Privacy Policy  
Support  
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
Google.com  
ADMINISTRATION

Advanced Concepts on Dealing with Files and Filesystems in BSD
By: O'Reilly Media
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: starstarstarstarstar / 7
    2007-01-04


    Table of Contents:
  • Advanced Concepts on Dealing with Files and Filesystems in BSD
  • HACK#19: Access Windows Shares Without a Server
  • HACK#20: Deal with Disk Hogs
  • HACK#21: Manage Temporary Files and Swap Space
  • HACK#22: Recreate a Directory Structure Using mtree
  • HACK#23: Ghosting Systems

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      error-file:tidyout.log Del.ici.ous error-file:tidyout.log Digg
      error-file:tidyout.log Blink error-file:tidyout.log Simpy
      error-file:tidyout.log Google error-file:tidyout.log Spurl
      error-file:tidyout.log Y! MyWeb error-file:tidyout.log Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article

     
     
    ADVERTISEMENT


    Advanced Concepts on Dealing with Files and Filesystems in BSD - HACK#21: Manage Temporary Files and Swap Space
    ( Page 4 of 6 )

    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 tuning has 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

    Filesystem

    Size

    Used

    Avil

    Capacity

    Mounted on

    /dev/ad0s1e

    252M

    614K

     231M

        0%

    /tmp

    Here I searched /etc/fsta b 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:

      clear_tmp_enable="YES"

    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 contains device md (or mem ory disk). The GENERIC kernel does; if you've customized your kernel, double-check that you still have md support:

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

    Changing the /tm p 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

    Filesystem

    Size

    Used

    Avail

    Capacity

    Mounted on

    /dev/md0

     63M

    8.OK

      58M

        0%

    /tmp

    Notice that the filesystem is now md0 , the first memory disk, instead of ad0s1e , 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 swap s 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

    Device

    1K-blocks

    Used

    Avail

    Capacity

    Type

    /dev/ad0s1b

    639688

      68

    639620

        0%

    Interleaved

     

    Note that the swapinfo command displays the size of your swap files. If you prefer to see that output in MB, try the swapctl command with the -lh flags (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 use dd 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't mount 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:

      swapfile="/usr/swap0"

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

      # 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 1 must match the name of the memory disk /dev/md1. Since this system already has /tm p mounted on /dev/md0, I chose to mount swap on /dev/md1. && swapon tells the system to enable that swap device, but only if the mdconfig 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, use systat to 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 is rd and its configuration tool is rdconfig . 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 Administration Articles          >>> More By O'Reilly Media
     

       

    ADMINISTRATION ARTICLES

    - Network Booting via PXE: the Basics
    - Scalix: Linux Administrator`s Guide
    - Network Administration with FreeBSD 7
    - Components of an Information Architecture
    - The Anatomy of an Information Architecture
    - Configuring Load-Balanced Clusters
    - Load-Balanced Clusters
    - UNIX Time Format Demystified
    - Making Changes in the CVS
    - Building Your First CVS Repository
    - CVS Quickstart Guide
    - Authorizing Users in Samba
    - Handling User Accounts in Samba
    - Authentication in Samba
    - Accounts, Authentication, and Authorization





    © 2003-2009 by Developer Shed. All rights reserved. DS Cluster 1 Hosted by Hostway
    For more Enterprise Application Development news, visit eWeek