Key Concepts - UNIX Administration: Class 4
This class went into the general concepts of files systems, mounting disk partitions and NFS partitions.
A typical Linux installation will divide one or more hard drives into multiple partitions.
Each disk is given its own device name:
- /dev/hdX (X can range from a-z) is used for IDE disks.
- /dev/sdX (X can range from a-z) is used for SCSI disks
A partition number is added to the device name: /dev/hdXY (Y is the partition number) for IDE disks and /dev/sdXY (Y is the partition number) for SCSI disks. For example, the first partition on the first IDE drive on a system would be /dev/hda1.
Each physical disk partition has filesystem name associated with it. If you remember, during installation, we created a series of partitions and assigned each of them a file system name like /home, /var, /boot, /, /usr etc. You can view a partitions associated file system name by using the df command. Here is a sample output of a df command:
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 972M 670M 251M 73% /
/dev/hda4 2.6G 1.7G 774M 69% /usr
/dev/hda5 1.9G 32M 1.8G 2% /home
Note: the output above may differ depending on what UNIX distribution you are using
This shows us that the the disk partition for /dev/hda2 is associated with the / (root) filesystem, the partition /dev/hda4 is associated with the /usr file system and a the partition /dev/hda4 is associated with the /home partition.
You can create, modify and delete partitions using the powerful fdisk command. You launch fdisk by specifying a disk device name as an argument. For example, here to perform fdisk associated activities on hda, you would use fdisk /dev/hda. This example shows how to launch fdisk, print the menu and then print the partitions associated with a particular disk:
[root@doh /root]# fdisk hda
Unable to open hda
[root@doh /root]# fdisk /dev/hda
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 787 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 255 2048256 85 Linux extended
/dev/hda2 256 383 1028160 83 Linux
/dev/hda3 384 434 409657+ 82 Linux swap
/dev/hda4 435 787 2835472+ 83 Linux
/dev/hda5 1 255 2048224+ 83 Linux
This shows that we currently have 5 partitions on this hard drive - 4 Linux partitions and 1 Linux Swap partition.
After installing a new hard drive, you use the fdisk utility to partition the hard drive. The first 4 partitions on a hard drive are knows as the primary partitions. All other partitions are knows as extended partitions. You are required to specify a file system type for each partition by using the "t" option in fdisk, which allows you to specify a file system id number for the partition. The id number is 83 for a regular Linux partition and 82 for a Linux Swap Partition.
After partitioning a hard disk, you need to format it. You can do this by usuing the /sbin/mke2fs utility on all Linux system, which will format a partition into the Linux ext2 standard file system format. (there is also a generic /sbin/mkfs utility on all UNIX systems, including Linux, that allows you to specify the type of file system you want to create, in addition to many other options.)
Partitions are mounted at boot time by several rc scripts. The configuration file for mounting partitions at boot is /etc/fstab. This is where you specify what partitions to mount at boot time.
You can also mount file systems by hand using the mount command. Use the mount command in this format:
mount {options} device-name mount-point
where: device-name is the partition you want to mount (e.g. /dev/hda3) and mount-point is the location where you want to mount the partition; {options} can be a series of options that tell the system what type of file system you are mounting, whether to mount it in read-only mode, etc. For example, if you issue the following command:
mount –o rw –t ext2 /dev/hda10 /tmphome
The system will mount the /dev/hda10 partition as a read-write file system (specified by the "-o rw" switch). The files contained on /dev/hda10 can now be accessed under the /tmphome directory structure.
NFS is the facility that allows you to share your files with other UNIX system and mount directories and file systems from other UNIX systems.
You can mount and NFS volume just like you mount a hard disk partition. Using the mount command like this:
mount {options} host-or-IPaddress:/remote-filesystem mount-point
Therefore, issuing the following command:
mount 10.0.0.1:/home/chris /tmp/chris
will mount the /home/chris directory structure from the host at the ip address 10.0.0.1. The files will be accessible under the /tmp/chris directory structure.
If you want to share files with another computer, you need to add an entry to the /etc/exports file, which contains information about partitions that are sharable and hosts they can be shared with. Here is the format of the /etc/exports file:
/dir/to/export client1(permissions) client2 (permissions)
Sample entry:
/tmp 10.0.0.100(ro) 192.168.14.5(ro)
will allow the hosts 10.0.0.100 and 192.168.14.5 to access the /tmp file system on your system.
After editing the /etc/exports file, you need to run exportfs to inform NFS server process about changes to the file: /usr/sbin/exportfs –a will tell the system to export all entries in the system.