4.3 Objective 3: Control Filesystem
Mounting and Unmounting
As discussed in Objective 1, the Linux
directory hierarchy is usually made up of multiple partitions,
each joined to the root filesystem. Filesystems on removable
media, such as CD-ROMs, Zip disks, and floppy disks, are
joined in the same way, but usually on a temporary basis. Each
of these separate filesystems is mounted to the parent filesystem as a
directory (or mount point) in
the unified hierarchy.
Directories intended as mount points usually
don't contain files or other directories. Instead, they're
just empty directories created solely to mount a filesystem.
If a directory that already contains files is used as a mount
point, its files are obscured and unavailable until the
filesystem is unmounted. Typical mount points include the
directories /usr, /home, /var, and
others.
4.3.1 Managing the Filesystem
Table
Since the Linux filesystem hierarchy is
spread across separate partitions and/or multiple drives, it
is necessary to automatically mount those filesystems at boot
time. In addition, removable media and filesystems on remote
NFS servers may be used regularly with recurring mount
properties. All of this information is recorded in the
/etc/fstab file. Filesystems defined in this file are
checked and mounted when the system boots. Entries in this
file are consulted for default information when users wish to
mount removable media.
The /etc/fstab file (see Example
4-1) is plain text and consists of lines with six fields:
- Device
-
This field specifies the device file of the
partition holding the filesystem -- for example,
/dev/hda1. This field cannot contain a whole device,
such as /dev/hda.
- Mount point
-
This field specifies the directory upon
which the filesystem is to be mounted. For example, if
/dev/hda1 contains the root filesystem, it is mounted
at /. The root filesystem will contain additional
directories intended as mount points for other filesystems.
For example, /boot may be an empty directory intended
to mount the filesystem that contains kernel images and
other information required at boot time.
- Filesystem type
-
Next, the type of filesystem is specified.
These include some ext2 filesystems, as well as
swap, iso9660 (CD-ROM), and others.
- Mount options
-
This field contains a comma-separated list
of options. Some options are specific to particular
filesystem types. Options are described later in this
Objective.
- Dump frequency
-
The dump
program, a standard Unix backup utility, may consult
/etc/fstab for information on how often to dump each
filesystem. This field holds an integer, usually set to 1
for ext2 filesystems and to for others.
- Pass number for fsck
-
This field is used by the fsck utility when the -A option is specified, usually at
boot time. It is a flag that may contain only the values
0, 1, or 2.
-
A 0 instructs fsck not to check the filesystem.
-
A 1 should be entered for the root
filesystem and instructs fsck
to check that filesystem first.
-
A 2 instructs fsck to check corresponding
filesystems after those with a 1.
Example 4-1. Sample /etc/fstab
File /dev/sda1 / ext2 defaults 1 1
/dev/sda5 /boot ext2 defaults 1 2
/dev/sda9 /home ext2 defaults 1 2
/dev/sda6 /root ext2 defaults 1 2
/dev/sda10 /tmp ext2 defaults 1 2
/dev/sda8 /usr ext2 defaults 1 2
/dev/sda7 /var ext2 defaults 1 2
/dev/sda11 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto,users 0 0
/dev/hdc /mnt/cdrom iso9660 noauto,ro,users 0 0
/dev/hdd /mnt/zip vfat noauto,users 0 0
fs1:/share /fs1 nfs defaults 0 0
The fstab in Example
4-1 depicts a system with a single SCSI disk,
/dev/sda. The first partition, /dev/sda1,
contains an ext2 root filesystem. Partition
/dev/sda11 is swap. Partitions /dev/sda5 through
/dev/sda10 contain ext2 partitions for
/boot, /home, /root, /tmp,
/usr, and /var, respectively. All of the local
ext2 partitions are to be checked by fsck and dumped. Entries for the
floppy disk ( /dev/fd0), CD-ROM ( /dev/hdc), and
IDE Zip drive ( /dev/hdd ) hold appropriate mount
properties, making manual mounting of these devices simple.
Finally, this example shows a remote NFS mount of directory
/share of system fs1. It is mounted locally at
/fs1.
The /etc/fstab file is automatically
created when Linux is installed and is based on the
partitioning and mount point configuration specified. This
file can be changed at any time to add devices and options,
tailoring the filesystem to meet your specific needs.
You should memorize the functions of
each column in /etc/fstab and be prepared to
answer questions on each. |
4.3.2 Mounting Filesystems
Filesystems are mounted using the mount command. At boot time, those
filesystems with a nonzero pass number in /etc/fstab
are checked and automatically mounted. Later, you can run
mount manually to add other
filesystems to the filesystem hierarchy.
Syntaxmount [command_line_options] device
mount [command_line_options] directory
mount [command_line_options] device directory
Description
Used to mount filesystems onto the
filesystem hierarchy. The first and second forms consult
/etc/fstab and mount the filesystem located on
device or intended to be attached to directory,
respectively. In both cases, information necessary to complete
the mount operation is taken from /etc/fstab. The third
form is independent of /etc/fstab and mounts the
filesystem on device at mount point directory.
The mount
command accepts two kinds of options: command-line and mount. The
command-line options provide general direction for the mount command. The mount options, which are generally
alphanumeric words, word fragments, or abbreviations, are used
to specify additional information about the device being
mounted.
Command-line options
- -a
-
Mounts all of the partitions specified in
/etc/fstab, except those with the noauto option.
- -h
-
Displays help on the mount command.
- -o mount_options
-
Specifies mount options on the command
line.
- -r
-
Mounts the filesystem as
read-only.
- -t fstype
-
Specifies that the filesystem to be mounted
is of type fstype. This option is typically used
interactively, when no entry for the mount exists in
/etc/fstab.
- -v
-
Sets verbose mode.
- -w
-
Mounts the filesystem read/write
mode.
Mount options
A number of parameters are available as
options for mounting filesystems. These options may be
specified in /etc/fstab or as arguments of the -o command-line mount argument. These options modify
the way mount configures the
mounted filesystem. Some of the options can provide added
security by controlling some operations on the filesystem.
Others protect the filesystem from damage. Here is a partial
list:
- async
-
Establishes asynchronous I/O to the mounted
filesystem. The opposite is sync.
- auto
-
Enables a mount specification in
/etc/fstab to be processed with the -a command-line option, as needed at
boot time. The opposite is noauto.
- defaults
-
Implies rw, suid, dev,
exec, auto, nouser, and async.
It is commonly found on /etc/fstab entries for
ext2 mount points.
- dev
-
Interprets character or block special
devices on the filesystem.
- exec
-
Enables the execution of programs contained
on the mounted partition. The opposite is noexec.
- noauto
-
Prohibits automatic mounting with the -a option. This is usually
specified for removable media.
- noexec
-
Prohibits the execution of executable
programs, a potential security measure.
- nosuid
-
Prohibits the effect of suid or sgid bits on executable files.
- nouser
-
Forbids non-root users from mounting and
unmounting the filesystem. See user and users for the opposite effect.
- ro
-
Equivalent to specifying the command-line
option -r.
- rw
-
Equivalent to specifying the command-line
option -w.
- suid
-
Enables the effect of suid and sgid bits on executable files.
- sync
-
Establishes synchronous I/O to the mounted
filesystem. The opposite is async.
- user
-
Allows an ordinary user to mount the
filesystem but prohibits other ordinary users from
unmounting it. This is useful for removable media that an
individual requires control over. See also users.
- users
-
Allows any user to mount and unmount the
filesystem.
Note that the user and users options make the mount and umount commands available to
non-root users. This may be important for some systems where
end users must have the ability to mount removable media.
Filesystem types
Mount must be aware of the type of filesystem
it is mounting, which is specified with a single filesystem
type. This parameter may be
included on the command line using the -t option, or in the third field in
/etc/fstab. Linux can mount a variety of filesystems.
Here are some of the more popular ones:
- ext2
-
The standard Linux filesystem.
- msdos
-
The MS-DOS FAT filesystem, limited to "8.3"
filenames (eight characters, a dot, and a three-character
extension).
- vfat
-
Virtual FAT, used instead of msdos
when long filenames must be preserved. For example, you may
wish to have access to Windows partitions on systems
configured to boot both Linux and Windows.
- iso9660
-
The CD-ROM format, also the default
type.
- nfs
-
Remote servers.
- swap
-
Swap partitions.
- proc
-
This type represents the proc
filesystem, which is not really a filesystem at all. The
virtual files found in this virtual filesystem provide a
window into the kernel. It is usually mounted on
/proc.
Example 1
Display filesystems currently mounted on the
system: # mount
/dev/sda1 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/sda5 on /boot type ext2 (rw)
/dev/sda9 on /home type ext2 (rw)
/dev/sda6 on /root type ext2 (rw)
/dev/sda10 on /tmp type ext2 (rw)
/dev/sda8 on /usr type ext2 (rw)
/dev/sda7 on /var type ext2 (rw)
none on /dev/pts type devpts (rw,mode=0622)
/dev/hdd on /mnt/zip type vfat (rw,noexec,nosuid,nodev)
In this example, you can see that most of the
filesystems specified in the /etc/fstab from Example
4-1 are already mounted.
Example 2
Mount the IDE CD-ROM device found on
/dev/hdc to the existing directory /cdrom,
read-only of course: # mount -rt iso9660 /dev/hdc /cdrom
Note that without the -r option, you will receive a warning
but still get appropriate results: # mount -t iso9660 /dev/hdc /mnt/cdrom
mount: block device /dev/hdc is write-protected,
mounting read-only
Example 3
Mount an MS-DOS floppy in the first floppy
disk drive /dev/fd0 (A: in MS-DOS) to the
existing directory /floppy : # mount -t msdos /dev/fd0 /floppy
Example 4
The filesystems mounted at /home and
/opt have been unmounted for some kind of maintenance
and are now remounted using the -a option: # mount -av
mount: /dev/hda5 already mounted on /root
mount: /dev/hda9 already mounted on /usr
mount: /dev/hda7 already mounted on /var
mount: none already mounted on /proc
mount: none already mounted on /dev/pts
mount: 192.168.0.2:/ already mounted on /smp
/dev/hda10 on /home type ext2 (rw)
/dev/hda8 on /opt type ext2 (rw)
Note that mount should work silently without
the -v option. It also safely
skips filesystems that have been previously mounted.
4.3.3 Unmounting Filesystems
Filesystems can be unmounted using the umount command. When a filesystem is
unmounted, the buffers of the filesystem are synchronized with
the actual contents on disk and the filesystem is made
unavailable, freeing the mount point. If the filesystem is
busy, umount yields an error.
This will happen, for example, when the filesystem contains
open files or when a process has a working directory within
the filesystem. Other less obvious errors can occur when
removable media are exchanged without being unmounted first.
Syntaxumount [options] device
umount [options] directory
Description
Unmount the filesystem on device
or mounted on directory.
- -a
-
Unmounts all of the filesystems described
in /etc/mtab. This file is maintained by the mount and umount commands and contains an
up-to-date list of mounted filesystems. This option is
typically used at shutdown time.
- -t fstype
-
Unmounts only filesystems of type
fstype.
Example 1
Unmount the CD-ROM mounted on /dev/hdc
at /cdrom: # umount /cdrom
or: # umount /dev/hdc
Example 2
Unmount all NFS filesystems: # umount -at nfs
Be sure that you understand how to use
mount and mount points
and how /etc/fstab is used when mounting files.
|
|