Handbook:Parts/Installation/Disks

Block devices
Let's take a good look at disk-oriented aspects of Gentoo Linux and Linux in general, including Linux filesystems, partitions and block devices. Once the ins and outs of disks and filesystems are understood, we will set up partitions and filesystems for the Gentoo Linux installation.

To begin, let's look at block devices. The most famous block device is probably the one that represents the first drive in a Linux system, namely. SCSI and Serial ATA drives are both labeled ; even IDE drives are labeled with the new libata framework in the kernel. When using the old device framework, then the first IDE drive is.

The block devices above represent an abstract interface to the disk. User programs can use these block devices to interact with your disk without worrying about whether the drives are IDE, SCSI or something else. The program can simply address the storage on the disk as a bunch of contiguous, randomly-accessible 512-byte blocks.

Introduction
Now that the partitions are created, it is time to place a filesystem on them. In the next section the various file systems that Linux supports are described. Readers that already know which filesystem to use can continue with Applying a filesystem to a partition. The others should read on to learn about the available filesystems...

Filesystems
Several filesystems are available. Some of them are found stable on the architecture - it is advised to read up on the filesystems and their support state before selecting a more experimental one for important partitions.


 * btrfs
 * A newer filesystem with many advanced features such as copy-on-write (CoW), snapshotting, file level checksums, built-in compression, automatic defragmentation, subvolumes, and built-in RAID. Although growing in stability, btrfs is considered experimental. A few distributions have begun to ship it as an out-of-the-box option. Before selecting this filesystem it would be wise to read up on its capabilities: a significant amount of knowledge is required in order to use btrfs' advanced features. Unless comfortable with the thought of running an experimental system, potential users should avoid this excellent filesystem candidate.


 * ext2
 * This is the tried and true Linux filesystem but doesn't have metadata journaling, which means that routine ext2 filesystem checks at startup time can be quite time-consuming. There is now quite a selection of newer-generation journaled filesystems that can be checked for consistency very quickly and are thus generally preferred over their non-journaled counterparts. Journaled filesystems prevent long delays when the system is booted and the filesystem happens to be in an inconsistent state.


 * ext3
 * The journaled version of the ext2 filesystem, providing metadata journaling for fast recovery in addition to other enhanced journaling modes like full data and ordered data journaling. It uses an HTree index that enables high performance in almost all situations. In short, ext3 is a very good and reliable filesystem.


 * ext4
 * Initially created as a fork of ext3, ext4 brings new features, performance improvements, and removal of size limits with moderate changes to the on-disk format. It can span volumes up to 1 EB and with maximum file size of 16TB. Instead of the classic ext2/3 bitmap block allocation ext4 uses extents, which improve large file performance and reduce fragmentation. Ext4 also provides more sophisticated block allocation algorithms (delayed allocation and multiblock allocation) giving the filesystem driver more ways to optimize the layout of data on the disk. Ext4 is the recommended all-purpose all-platform filesystem.


 * JFS
 * IBM's high-performance journaling filesystem. JFS is a light, fast and reliable B+tree-based filesystem with good performance in various conditions.


 * ReiserFS
 * A B+tree-based journaled filesystem that has good overall performance, especially when dealing with many tiny files at the cost of more CPU cycles. ReiserFS appears to be less maintained than other filesystems.


 * XFS
 * A filesystem with metadata journaling which comes with a robust feature-set and is optimized for scalability. XFS seems to be less forgiving to various hardware problems.


 * vfat
 * Also known as FAT32, is supported by Linux but does not support any permission settings. It is mostly used for interoperability with other operating systems (mainly Microsoft Windows) but is also a necessity for some system firmware (like UEFI).

When using ext2, ext3 or ext4 on a small partition (less than 8GB), then the file system must be created with the proper options to reserve enough inodes. The application uses the "bytes-per-inode" setting to calculate how many inodes a file system should have. On smaller partitions, it is advised to increase the calculated number of inodes.

On ext2, this can be done using the following command:

On ext3 and ext4, add the  option to enable journaling:

This will generally quadruple the number of inodes for a given file system as its "bytes-per-inode" reduces from one every 16kB to one every 4kB. This can be tuned even further by providing the ratio:

Applying a filesystem to a partition
To create a filesystem on a partition or volume, there are tools available for each possible filesystem:

For instance, to have the root partition  in ext4 as used in the example partition structure, the following commands would be used:

Now create the filesystems on the newly created partitions (or logical volumes).

Activating the swap partition
is the command that is used to initialize swap partitions:

To activate the swap partition, use :

Create and activate the swap with the commands mentioned above.

Mounting
Now that the partitions are initialized and are housing a filesystem, it is time to mount those partitions. Use the command, but don't forget to create the necessary mount directories for every partition created. As an example we mount the root partition:

Later in the instructions the proc filesystem (a virtual interface with the kernel) as well as other kernel psuedo-filesystems will be mounted. But first we install the Gentoo installation files.