Filesystem fragmentation / performance

Kipp Hickman kipp at warp.esd.sgi.com
Fri Jul 6 02:45:28 AEST 1990


In article <9007031822.AA44957835 at pdi.UUCP>, shoshana at pdi.UUCP (Shoshana
Abrass) writes:
|>   1) Assuming the above is correct, which scheme does SGI use?
SGI wrote the EFS - "Extent File System".  It supports a notion of cylinder
groups, and unlike the bsd filesystem there is no small block/large block
bogosity.  The EFS tends not to fragment, but I personally don't know
why.

|>   2) In the AT&T system, if your use pattern was to create a lot of
|>      files - then remove them all - then make a bunch more - would you
|>      still see a gradual slowdown in performance? ie, if you didn't
|>      have files that increased in size over time?
The EFS should not have this pattern.  Disk space is allocated via a
bitmap, so the operation you describe should have no apparent slow down.
Also, the inode space is also managed as a bitmap, so it will not change
ordering either.

|>   3) Can aging slow the Berkeley fs and, if so, how can it be fixed?
The EFS will slow down over time, as fragmentation increases.  If you
are *really* experiencing this (you can write some simple i/o tests to
determine this), then back your disk up somewhere (*I* would use the
network - its more reliable) and clean your filesystems and reload your
software.  A "good" way to do this is to save all of your files on the
disk, then reload the installation software doing a "clean" in the process.
After thats done, reload your software from wherever.  Please note that
you should be very careful when doing this so that you don't lose any
of your data (like your passwd file, etc.).

Unless a filesystem has an automatic method for eliminating fragmentation,
all filesystems will degrade over time.  Each of the filesystems - AT&T, BSD,
and EFS, have different properties which trigger their fragmentation, but
they all do it.  The way that I personally operate is to do a clean install
every time a new release comes out.  I have a set of scripts that I run
after the install that repair the system - put back my password file, etc.

You will need to personalize this, but here is my copy of the script.
Also, this technique relys on having two disks - the first one I "donate"
to the software release, the second I use for my personal data.

--CUT--
#! /bin/sh

# show whats happening
set -x
umask 22

# install basic configuration files
cp /root/d/fixup/etc/X0.hosts /root/etc
cp /root/d/fixup/etc/exports /root/etc
cp /root/d/fixup/etc/fstab /root/etc
cp /root/d/fixup/etc/hosts /root/etc
cp /root/d/fixup/etc/passwd /root/etc
cp /root/d/fixup/etc/sys_id /root/etc
cp /root/d/fixup/etc/config/automount.options /root/etc/config

# enable yp
echo on > /root/etc/config/yp
echo esd.sgi.com > /root/usr/etc/yp/ypdomain

# make mail work
mkdir /root/usr/lib/uucp
touch /root/usr/lib/uucp/Systems
cat >> /root/usr/lib/aliases << EOF
root:postmaster
postmaster:kipp
EOF
chroot /root /bin/sh << EOF
mkdir /tmp
cp /d/fixup/GETmail /usr/sbin
domainname esd.sgi.com
/usr/sbin/GETmail
EOF

# fixup tty types & services
ed /root/etc/ttytype << EOF
/ttyd1/s/?v50am/vt100/
w
e /root/etc/services
g/^#sgi-/s/#//
w
q
EOF

# get back disk working and on line
if test ! -b /root/dev/d; then
    rm -f /root/dev/d
    ln /root/dev/dsk/dks0d2s7 /root/dev/d
fi
if test ! -c /root/dev/rd; then
    rm -f /root/dev/rd
    ln /root/dev/rdsk/dks0d2s7 /root/dev/rd
fi

# setup network mounts
mkdir /root/n
#for i in bonnie clyde flake newmedia ozone there; do
#    mkdir /root/n/$i
#done
#mkdir /root/n/bonnie/jake /root/n/bonnie/usr /root/n/flake/usr
#mkdir /root/n/clyde/aspen
ln -s /n/bonnie/jake /root/jake
#ln -s /n/clyde/aspen /root/aspen
#ln -s .. /root/n/warp
rm -rf /root/usr/local /root/usr/games /root/usr/catman/db
ln -s /n/warp/d/usr/local /root/usr/local
ln -s /n/warp/d/usr/games /root/usr/games
ln -s /n/warp/d/usr/catman/db /root/usr/catman/db

# create remote printers
mkdir /root/tmp
chroot /root /usr/sbin/mknetpr PostScript newmedia rio2
rm -rf /root/tmp

# ksh
cp /root/d/fixup/bin/ksh /root/bin

# links for using -me and -ms in psroff
#ln -s /n/there/usr/local/lib/tmac/tmac.s /root/usr/lib/tmac
#ln -s /n/there/usr/local/lib/tmac/tmac.e /root/usr/lib/tmac
#ln -s /n/there/usr/local/lib/ms /root/usr/lib
#ln -s /n/there/usr/local/lib/me /root/usr/lib

chroot /root /etc/chkconfig automount on

# Stuff for me
CRONTAB=/root/d/kipp/.crontab
if test -f $CRONTAB; then
    cp $CRONTAB /root/usr/spool/cron/crontabs/kipp
fi

# Install other packages
chroot /root /usr/local/bin/install.ui xrn
chroot /root /usr/local/bin/install.ui C++2.0
chroot /root /usr/local/bin/install.move move



More information about the Comp.sys.sgi mailing list