Cylinder-head-sector
Cylinder-head-sector (CHS) is an early method for giving addresses to each physical block of data on a hard disk drive. It is a 3D-coordinate system made out of a vertical coordinate "head", a horizontal (or radial) coordinate "cylinder", and an angular coordinate "sector". Head selects a circular surface: a platter in the disk (and one of its two sides). Cylinder is a cylindrical intersection through the stack of platters in a disk, centered around the disk's spindle. Combined, cylinder and head intersect to a circular line, or more precisely: a circular strip of  physical data blocks called "track". Sector finally selects which data block in this track is to be addressed, and can be viewed as a sort of angular component – a slice of the tracks, or in this coordinate system, the part of a particular track within a particular slice. CHS addresses were exposed, instead of simple linear addresses (going from "0" to the "total block count on disk - 1"), because early hard drives didn't come with an embedded disk controller, that would hide the physical layout. A separate "generic" controller card was used, so that the operating system had to  know the exact physical "geometry" of the "specific" drive attached to the controller, to correctly address data blocks. In tradition， (512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5 MB， but a physical sector sizes of 128, 256, 512 and 1024，4096 bytes, 512 bytes per physical sector is dominant，Newer 4096 bytes per physical sector. As the geometry became more complicated (for example, with the introduction of zone bit recording) and drive sizes grew over time, the CHS addressing method became restrictive. Since the late 1980s, hard drives began shipping with an embedded disk controller that had good knowledge of the  physical geometry; they would however report a false geometry to the computer, e.g., a larger number of heads than actually present, to gain more addressable space. These logical CHS values would be translated by the controller, thus CHS addressing no longer corresponded to any physical attributes of the drive. By the mid 1990s, hard drive interfaces replaced the CHS scheme with logical block addressing (LBA), but many tools for manipulating the master boot record (MBR) partition table still aligned partitions to cylinder boundaries; thus, artifacts of CHS addressing were still seen in partitioning software by the late 2000s. In the  early 2010s, the disk size limitations imposed by MBR became problematic and the GUID Partition Table (GPT) was designed as a replacement; modern computers using UEFI firmware without MBR support no longer use any notions from CHS addressing. Definitions. CHS addressing is the process of identifying individual sectors (aka. physical block of data) on a disk by their position in a track, where the track is determined by the head and cylinder numbers. The terms are explained bottom up, for disk addressing the "sector" is the smallest unit. Disk controllers can introduce address translations to map logical to physical positions , e.g., zone bit recording stores fewer sectors in shorter (inner) tracks, physical disk formats are not necessarily cylindrical, and sector numbers in a track can be skewed. Sectors. Floppy disks and controllers use physical sector sizes of 128, 256, 512 and 1024 bytes (e.g., PC/AX), whereby formats with 512 bytes per physical sector became dominant in the 1980s. The most common physical sector size for hard disks today is 512 bytes, but there have been hard disks with 520 bytes per sector as well for non-IBM compatible machines. In 2005 some Seagate custom hard disks used sector sizes  of 1024 bytes per sector. Advanced Format hard disks use 4096 bytes per physical sector (4Kn) since 2010, but will also be able to emulate 512 byte sectors (512e) for a transitional period. Magneto-optical drives use sector sizes of 512 and 1024 bytes on 5.25-inch drives and 512 and 2048 bytes on 3.5-inch drives. In CHS addressing the "sector" numbers always start at 1, there is no "sector 0", which can lead to confusion since logical sector addressing schemes typically start counting with 0, e.g., logical block addressing (LBA), or "relative sector addressing" used in DOS. For  physical disk geometries the maximal sector number is determined by the "low level format" of the disk. However, for disk access with the BIOS of IBM-PC compatible machines, the sector number was encoded in six bits, resulting in a maximal number of 111111 (63) sectors per track. This maximum is still in use for virtual CHS geometries. Tracks. The tracks are the thin concentric circular strips of sectors. At least one head is required to read a single track. With respect to disk geometries the terms "track" and "cylinder" are closely related. For a single or double sided floppy  disk "track" is the common term; and for more than two heads "cylinder" is the common term. Strictly speaking a "track" is a given codice_1 combination consisting ofcodice_2 sectors, while a "cylinder" consists ofcodice_3 sectors. Cylinders. A cylinder is a division of data in a disk drive, as used in the CHS addressing mode of a Fixed Block Architecture disk or the cylinder–head–record (CCHHR) addressing mode of a CKD disk. The concept is concentric, hollow, cylindrical slices through the physical disks (platters), collecting the respective circular tracks aligned through the stack of platters. The number of cylinders of  a disk drive exactly equals the number of tracks on a single surface in the drive. It comprises the same track number on each platter, spanning all such tracks across each platter surface that is able to store data (without regard to whether or not the track is "bad"). Cylinders are vertically formed by tracks. In other words, track 12 on platter 0 plus track 12 on platter 1 etc. is cylinder 12. Other forms of Direct Access Storage Device (DASD), such as drum memory devices or the IBM 2321 Data Cell, might give blocks addresses that include a cylinder  address, although the cylinder address doesn't select a (geometric) cylindrical slice of the device. Heads. A device called a head reads and writes data in a hard drive by manipulating the magnetic medium that composes the surface of an associated disk platter. Naturally, a platter has 2 sides and thus 2 surfaces on which data can be manipulated; usually there are 2 heads per platter, one per side. (Sometimes the term "side" is substituted for "head," since platters might be separated from their head assemblies, as with the removable media of a "floppy" drive.) The codice_4 addressing supported in  IBM-PC compatible BIOSes code used eight bits for - theoretically up to 256 heads counted as head 0 up to 255 (codice_5). However, a bug in all versions of Microsoft DOS/IBM PC DOS up to and including 7.10 will cause these operating systems to crash on boot when encountering volumes with 256 heads. Therefore, all compatible BIOSes will use mappings with up to 255 heads (codice_6) only, including in virtual codice_7 geometries. This historical oddity can affect the maximum disk size in old BIOS INT 13h code as well as old PC DOS or similar operating systems: codice_8 MB , but actually codice_9 MB yields what is known as 8 GB limit. In this context relevant definition of 8 GB = 8192 MB is another incorrect limit, because it would require CHS codice_10 with 64 sectors per track. "Tracks" and "cylinders" are counted from 0, i.e., track 0 is the first (outer-most) track on floppy or other cylindrical disks. Old BIOS code supported ten bits in CHS addressing with up to 1024 cylinders (codice_11). Adding six bits for sectors and eight bits for heads results in the 24 bits supported by BIOS interrupt 13h. Subtracting the disallowed sector number  0 in codice_12 tracks corresponds to 128 MB for a sector size of 512 bytes (codice_13); and codice_14 confirms the (roughly) 8 GB limit. CHS addressing starts at codice_15 with a maximal value codice_16 for codice_17 bits, or codice_18 for 24 bits limited to 255 heads. CHS values used to specify the geometry of a disk have to count cylinder 0 and head 0 resulting in a maximum (codice_19 or) codice_20 for 24 bits with (256 or) 255 heads. In CHS tuples specifying a geometry S actually means sectors per track, and where the (virtual) geometry still matches the capacity  the disk contains codice_21 sectors. As larger hard disks have come into use, a cylinder has become also a logical disk structure, standardised at 16 065 sectors (codice_22). CHS addressing with 28 bits (EIDE and ATA-2) permits eight bits for sectors still starting at 1, i.e., sectors 1...255, four bits for heads 0...15, and sixteen bits for cylinders 0...65535. This results in a roughly 128 GB limit; actually codice_23 sectors corresponding to 130560 MB for a sector size of 512 bytes. The codice_24 bits in the ATA-2 specification are also covered by Ralf Brown's Interrupt List , and an old working draft of this now expired standard was published. With an old BIOS limit of 1024 cylinders and the ATA limit of 16 heads the combined effect was codice_25 sectors, i.e., a 504 MB limit for sector size 512. BIOS translation schemes known as ECHS and "revised ECHS" mitigated this limitation by using 128 or 240 instead of 16 heads, simultaneously reducing the numbers of cylinders and sectors to fit into codice_26 (ECHS limit: 4032 MB) or codice_27 (revised ECHS limit: 7560 MB) for the given total number of sectors on a disk. Blocks and clusters. The  Unix communities employ the term "block" to refer to a sector or group of sectors. For example, the Linux fdisk utility, before version 2.25, displayed partition sizes using 1024-byte "blocks". "Clusters" are allocation units for data on various file systems (FAT, NTFS, etc.), where "data" mainly consists of files. "Clusters" are not directly affected by the physical or virtual geometry of the disk, i.e., a cluster can begin at a sector near the end of a given codice_1 track, and end in a sector on the physically or logically next codice_1 track. CHS to LBA mapping. In 2002 the  ATA-6 specification introduced an optional 48 bits Logical Block Addressing and declared CHS addressing as obsolete, but still allowed to implement the ATA-5 translations. Unsurprisingly the CHS to LBA translation formula given below also matches the last ATA-5 CHS translation. In the ATA-5 specification CHS support was mandatory for up to 16 514 064 sectors and optional for larger disks. The ATA-5 limit corresponds to CHS codice_30 or equivalent disk capacities (16514064 = 16383×16×63 = 1032×254×63), and requires 24 = 14+4+6 bits (16383 + 1 = 2). CHS tuples can be mapped onto LBA addresses using  the following formula: where "A" is the LBA address, "N" is the number of heads on the disk, "N" is the maximum number of sectors per track, and ("c", "h", "s") is the CHS address. A "Logical Sector Number" formula in the ECMA-107 and ISO/IEC 9293:1994 (superseding ISO 9293:1987) standards for FAT file systems matches exactly the LBA formula given above: "Logical Block Address" and "Logical Sector Number" (LSN) are synonyms. The formula does not use the number of cylinders, but requires the number of heads and the number of sectors per track in the disk geometry, because the  same CHS tuple addresses different logical sector numbers depending on the geometry. Examples: To help visualize the sequencing of sectors into a linear LBA model, note that: History. Cylinder Head Record format has been used by Count Key Data (CKD) hard disks on IBM mainframes since at least the 1960s. This is largely comparable to the Cylinder Head Sector format used by PCs, save that the sector size was not fixed but could vary from track to track based on the needs of each application. In contemporary use, the disk geometry presented to the mainframe is emulated by the storage  firmware, and no longer has any relation to physical disk geometry. Earlier hard drives used in the PC, such as MFM and RLL drives, divided each cylinder into an equal number of sectors, so the CHS values matched the physical properties of the drive. A drive with a CHS tuple of codice_43 would have 500 tracks per side on each platter, two platters (4 heads), and 32 sectors per track, with a total of 32 768 000 bytes (31.25 MiB). ATA/IDE drives were much more efficient at storing data and have replaced the now "archaic" MFM and RLL drives . They use zone bit recording (ZBR), where the number of sectors dividing each track varies with the location of groups of tracks on the surface of the platter. Tracks nearer to the edge of the platter contain more blocks of data than tracks close to the spindle, because there is more physical space within a given track near the edge of the platter. Thus, the CHS addressing scheme cannot correspond directly with the physical geometry of such drives, due to the varying number of sectors per track for different regions on a platter. Because of this, many drives still  have a surplus of sectors (less than 1 cylinder in size) at the end of the drive, since the total number of sectors rarely, if ever, ends on a cylinder boundary. An ATA/IDE drive can be set in the system BIOS with any configuration of cylinders, heads and sectors that do not exceed the capacity of the drive (or the BIOS), since the drive will convert any given CHS value into an actual address for its specific hardware configuration. This however can cause compatibility problems. For operating systems such as Microsoft DOS or older version of Windows, each partition  must start and end at a cylinder boundary. Only some of the most modern operating systems (Windows XP included) may disregard this rule, but doing so can still cause some compatibility issues, especially if the user wants to perform dual booting on the same drive. Microsoft does not follow this rule with internal disk partition tools since Windows Vista.