Data is stored on disks that are divided into partitions. A partition can exist on a portion of a disk, on an entire disk, or it may span multiple disks. Each partition is accessed and managed independent of other partitions and may contain a file system or swap space. Partitioning information is stored at special disk locations that the system references at boot time. Linux offers a number of tools and a toolset for partition management. Partitions created with any of these can co-exist on a single disk.
Logical Volume Manager is a toolset that sets up an abstraction layer between the operating system and the disk hardware. It uses virtual objects for storage pooling and allocation, and offers a whole slew of management commands, each of which is developed to carry out a certain action.
Linux supports a variety of file system types with a range of pros and cons over one another. A file system is a logical container employed for file storage. It must be connected to the root of the directory hierarchy in order to be accessible. This may be accomplished automatically at system boot or manually when required. A file system can be mounted or unmounted using its unique identifier, label, or device file. There are several commands for file system creation and administration; some of them are file system type specific while others are not. Tools are available to monitor file system space utilization, examine and fix potential corruption in file system structures, debug a file system, and dump its structural information to a file.
A file system’s byte-for-byte dump can be created for duplication or backup purposes. Similarly, the partition information stored at the beginning of a boot disk can be backed up and used to overwrite the original information in case of its corruption.
Quotas may be applied on users and user groups to limit their file system space use. There are several tools available for quota management and handling.
Swapping is a common feature used on Linux systems. In fact, a Linux installation cannot proceed without first defining a swap space. Swapping provides a mechanism to move out and in pages of data between the physical memory and the swap. A swap space acts as an extension to the physical memory.
MBR, GPT, and Partitions
A disk in Linux can be carved up into several partitions. This partition information is stored on the disk in a small region, which is read by Linux at boot time. This region is referred to as the Master Boot Record (MBR) on the BIOS-based systems, and GUID Partition Table (GPT) on the UEFI-based systems. At system boot, the BIOS/UEFI scans all storage devices, detects the presence of MBR/GPT areas, identifies the boot disks, loads the bootloader program in memory, executes the boot code to read the partition table and identify the /boot partition, and continues with the boot process by loading the kernel in memory and passing control over to it. Though MBR and GPT are designed for different PC firmware types, their job is the same: to store disk partition information and the boot code.
Master Boot Record (MBR)
The MBR is resident on the first sector of the boot disk. It is a tiny 512-byte area of which 446 bytes are occupied by the bootloader program, 64 bytes by the partition table, and the remaining 2 bytes by the boot signature. MBR has limitations that led to the design, development, and use of GPT.
MBR allows the creation of three types of partition—primary, extended, and logical—on a single disk. Of these, only primary and logical can be used for data storage; the extended is a mere enclosure for holding the logical partitions and it is not meant for data storage. MBR supports the existence of up to 4 primary partitions numbered 1 through 4 at a time. In case additional partitions are required, one of the primary partitions must be deleted and replaced with an extended partition to be able to add logical partitions (up to 12) within that extended partition. Numbering for logical partitions begin at 5. MBR supports a maximum of 15 usable partitions (3 primary and 12 logical) on a single disk.
The other limitation of MBR is its lack of accessing disk space beyond 2TB. This is due to its 32-bit nature and the disk sector size of 512 byte that it uses. The MBR is non-redundant; the record it contains is not replicated, resulting in an unbootable system in the event of its corruption.
GUID Partition Table (GPT)
With the increasing use of disks larger than 2TB, a new 64-bit partitioning standard called Globally Unique IDentifiers (GUID) Partition Table (GPT) was developed and integrated in to the UEFI firmware. This new standard introduced plenty of enhancements, including the ability to construct up to 128 primary partitions (no concept of extended or logical partitions), utilize disks larger than 2TB, use 4KB sector size, and store a copy of the partition information before the end of the disk for redundancy. Moreover, this standard allows a BIOS-based system to boot from a GPT disk using the bootloader program stored in a protective MBR at the first disk sector. In addition, the UEFI firmware also supports the secure boot feature, which only allows signed binaries to boot.
Disk Partitions
The space on a hard disk is used to carve up one or more partitions. Care should be taken when adding a new partition to elude data corruption with the overlapping of an extant partition and wasting storage by leaving unused space between adjacent partitions. On our centos 73 and ubuntu14 systems, the disk we allocated at the time of installation is recognized as sda, stands for SAS/SCSI/SATA disk a with the first partition identified as sda1, second partition sda2, third partition sda3, and so on. Any subsequent disks added to the system will be recognized as sdb, sdc, sdd, and so on, and will use 1, 2, 3, etc. for partition numbering.
Linux provides the lsblk command to list disk and partitioning information. Here is the output of this command from centos 73:

The output indicates the presence of one disk sda on centos 73. This disk is 8GB in size and it contains two partitions: sda1 and sda2. The first partition holds /boot and the second one is an LVM volume with root and swap logical volumes residing in it. Both sda1 and sda2 partitions occupy the entire disk capacity. The sr0 represents the ISO image mounted as an optical medium.
We can also use additional tools such as fdisk and parted with the -l option to expose this information in more detail. Here is what fdisk displays on centos 73:
[root@centos73 ~]isk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ddf8a
Disk /dev/mapper/cl-root: 6652 MB, 6652166144 bytes, 12992512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cl-swap: 859 MB, 859832320 bytes, 1679360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

The output indicates the size of sda in MBs, bytes, and sectors, followed by the type of label the disk has along with other information. It shows sda1 as the bootable partition marked with an asterisk (*). The output also indicates the starting and ending sector number, size in 1KB blocks, and a type for each partition. Types 83 and 8e identify the two partitions as a regular Linux partition and an LVM partition, respectively. We can see a list of supported partition types using the l option within fdisk. The last two blocks of information are specific to the LVM logical volumes that exist within the sda2 partition.
On older systems, the boot partition must reside within the first 1,024 cylinders of the boot disk, otherwise it wouldn’t allow Linux to boot. On newer firmware, this limit does not apply.