April 23, 2009

Understanding file system table{fstab}

Fstab is a configuration file that contains information of all the partitions and storage devices in your computer. The fstab file is located in /etc and is an important system configuration file. The fstab file tells Linux which filesystems to mount and how to mount them. Like the man page says, "it is the duty of the system administrator to properly create and maintain this file." How many times have you installed Linux only to find your Windows drive wasn't included or you installed a hard drive or optical drive and didn't know how to mount it properly? The fstab is where you describe the device, mount point, mount options, automounting, fsck options and many other options.

Typically when you plug in an external device that device will show up as a device in the special directory /dev. Most externally connected usb devices will show up as a variation of /dev/sda. But if you try to access that device through the /dev directory you’ll not be able. Instead you have to map the device to a regular, mountable directory so the device can be used. Without the fstab file only the root user would be able to do the mounting and the mount command would always be something like “mount /dev/sda2 /media/mp3. When the root user mounts a device in this way only the root user will have write access to the device. In the case of an mp3 player that means only the root user will be able to add music to the device. That’s where fstab helps out. You can create an fstab entry that will allow standard users to mount and unmount devices as well as write to those mounted devices.

Typical fstab entry

device mounting_directory filesystem_type options 0 0
/dev/sda2 / ext3 defaults 0 0

/dev/sda1 /boot ext3 defaults 0 0

/dev/sda3 swap swap defaults 0 0

First field

This is the device on your system that you want to mount. For example, if you have a hard drive partition on /dev/hda1 that would be the device, or the first entry in your fstab file. You could also have a cd-rom drive on /dev/hdb1 and it's the same field. For example, each system drive gets its own entry and this is the first field on that fstab line.

Second field

This is the mount point on your Linux system where you want to mount the device. For example, if you have a cd-rom and you want it to be mounted on /mnt/cdrecorder, this is where you put the path /mnt/cdrecorder. If you add another hard drive to your system for just backups, you could specify this entry to be /mnt/backups or just /backups if you want. Make sure this directory already exists before you try to mount a device here. If it doesn't exist, simply create it with mkdir.

Third field

This field describes the type of the filesystem this device uses. We can have several options for this field and not all options may be supported by your current kernel. To check which filesystems are supported by your kernel, cat the /proc/filesystems file. The possible options you can use here are: autofs, devpts, ext, ext2, ext3, iso9660, , nfs, ntfs, proc, reiserfs, tmpfs, vfat, xfs, . Like I said before, not all of these may be supported by your kernel. The most common options seen in the fstab file are ntfs for your Windows NT, 2000 and XP partitions, iso9660 for cd-rom drives, and ext, ext2, ext3, reiserfs for your linux partitions. If you're not sure which filesystem the device uses, you can use the autofs option which will cause mount to analyze and try to determine the filesystem and mount it correctly. The autofs option will NOT cause your device to be "automatically" mounted. It just tells mount to guess the filesystem type.

The Fourth field

This field in fstab lists all the mount options for the device or partition. This is also the most confusing column in the fstab file, but knowing what some of the most common options mean, saves you from a big headache. Yes, there are many options available, but I'll take a look at the most widely used ones only. For more information, check out the man page of mount.

auto and noauto :With the auto option, the device will be mounted automatically (at bootup, just like I told you a bit earlier, or when you issue the mount -a command). auto is the default option. If you don't want the device to be mounted automatically, use the noauto option in /etc/fstab. With noauto, the device can be mounted only explicitly.

user and nouser :These are very useful options. The user option allows normal users to mount the device, whereas nouser lets only the root to mount the device. nouser is the default, which is a major cause of headache for new Linux users. If you're not able to mount your cdrom, floppy, Windows partition, or something else as a normal user, add the user option into /etc/fstab.

exec and noexec :exec lets you execute binaries that are on that partition, whereas noexec doesn't let you do that. noexec might be useful for a partition that contains binaries you don't want to execute on your system, or that can't even be executed on your system. This might be the case of a Windows partition.

exec is the default option, which is a good thing. Imagine what would happen if you accidentally used the noexec option with your Linux root partition...

ro Mount the filesystem read-only.

rw Mount the filesystem read-write. Again, using this option might cure the headache of many new Linux users who are tearing their hair off because they can't write to their floppies, Windows partitions, or something else.

sync and async :How the input and output to the filesystem should be done. sync means it's done synchronously. If you look at the example fstab, you'll notice that this is the option used with the floppy. In plain English, this means that when you, for example, copy a file to the floppy, the changes are physically written to the floppy at the same time you issue the copy command.

However, if you have the async option in /etc/fstab, input and output is done asynchronously. Now when you copy a file to the floppy, the changes may be physically written to it long time after issuing the command. This isn't bad, and may sometimes be favorable, but can cause some nasty accidents: if you just remove the floppy without unmounting it first, the copied file may not physically exist on the floppy yet!

async is the default. However, it may be wise to use sync with the floppy, especially if you're used to the way it's done in Windows and have a tendency to remove floppies before unmounting them first.

defaults Uses the default options that are rw, suid, dev, exec, auto, nouser, and async.

The Fifth Field

This field in /etc/fstab is the dump option. Dump checks it and uses the number to decide if a filesystem should be backed up. If it's zero, dump will ignore that filesystem. If you take a look at the example fstab, you'll notice that the 5th column is zero in most cases.

The sixth field

This field is a fsck option. fsck looks at the number in the 6th column to determine in which order the filesystems should be checked. If it's zero, fsck won't check the filesystem.

No comments:

Post a Comment