Solaris Filesystem Troubleshooting
Filesystem corruption can be detected and often repaired by the
fsck commands. If the filesystem corruption is not
due to an improper system shutdown, the hard drive hardware may need to be
ufs filesystems contain the following types of blocks:
- boot block: This stores information used to boot the system.
- superblock: Much of the filesystems internal information is stored
- inode: Stores location information about a file--everything except
for the file name. The number of inodes in a filesystem can be changed from
the default if
newfs -i is used to create the filesystem.
- data block: The file's data is stored in these.
fsck command is run on each filesystem at boot time. This
utility checks the internal consistency of the filesystem, and can make simple
repairs on its own. More complex repairs require feedback from the root user,
either in terms of a "y" keyboard response to queries, or invocation with the
fsck cannot determine where a file belongs, the file may
be renamed to its inode number and placed in the filesystem's
lost+found directory. If a file is missing after a noisy
fsck session, it may still be intact in the
fsck command complains that it cannot find the
superblock. Alternative superblock locations were created by
newfs at the time that the filesystem was created. The
command can be invoked to nondestructively discover the superblock locations
for the filesystem.
ufs filesystems can carry "state flags" that have the value of fsclean, fsstable, fsactive
or fsbad (unknown). These can be used by
fsck during boot time to skip past
filesystems that are believed to be okay.
analyze option of
format can be used to examine the
hard drive for flaws in a nondestructive fashion.
df can be used to check a filesystem's available space. Of particular
df -kl, which checks available space for all local filesystems
and prints out the statistics in kilobytes. Solaris 10 also allows us to use
df -h, which presents the statistics in a more human-friendly
form that doesn't require counting digits to decide whether a file is 100M or
1G in size.
du can be used to check space used by a directory. In particular,
du -dsk will report useage in kilobytes of a directory and its
descendants, without including space totals from other filesystems.
Filesystem performance can be improved by looking at
filesystem caching issues.
The following tuning parameters may be valuable in tuning
filesystem performance with
- inode count: The default is based upon an assumption of
average file sizes of 2 KB. This can be set with
mkfs/newfs at the time of filesystem creation.
- time/space optimization: Optimization can be set to
allow for fastest performance or most efficient space useage.
- minfree: In Solaris 2.6+, this is set to
(64 MB / filesystem size) x 100. Filesystems in earlier OS
versions reserved 10%. This parameter specifies how much
space is to be left empty in order to preserve filesystem
- maxbpg: This is the maximum number of blocks a file can
leave in a single cylinder group. Increasing this limit can
improve large file performance, but may have a negative impact
on small file performance.
Filesystem Performance Monitoring
McDougall, Mauro and Gregg suggest that the best way to see
if I/O is a problem at all is to look at the amount of time
spent on POSIX
system calls via DTrace. If so,
we need to look at the raw disk I/O performance.