/ˈpɑːr tɪʃən ˈteɪbəl/
noun — "map of disk partitions for storage management."
Partition Table is a data structure on a storage device that defines the organization and layout of disk partitions, specifying where each partition begins and ends, its type, and other attributes. It serves as the roadmap for the operating system and firmware to locate and access volumes, enabling multiple filesystems or operating systems to coexist on a single physical disk.
Technically, partition tables exist in different formats depending on the disk partitioning scheme. In legacy systems, the MBR partition table uses 64 bytes to define up to four primary partitions, each with starting and ending sectors, partition type, and bootable flags. Modern systems often employ the GUID Partition Table (GPT), which supports much larger disks, a default of 128 partitions, globally unique identifiers (GUIDs), and CRC32 checksums for improved reliability.
The structure of a partition table typically includes:
- Partition Entries: Define the start and end sectors, type, and attributes for each partition.
- Boot Flags: Indicate which partition is active or bootable.
- Checksums (GPT only): Ensure the integrity of partition metadata and headers.
- Backup Table (GPT only): Located at the end of the disk to enable recovery in case of corruption.
In operational workflow, the system firmware or operating system reads the partition table during startup or disk mounting. The firmware uses it to locate bootable partitions and transfer control to the volume boot record. The operating system uses the table to enumerate available partitions, mount filesystems, and allocate storage for files and applications. Without an accurate partition table, the disk appears uninitialized or inaccessible.
A practical pseudo-code example for reading partition table entries might be:
disk = open("disk.img")
partition_table = read_bytes(disk, offset=0x1BE, length=64) # MBR entry start
for entry in partition_table:
start_sector = parse_start(entry)
size = parse_size(entry)
type = parse_type(entry)
print("Partition: start=", start_sector, "size=", size, "type=", type)
Conceptually, a partition table functions like a directory index for a multi-story building: it tells the system which rooms (partitions) exist, their locations, and how to navigate them efficiently. It enables structured access to storage while supporting multiple operating systems and data management schemes on the same physical device.