Mounting Drives in Linux

Man of Honour
Joined
18 Oct 2002
Posts
7,097
Mounting Drives in Linux
This is a basic guide briefly comparing and contrasting the linux file structure to the windows file structure and how to mount additional disks in linux.

The Linux File Structure
The linux file structure is very different to that of windows. The windows file structure can be described as 'many trees' where you'll have a 'tree' for each drive. In linux it's one big tree, where drives are nested within the tree. Example:

File_Structure.jpg


As you can see in the linux file structure the cdrom is 'nested' onto the directory 'cdrom'. This known as 'mounting' and the directory /mnt/cdrom is known as the 'mountpoint'. Again unlike windows, peripheral devices are also held within the linux 'tree' under the directory /dev.

The Mount Command
In order to mount a drive you must use the mount command:
Code:
mount -t $filesystem $device $mountpoint
Where:

$filesystem = filesystem type i.e ext2, reiser, vfat, ntfs etc.
$device = the device name under /dev i.e /dev/cdrom /dev/sda
$mountpoint = the directory where the device will be nested to i.e /mnt/cdrom

Learn by Example
If the peripheral device 'cdrom' was /dev/cdrom, was formatted in the ext2 filesystem and you wanted it to be accessed from the deirectory /mnt/cdrom you would mount it by
Code:
mount -t ext2 /dev/cdrom /mnt/cdrom
If you have a second hard drive whose device name was /dev/sda, was formatted in fat32 and wanted it to be accessed from the directory /mnt/external_drive you'll type
Code:
mount -t vfat /dev/sda[color=yellow]1[/color] /mnt/external_drive
The red 1 in /dev/sda1 refers to the partition number on the hard drive. If the drive has 3 primary partitions and you wanted to mount the second partition you'd use /dev/sda2. As you may have noticed the mountpoint can be anywhere in the file structure and be called anything you like as long as the directory exists.

Mounting in a Hurry
Typing the whole of the mounting syntax isn't always necessary as linux can often automatically detect files system this is especially the case with linux filesystem types, so it may be possible to just type
Code:
mount /dev/cdrom /mnt/cdrom
If the volume is often required, even this slightly shorter command might be too long. This is where the filesystem table (fstab) comes into the picture.

The /etc/fstab
The filesystem table file is found in /etc and holds a table of your partitions and it's filesystems. Heres what it looks like:
Code:
# <fs>                  <mountpoint>    <type>          <opts>                  <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/hda1               /boot           ext2            noauto,noatime          1 1
/dev/hda3               /               reiserfs        noatime,notail                  0 0
/dev/hda2               none            swap            sw                      0 0
/dev/hda4               /net            reiserfs        noatime,notail          0 0
/dev/hdc1               /net/ftp        reiserfs        noatime,notail          0 0
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro               0 0
proc                    /proc           proc            defaults                0 0
tmpfs                   /dev/shm        tmpfs           defaults                0 0
As you can see you have the device name on the left followed by the mount point, filesystem type and then two columns of options. If I regularly accessed the drive /dev/sda1 (as in the above example) I can add it to the table, with the relevent infomation into the relevent columns.
Code:
# <fs>                  <mountpoint>    <type>          <opts>                  <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/hda1               /boot           ext2            noauto,noatime          1 1
/dev/hda3               /               reiserfs        noatime,notail                  0 0
/dev/hda2               none            swap            sw                      0 0
/dev/hda4               /net            reiserfs        noatime,notail          0 0
/dev/hdc1               /net/ftp        reiserfs        noatime,notail          0 0
[color=yellow]/dev/sda1               /mnt/external_drive        vfat        user,umask=0          0 0[/color]
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro               0 0
proc                    /proc           proc            defaults                0 0
tmpfs                   /dev/shm        tmpfs           defaults                0 0
The advantage of adding the drives into fstab is that you can mount the volume simply by typing
Code:
mount $mountpoint
for example
Code:
mount /mnt/external_drive
will mount /dev/sda1 since linux is able to tell which device is 'linked' to that mountpoint from the fstab. Adding drives to the table also allows you to automatically mount the volumes during bootup as well as add desktop for mounting / unmounting the drive on your windows manager.
 
Last edited:
Back
Top Bottom