This appendix is not necessarily applicable to non-x86-based architectures. However, the general concepts mentioned here may apply.
A.1. Hard Disk Basic Concepts
Hard disks perform a very simple function — they store data and reliably retrieve it on command.
When discussing issues such as disk partitioning, it is important to know a bit about the underlying hardware. Unfortunately, it is easy to become bogged down in details. Therefore, this appendix uses a simplified diagram of a disk drive to help explain what is really happening when a disk drive is partitioned. Figure A.1, “An Unused Disk Drive”
, shows a brand-new, unused disk drive.
Figure A.1. An Unused Disk Drive
Not much to look at, is it? But if we are talking about disk drives on a basic level, it is adequate. Say that we would like to store some data on this drive. As things stand now, it will not work. There is something we need to do first.
A.1.1. It is Not What You Write, it is How You Write It
Experienced computer users probably got this one on the first try. We need to format the drive. Formatting (usually known as "making a file system") writes information to the drive, creating order out of the empty space in an unformatted drive.
Figure A.2. Disk Drive with a File System
A small percentage of the drive's available space is used to store file system-related data and can be considered as overhead.
A file system splits the remaining space into small, consistently-sized segments. For Linux, these segments are known as blocks.
Given that file systems make things like directories and files possible, these trade-offs are usually seen as a small price to pay.
It is also worth noting that there is no single, universal file system. As Figure A.3, “Disk Drive with a Different File System”
, shows, a disk drive may have one of many different file systems written on it. As you might guess, different file systems tend to be incompatible; that is, an operating system that supports one file system (or a handful of related file system types) may not support another. This last statement is not a hard-and-fast rule, however. For example, Red Hat Enterprise Linux supports a wide variety of file systems (including many commonly used by other operating systems), making data interchange between different file systems easy.
Figure A.3. Disk Drive with a Different File System
Of course, writing a file system to disk is only the beginning. The goal of this process is to actually store and retrieve data. Let us take a look at our drive after some files have been written to it.
Figure A.4. Disk Drive with Data Written to It
As Figure A.4, “Disk Drive with Data Written to It”
, shows, some of the previously-empty blocks are now holding data. However, by just looking at this picture, we cannot determine exactly how many files reside on this drive. There may only be one file or many, as all files use at least one block and some files use multiple blocks. Another important point to note is that the used blocks do not have to form a contiguous region; used and unused blocks may be interspersed. This is known as fragmentation
. Fragmentation can play a part when attempting to resize an existing partition.
As with most computer-related technologies, disk drives changed over time after their introduction. In particular, they got bigger. Not larger in physical size, but bigger in their capacity to store information. And, this additional capacity drove a fundamental change in the way disk drives were used.
A.1.2. Partitions: Turning One Drive Into Many
Disk drives can be divided into partitions. Each partition can be accessed as if it was a separate disk. This is done through the addition of a partition table.
There are several reasons for allocating disk space into separate disk partitions, for example:
Logical separation of the operating system data from the user data
Ability to use different file systems
Ability to run multiple operating systems on one machine
While the diagrams in this chapter show the partition table as being separate from the actual disk drive, this is not entirely accurate. In reality, the partition table is stored at the very start of the disk, before any file system or user data. But for clarity, they are separate in our diagrams.
Figure A.5. Disk Drive with Partition Table
As Figure A.5, “Disk Drive with Partition Table”
shows, the partition table is divided into four sections or four primary
partitions. A primary partition is a partition on a hard drive that can contain only one logical drive (or section). Each section can hold the information necessary to define a single partition, meaning that the partition table can define no more than four partitions.
Each partition table entry contains several important characteristics of the partition:
Let us take a closer look at each of these characteristics. The starting and ending points actually define the partition's size and location on the disk. The "active" flag is used by some operating systems' boot loaders. In other words, the operating system in the partition that is marked "active" is booted.
The partition's type can be a bit confusing. The type is a number that identifies the partition's anticipated usage. If that statement sounds a bit vague, that is because the meaning of the partition type is a bit vague. Some operating systems use the partition type to denote a specific file system type, to flag the partition as being associated with a particular operating system, to indicate that the partition contains a bootable operating system, or some combination of the three.
Figure A.6. Disk Drive With Single Partition
In many cases, there is only a single partition spanning the entire disk, essentially duplicating the method used before partitions. The partition table has only one entry used, and it points to the start of the partition.
We have labeled this partition as being of the "DOS" type. Although it is only one of several possible partition types listed in Table A.1, “Partition Types”
, it is adequate for the purposes of this discussion.
Table A.1, “Partition Types”
, contains a listing of some popular (and obscure) partition types, along with their hexadecimal numeric values.
Table A.1. Partition Types
| Partition Type || Value || Partition Type || Value |
| Empty || 00 || Novell Netware 386 || 65 |
| DOS 12-bit FAT || 01 || PIC/IX || 75 |
| XENIX root || 02 || Old MINIX || 80 |
| XENIX usr || 03 || Linux/MINUX || 81 |
| DOS 16-bit <=32M || 04 || Linux swap || 82 |
| Extended || 05 || Linux native || 83 |
| DOS 16-bit >=32 || 06 || Linux extended || 85 |
| OS/2 HPFS || 07 || Amoeba || 93 |
| AIX || 08 || Amoeba BBT || 94 |
| AIX bootable || 09 || BSD/386 || a5 |
| OS/2 Boot Manager || 0a || OpenBSD || a6 |
| Win95 FAT32 || 0b || NEXTSTEP || a7 |
| Win95 FAT32 (LBA) || 0c || BSDI fs || b7 |
| Win95 FAT16 (LBA) || 0e || BSDI swap || b8 |
| Win95 Extended (LBA) || 0f || Syrinx || c7 |
| Venix 80286 || 40 || CP/M || db |
| Novell || 51 || DOS access || e1 |
| PReP Boot || 41 || DOS R/O || e3 |
| GNU HURD || 63 || DOS secondary || f2 |
| Novell Netware 286 || 64 || BBT || ff |
A.1.3. Partitions Within Partitions — An Overview of Extended Partitions
Of course, over time it became obvious that four partitions would not be enough. As disk drives continued to grow, it became more and more likely that a person could configure four reasonably-sized partitions and still have disk space left over. There needed to be some way of creating more partitions.
Enter the extended partition. As you may have noticed in Table A.1, “Partition Types”
, there is an "Extended" partition type. It is this partition type that is at the heart of extended partitions.
When a partition is created and its type is set to "Extended," an extended partition table is created. In essence, the extended partition is like a disk drive in its own right — it has a partition table that points to one or more partitions (now called logical partitions
, as opposed to the four primary partitions
) contained entirely within the extended partition itself. Figure A.7, “Disk Drive With Extended Partition”
, shows a disk drive with one primary partition and one extended partition containing two logical partitions (along with some unpartitioned free space).
Figure A.7. Disk Drive With Extended Partition
As this figure implies, there is a difference between primary and logical partitions — there can only be four primary partitions, but there is no fixed limit to the number of logical partitions that can exist. However, due to the way in which partitions are accessed in Linux, you should avoid defining more than 12 logical partitions on a single disk drive.
Now that we have discussed partitions in general, let us review how to use this knowledge to install Red Hat Enterprise Linux.
A.1.4. GUID Partition Table (GPT)
GUID Partition Table (GPT
) is a newer partitioning scheme based on using Globally Unique Identifiers (GUID
was developed to cope with limitations of the MBR
partition table, especially with the limited maximum addressable storage space of a disk. Unlike MBR
, which is unable to address storage space larger than 2.2 terabytes, GPT
can be used with hard disks larger than this; the maximum addressable disk size is 2.2 zettabytes. In addition, GPT
by default supports creating up to 128 primary partitions. This number could be extended by allocating more space to the partition table.
disks use logical block addressing (LBA) and the partition layout is as follows:
To preserve backward compatibility with MBR disks, the first sector (LBA
0) of GPT
is reserved for MBR
data and it is called “protective MBR”
The primary GPT header
begins on the second logical block (LBA
1) of the device. The header contains the disk GUID, the location of the primary partition table, the location of the secondary GPT header, and CRC32 checksums of itself and the primary partition table. It also specifies the number of partition entries of the table.
The primary GPT table
includes, by default, 128 partition entries, each with an entry size 128 bytes, its partition type GUID and unique partition GUID.
The secondary GPT table
is identical to the primary GPT
table. It is used mainly as a backup table for recovery in case the primary partition table is corrupted.
The secondary GPT header
is located on the last logical sector of the disk and it can be used to recover GPT
information in case the primary header is corrupted. It contains the disk GUID, the location of the secondary partition table and the primary GPT
header, CRC32 checksums of itself and the secondary partition table, and the number of possible partition entries.
There must be a BIOS boot partition for the boot loader to be installed successfully onto a disk that contains a GPT (GUID Partition Table). This includes disks initialized by Anaconda. If the disk already contains a BIOS boot partition, it can be reused.
A.1.5. Making Room For Red Hat Enterprise Linux
The following list presents some possible scenarios you may face when attempting to repartition your hard disk:
Unpartitioned free space is available
An unused partition is available
Free space in an actively used partition is available
Let us look at each scenario in order.
Keep in mind that the following illustrations are simplified in the interest of clarity and do not reflect the exact partition layout that you encounter when actually installing Red Hat Enterprise Linux.
A.1.5.1. Using Unpartitioned Free Space
Figure A.8. Disk Drive with Unpartitioned Free Space
If you think about it, an unused hard disk also falls into this category. The only difference is that all the space is not part of any defined partition.
In any case, you can create the necessary partitions from the unused space. Unfortunately, this scenario, although very simple, is not very likely (unless you have just purchased a new disk just for Red Hat Enterprise Linux). Most pre-installed operating systems are configured to take up all available space on a disk drive (refer to Section A.1.5.3, “Using Free Space from an Active Partition”
Next, we will discuss a slightly more common situation.
A.1.5.2. Using Space from an Unused Partition
In this case, maybe you have one or more partitions that you do not use any longer. Perhaps you have dabbled with another operating system in the past, and the partition(s) you dedicated to it never seem to be used anymore. Figure A.9, “Disk Drive With an Unused Partition”
, illustrates such a situation.
Figure A.9. Disk Drive With an Unused Partition
If you find yourself in this situation, you can use the space allocated to the unused partition. You first must delete the partition and then create the appropriate Linux partition(s) in its place. You can delete the unused partition and manually create new partitions during the installation process.
A.1.5.3. Using Free Space from an Active Partition
This is the most common situation. It is also, unfortunately, the hardest to handle. The main problem is that, even if you have enough free space, it is presently allocated to a partition that is already in use. If you purchased a computer with pre-installed software, the hard disk most likely has one massive partition holding the operating system and data.
Aside from adding a new hard drive to your system, you have two choices:
Basically, you delete the single large partition and create several smaller ones. As you might imagine, any data you had in the original partition is destroyed. This means that making a complete backup is necessary. For your own sake, make two backups, use verification (if available in your backup software), and try to read data from your backup before you delete the partition.
If there was an operating system of some type installed on that partition, it needs to be reinstalled as well. Be aware that some computers sold with pre-installed operating systems may not include the CD-ROM media to reinstall the original operating system. The best time to notice if this applies to your system is before you destroy your original partition and its operating system installation.
Figure A.10. Disk Drive Being Destructively Repartitioned
- Non-Destructive Repartitioning
Here, you run a program that does the seemingly impossible: it makes a big partition smaller without losing any of the files stored in that partition. Many people have found this method to be reliable and trouble-free. What software should you use to perform this feat? There are several disk management software products on the market. Do some research to find the one that is best for your situation.
While the process of non-destructive repartitioning is rather straightforward, there are a number of steps involved:
Next we will look at each step in a bit more detail.
A.220.127.116.11. Compress existing data
As Figure A.11, “Disk Drive Being Compressed”
, shows, the first step is to compress the data in your existing partition. The reason for doing this is to rearrange the data such that it maximizes the available free space at the "end" of the partition.
Figure A.11. Disk Drive Being Compressed
This step is crucial. Without it, the location of your data could prevent the partition from being resized to the extent desired. Note also that, for one reason or another, some data cannot be moved. If this is the case (and it severely restricts the size of your new partition(s)), you may be forced to destructively repartition your disk.
A.18.104.22.168. Resize the existing partition
Figure A.12, “Disk Drive with Partition Resized”
, shows the actual resizing process. While the actual result of the resizing operation varies depending on the software used, in most cases the newly freed space is used to create an unformatted partition of the same type as the original partition.
Figure A.12. Disk Drive with Partition Resized
It is important to understand what the resizing software you use does with the newly freed space, so that you can take the appropriate steps. In the case we have illustrated, it would be best to delete the new DOS partition and create the appropriate Linux partition(s).
A.22.214.171.124. Create new partition(s)
As the previous step implied, it may or may not be necessary to create new partitions. However, unless your resizing software is Linux-aware, it is likely that you must delete the partition that was created during the resizing process. Figure A.13, “Disk Drive with Final Partition Configuration”
, shows this being done.
Figure A.13. Disk Drive with Final Partition Configuration
The following information is specific to x86-based computers only.
As a convenience to our customers, we provide the
parted utility. This is a freely available program that can resize partitions.
If you decide to repartition your hard drive with
parted, it is important that you be familiar with disk storage and that you perform a backup of your computer data. You should make two copies of all the important data on your computer. These copies should be to removable media (such as tape, CD-ROM, or diskettes), and you should make sure they are readable before proceeding.
Should you decide to use
parted, be aware that after
parted runs you are left with two partitions: the one you resized, and the one
parted created out of the newly freed space. If your goal is to use that space to install Red Hat Enterprise Linux, you should delete the newly created partition, either by using the partitioning utility under your current operating system or while setting up partitions during installation.
A.1.6. Partition Naming Scheme
Linux refers to disk partitions using a combination of letters and numbers which may be confusing, particularly if you are used to the "C drive" way of referring to hard disks and their partitions. In the DOS/Windows world, partitions are named using the following method:
Each partition's type is checked to determine if it can be read by DOS/Windows.
If the partition's type is compatible, it is assigned a "drive letter." The drive letters start with a "C" and move on to the following letters, depending on the number of partitions to be labeled.
The drive letter can then be used to refer to that partition as well as the file system contained on that partition.
Red Hat Enterprise Linux uses a naming scheme that is more flexible and conveys more information than the approach used by other operating systems. The naming scheme is file-based, with file names in the form of
Here is how to decipher the partition naming scheme:
This is the name of the directory in which all device files reside. Since partitions reside on hard disks, and hard disks are devices, the files representing all possible partitions reside in
The first two letters of the partition name indicate the type of device on which the partition resides, usually either
hd (for IDE disks) or
sd (for SCSI disks).
This letter indicates which device the partition is on. For example,
/dev/hda (the first IDE hard disk) or
/dev/sdb (the second SCSI disk).
The final number denotes the partition. The first four (primary or extended) partitions are numbered
4. Logical partitions start at
5. So, for example,
/dev/hda3 is the third primary or extended partition on the first IDE hard disk, and
/dev/sdb6 is the second logical partition on the second SCSI hard disk.
There is no part of this naming convention that is based on partition type; unlike DOS/Windows, all partitions can be identified under Red Hat Enterprise Linux. Of course, this does not mean that Red Hat Enterprise Linux can access data on every type of partition, but in many cases it is possible to access data on a partition dedicated to another operating system.
Keep this information in mind; it makes things easier to understand when you are setting up the partitions Red Hat Enterprise Linux requires.
A.1.7. Disk Partitions and Other Operating Systems
If your Red Hat Enterprise Linux partitions are sharing a hard disk with partitions used by other operating systems, most of the time you will have no problems. However, there are certain combinations of Linux and other operating systems that require extra care.
A.1.8. Disk Partitions and Mount Points
One area that many people new to Linux find confusing is the matter of how partitions are used and accessed by the Linux operating system. In DOS/Windows, it is relatively simple: Each partition gets a "drive letter." You then use the correct drive letter to refer to files and directories on its corresponding partition.
This is entirely different from how Linux deals with partitions and, for that matter, with disk storage in general. The main difference is that each partition is used to form part of the storage necessary to support a single set of files and directories. This is done by associating a partition with a directory through a process known as mounting. Mounting a partition makes its storage available starting at the specified directory (known as a mount point).
For example, if partition
/dev/hda5 is mounted on
/usr/, that would mean that all files and directories under
/usr/ physically reside on
/dev/hda5. So the file
/usr/share/doc/FAQ/txt/Linux-FAQ would be stored on
/dev/hda5, while the file
/etc/gdm/custom.conf would not.
Continuing our example, it is also possible that one or more directories below
/usr/ would be mount points for other partitions. For instance, a partition (say,
/dev/hda7) could be mounted on
/usr/local/, meaning that
/usr/local/man/whatis would then reside on
/dev/hda7 rather than
A.1.9. How Many Partitions?
At this point in the process of preparing to install Red Hat Enterprise Linux, you must give some consideration to the number and size of the partitions to be used by your new operating system. The question of "how many partitions" continues to spark debate within the Linux community and, without any end to the debate in sight, it is safe to say that there are probably as many partition layouts as there are people debating the issue.
Keeping this in mind, we recommend that, unless you have a reason for doing otherwise, you should at least create the following partitions: