Managing Storage in Red Hat Enterprise Linux 5
In This Chapter
- Understanding Partitioning
- Understanding LVM
- Understanding RAID
- Understanding Clustering and GFS
- Using Access Control Lists
- Using Disk Quotas
Managing storage is an important responsibility. The right solution works seamlessly with little gratitude. The wrong solution can lead to many headaches and late nights of trying to recover from failed file systems or inadequate storage allocation.
During installation, you are asked which partitioning method to use. You must choose to remove Linux partitions on selected drives and create the default layout, remove all partitions on selected drives and create the default layout, use free space on selected drives and create the default layout, or create a custom layout. If you choose to create the default layout, the Logical Volume Manager (LVM) is used to divide the hard drive, and then the necessary Linux mount points are created. Alternatively, if you choose custom layout, you can instead use software RAID or create partitions directly on the hard drives. Global File Systems (GFS) and clustering are two more storage solutions available with Red Hat Enterprise Linux.
This chapter explains these partitioning options so you can determine which is best for you and you can learn how to manage them. It also discusses how to use access control lists to limit access to filesystems as well as how to enforce disk usage limits known as quotas. Analyze how your company uses storage and decide which options are best for you.
LVM and RAID offer benefits such as resizing, striping, and combining multiple hard drives into logical physical devices. Sometimes it is necessary to just create partitions on the hard drives. Even when using RAID, partitions are created before the LVM or RAID layer is implemented.
To view a list of partitions on the system, use the fdisk -l command as root. As you can see from Listing 7.1, the output shows each partition along with its device name, whether it is a bootable partition, the starting cylinder, the ending cylinder, the number of blocks, the filesystem identification number used by fdisk, and the filesystem type.
Listing 7.1. Partitioning Scheme with Standard Partitions
Disk /dev/sda: 100.0 GB, 100030242816 bytes 255 heads, 63 sectors/track, 12161 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1147 9213246 83 Linux /dev/sda2 1148 4334 25599577+ 83 Linux /dev/sda3 4335 4399 522112+ 82 Linux swap / Solaris /dev/sda4 4400 12161 62348265 5 Extended /dev/sda5 4400 12161 62348233+ 83 Linux
If the system uses LVM or RAID, the fdisk -l output will reflect it. For example, Listing 7.2 shows the output for a system partitioned with LVM. There are fewer partitions shown because the logical volumes are inside the logical volume group. The first partition shown is the /boot partition because it can’t be inside a logical volume group.
Listing 7.2. Partitioning Scheme with LVM
Disk /dev/sda: 300.0 GB, 300090728448 bytes 255 heads, 63 sectors/track, 36483 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 13 104391 83 Linux /dev/sda2 14 36482 292937242+ 8e Linux LVM
During installation, the hard drives can be partitioned, given a filesystem type for formatting, and assigned a mount point as described in Chapter 1, “Installing Red Hat Enterprise Linux.” If hard drives are added to the system after installation or a hard drive has to be replaced, it is important to understand how to perform these functions post-installation.
A partition can be created from free space on a hard drive. You might need to create a partition if you add a new hard drive to the system, if you left unpartitioned space on the system during installation and want to partition it, or if you are using LVM and want to create the physical volumes on a partition instead of an entire raw device.
There are two partitioning utilities in Red Hat Enterprise Linux: parted and fdisk. The parted utility is used in this chapter because it includes a resize utility and is a bit more user-friendly. For more information on fdisk, refer to the man page with the man fdisk command.
As root, issue the parted command followed by the device name such as
You are now in an interactive parted shell, in which the commands executed manipulate the device specified. To view existing partitions from this interactive shell, type the print command at the (parted) prompt. The output should look similar to Listing 7.3. If you compare this output to the output in Listing 7.1 and Listing 7.2 from the fdisk -l command, you will see that the parted output is a little easier to read because it includes the size in user-friendly units such as megabytes and gigabytes instead of the beginning and ending cylinders from the fdisk -l output.
Listing 7.3. Partition Table from parted for Standard Partitions
Using /dev/hda (parted) print Disk geometry for /dev/hda: 0kB - 100GB Disk label type: msdos Number Start End Size Type File system Flags 1 32kB 9434MB 9434MB primary ext3 boot 2 9434MB 36GB 26GB primary ext3 3 36GB 36GB 535MB primary linux-swap 4 36GB 100GB 64GB extended 5 36GB 100GB 64GB logical ext3
Once again, the output will differ depending on the partitioning scheme being used. Listing 7.4 shows output from a system using LVM and can be compared to Listing 7.2, which shows the same output from fdisk -l.
Listing 7.4. Partition Table from parted for LVM
Disk /dev/sda: 300GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 107MB 107MB primary ext3 3 107MB 300GB 299.9GB primary lvm
To create a partition in parted, issue the following command at the interactive parted prompt:
mkpart <part-type> <fs-type> <start> <end>
<part-type> must be one of primary, logical, or extended. <fs-type> must be one of fat16, fat32, ext2, HFS, linux-swap, NTFS, reiserfs, or ufs. The <start> and <end> values should be given in megabytes and must be given as integers.
The ext3 filesystem is the default filesystem for Red Hat Enterprise Linux. It is the ext2 filesystem plus journaling. To create an ext3 filesystem, use ext2 as the <fs-type> and then use the -j option to mke2fs to make the filesystem ext3 as described in the next section.
After creating the partition, use the print command again to verify that the partition was created. Then type quit to exit parted.
Creating a Filesystem on a Partition
Next, create a filesystem on the partition. To create an ext3 filesystem (default used during installation), as root, execute the following, where <device> is the device name for the partition such as /dev/sda1:
mke2fs -j <device>
If the partition is to be a swap partition, format it with the following command as root:
Labeling the Partition
To label the partition, execute the following as root:
e2label <device> <label>
While labeling is not required, partition labels can be useful. For example, when adding the partition to /etc/fstab, the label can be listed instead of the partition device name. This proves useful if the partition number is changed from repartitioning the drive or if the partition is moved.
If the e2label command is used with just the partition device name as an argument, the current label for the partition is displayed.
Creating a Mount Point
Now that the partition is created and has a filesystem, as root, create a directory so it can be mounted:
Then, mount the new partition:
mount <device> <dir-name>
mount /dev/sda5 /tmp
Access the directory and make sure you can read and write to it.
Finally, add the partition to the /etc/fstab file so it is mounted automatically at boot time. For example:
LABEL=/tmp /tmp ext3 defaults 1 2
If a new swap partition is added, be sure to use swap as the filesystem type instead:
LABEL=swap2 swap swap defaults 0 0
The parted utility can also be used to resize a partition. After starting parted as root on the desired device, use the following command to resize a specific partition:
resize <minor-num> <start> <end>
To determine the <minor-num> for the partition, look at the partition table with the print command such as the output shown in Listing 7.3 and Listing 7.4. The <start> and <end> values should be the start and end points of the partition, in megabytes.
To use parted to remove a partition, start parted on the desired device as root, and issue the following command at the interactive prompt:
The minor number for the partition is displayed when you execute the print command to list partitions. The data on the partition will no longer be accessible after the partition is removed, so be sure to back up any data you want to keep before removing the partition.