Handbuch:PPC64/Blöcke/Festplatten
Partitions and slices
Although it is theoretically possible to use a full disk to house a Linux system, this is almost never done in practice. Instead, full disk block devices are split up in smaller, more manageable block devices. On most systems, these are called partitions. Other architectures use a similar technique, called slices.
Designing a partition scheme
How many partitions and how big?
The design of disk partition layout is highly dependent on the demands of the system and the file system(s) applied to the device. If there are lots of users, then it is advised to have /home on a separate partition which will increase security and make backups and other types of maintenance easier. If Gentoo is being installed to perform as a mail server, then /var should be a separate partition as all mails are stored inside the /var directory. Game servers may have a separate /opt partition since most gaming server software is installed therein. The reason for these recommendations is similar to the /home directory: security, backups, and maintenance.
In most situations on Gentoo, /usr and /var should be kept relatively large in size. /usr hosts the majority of applications available on the system and the Linux kernel sources (under /usr/src). By default, /var hosts the Gentoo ebuild repository (located at /var/db/repos/gentoo) which, depending on the file system, generally consumes around 650 MiB of disk space. This space estimate excludes the /var/cache/distfiles and /var/cache/binpkgs directories, which will gradually fill with source files and (optionally) binary packages respectively as they are added to the system.
How many partitions and how big very much depends on considering the trade-offs and choosing the best option for the circumstance. Separate partitions or volumes have the following advantages:
- Choose the best performing filesystem for each partition or volume.
- The entire system cannot run out of free space if one defunct tool is continuously writing files to a partition or volume.
- If necessary, file system checks are reduced in time, as multiple checks can be done in parallel (although this advantage is realized more with multiple disks than it is with multiple partitions).
- Security can be enhanced by mounting some partitions or volumes read-only,
nosuid
(setuid bits are ignored),noexec
(executable bits are ignored), etc.
However, multiple partitions have certain disadvantages as well:
- If not configured properly, the system might have lots of free space on one partition and little free space on another.
- A separate partition for /usr/ may require the administrator to boot with an initramfs to mount the partition before other boot scripts start. Since the generation and maintenance of an initramfs is beyond the scope of this handbook, we recommend that newcomers do not use a separate partition for /usr/.
- There is also a 15-partition limit for SCSI and SATA unless the disk uses GPT labels.
Installations that intend to use systemd as the service and init system must have the /usr directory available at boot, either as part of the root filesystem or mounted via an initramfs.
What about swap space?
RAM size | Suspend support? | Hibernation support? |
---|---|---|
2 GB or less | 2 * RAM | 3 * RAM |
2 to 8 GB | RAM amount | 2 * RAM |
8 to 64 GB | 8 GB minimum, 16 maximum | 1.5 * RAM |
64 GB or greater | 8 GB minimum | Hibernation not recommended! Hibernation is not recommended for systems with very large amounts of memory. While possible, the entire contents of memory must be written to disk in order to successfully hibernate. Writing tens of gigabytes (or worse!) out to disk can can take a considerable amount of time, especially when rotational disks are used. It is best to suspend in this scenario. |
There is no perfect value for swap space size. The purpose of the space is to provide disk storage to the kernel when internal dynamic memory (RAM) is under pressure. A swap space allows for the kernel to move memory pages that are not likely to be accessed soon to disk (swap or page-out), which will free memory in RAM for the current task. Of course, if the pages swapped to disk are suddenly needed, they will need to be put back in memory (page-in) which will take considerably longer than reading from RAM (as disks are very slow compared to internal memory).
When a system is not going to run memory intensive applications or has lots of RAM available, then it probably does not need much swap space. However do note in case of hibernation that swap space is used to store the entire contents of memory (likely on desktop and laptop systems rather than on server systems). If the system requires support for hibernation, then swap space larger than or equal to the amount of memory is necessary.
As a general rule for RAM amounts less than 4 GB, the swap space size is recommended to be twice the internal memory (RAM). For systems with multiple hard disks, it is wise to create one swap partition on each disk so that they can be utilized for parallel read/write operations. The faster a disk can swap, the faster the system will run when data in swap space must be accessed. When choosing between rotational and solid state disks, it is better for performance to put swap on the solid state hardware.
It is worth noting that swap files can be used as an alternative to swap partitions; this is mostly helpful for systems with very limited disk space.
Default: Using mac-fdisk
These instructions are for the Apple G5 system.
Partition | Description |
---|---|
/dev/sda1 | Apple partition map, automatically created when the disk is formatted with a "mac" partition table. |
/dev/sda2 | New World boot block |
/dev/sda3 | Swap partition |
/dev/sda4 | Root partition |
Start mac-fdisk:
root #
mac-fdisk /dev/sda
First delete the partitions that have been cleared previously to make room for Linux partitions. Use the d key in mac-fdisk to delete those partition(s). It will ask for the partition number to delete.
Second, create an Apple_Bootstrap partition by pressing the b key. It will ask for a block from which to start. Enter the number of the first free partition, followed by entering a p. For instance this is 2p.
This partition is not a "boot" partition. It is not used by Linux at all; there is no need to place any filesystem on it and it should never be mounted. PPC users do not need an extra partition for /boot.
Now create a swap partition by pressing the c key. Again mac-fdisk will ask what block to start from. As we used 2 before to create the Apple_Bootstrap partition, enter 3p. When asked for the size, enter 512M (or whatever size needed). When asked for a name, enter swap (mandatory).
To create the root partition, enter c, followed by 4p to select from what block the root partition should start. When asked for the size, enter 4p again. mac-fdisk will interpret this as "Use all available space". When asked for the name, enter root (mandatory).
To finish up, write the partition to the disk using w and q to quit mac-fdisk.
To make sure everything is okay, run mac-fdisk once more to verify all the partitions are present. If a partition is absent, or it is missing some of the changes that were made, then reinitialize the partitions by pressing i in mac-fdisk. Note that this will recreate the partition map and thus remove all the partitions.
Alternative: Using fdisk
The following instructions are for IBM pSeries, iSeries, and OpenPower systems.
When planning to use a RAID disk array for the Gentoo installation on POWER5-based hardware, first run iprconfig to format the disks to Advanced Function format and create the disk array. Emerge sys-fs/iprutils after the installation is complete.
If the system has an ipr-based SCSI adapter, start the ipr utilities now.
root #
/etc/init.d/iprinit start
The following parts explain how to create the example partition layout described previously, namely:
Partition | Description |
---|---|
/dev/sda1 | PPC PReP Boot partition |
/dev/sda2 | Swap partition |
/dev/sda3 | Root partition |
Change or modify the partition layout according to personal preference.
Viewing current partition layout
fdisk is a popular and powerful tool to split a disk into partitions. Fire up fdisk on the current disk (in our example, we use /dev/sda):
root #
fdisk /dev/sda
Command (m for help)
If there is still an AIX partition layout on the system, then the following error message will be displayed:
root #
fdisk /dev/sda
There is a valid AIX label on this disk. Unfortunately Linux cannot handle these disks at the moment. Nevertheless some advice: 1. fdisk will destroy its contents on write. 2. Be sure that this disk is NOT a still vital part of a volume group. (Otherwise you may erase the other disks as well, if unmirrored.) 3. Before deleting this physical volume be sure to remove the disk logically from your AIX machine. (Otherwise you become an AIXpert).
Don't worry, new empty DOS partition table can be created by pressing o.
This will destroy any installed AIX version!
Type p to display the disk current partition configuration:
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/sda1 1 12 53266+ 83 Linux /dev/sda2 13 233 981571+ 82 Linux swap /dev/sda3 234 674 1958701+ 83 Linux /dev/sda4 675 6761 27035410+ 5 Extended /dev/sda5 675 2874 9771268+ 83 Linux /dev/sda6 2875 2919 199836 83 Linux /dev/sda7 2920 3008 395262 83 Linux /dev/sda8 3009 6761 16668918 83 Linux
This particular disk is configured to house six Linux filesystems (each with a corresponding partition listed as "Linux") as well as a swap partition (listed as "Linux swap").
Removing all partitions
First remove all existing partitions from the disk. Type d to delete a partition. For instance, to delete an existing /dev/sda1:
Command (m for help):
d
Partition number (1-4): 1
The partition has been scheduled for deletion. It will no longer show up when typing p, but it will not be erased until the changes have been saved. If a mistake was made and the session needs to be aborted, then type q immediately and hit Enter and none of the partitions will be deleted or modified.
Now, assuming that indeed all partitions need to be wiped out, repeatedly type p to print out a partition listing and then type d and the number of the partition to delete it. Eventually, the partition table will show no more partitions:
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System
Now that the in-memory partition table is empty, let's create the partitions. We will use a default partitioning scheme as discussed previously. Of course, don't follow these instructions to the letter but adjust to personal preference.
Creating the PPC PReP boot partition
First create a small PReP boot partition. Type n to create a new partition, then p to select a primary partition, followed by 1 to select the first primary partition. When prompted for the first cylinder, hit Enter. When prompted for the last cylinder, type +7M to create a partition 7 MB in size. After this, type t to set the partition type, 1 to select the partition just created and then type in 41 to set the partition type to "PPC PReP Boot". Finally, mark the PReP partition as bootable.
The PReP partition has to be smaller than 8 MB!
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-6761, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-6761, default 6761): +8M
Command (m for help):
t
Selected partition 1 Hex code (type L to list codes): 41 Changed system type of partition 1 to 41 (PPC PReP Boot)
Command (m for help):
a
Partition number (1-4): 1 Command (m for help):
Now, when looking at the partition table again (through p), the following partition information should be shown:
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 3 13293 41 PPC PReP Boot
Creating the swap partition
Now create the swap partition. To do this, type n to create a new partition, then p to tell fdisk to create a primary partition. Then type 2 to create the second primary partition, /dev/sda2 in our case. When prompted for the first cylinder, hit Enter. When prompted for the last cylinder, type +512M to create a partition 512MB in size. After this, type t to set the partition type, 2 to select the partition just created and then type in 82 to set the partition type to "Linux Swap". After completing these steps, typing p should display a partition table that looks similar to this:
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/sda1 1 3 13293 41 PPC PReP Boot /dev/sda2 4 117 506331 82 Linux swap
Creating the root partition
Finally, create the root partition. To do this, type n to create a new partition, then p to tell fdisk to create a primary partition. Then type 3 to create the third primary partition, /dev/sda3 in our case. When prompted for the first cylinder, hit Enter. When prompted for the last cylinder, hit enter to create a partition that takes up the rest of the remaining space on the disk. After completing these steps, typing p should display a partition table that looks similar to this:
Command (m for help):
p
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/sda1 1 3 13293 41 PPC PReP Boot /dev/sda2 4 117 506331 82 Linux swap /dev/sda3 118 6761 29509326 83 Linux
Saving the partition layout
To save the partition layout and exit fdisk, type w.
Command (m for help):
w