All hard disks are constructed similarly. A central spindle supports one or more platters, which are thin, flat, circular objects made of metal or glass, substances chosen because they are rigid and do not expand and contract much as the temperature changes. Each platter has two surfaces, and each surface is coated with a magnetic medium. Most drives have multiple platters mounted concentrically on the spindle, like layers of a cake. The central spindle rotates at several thousand revolutions per minute, rotating the platters in tandem with it.
A small gap separates each platter from its neighbors, which allows a read-write head mounted on an actuator arm to fit between the platters. Each surface has its own read-write head, and those heads "float" on the cushion of air caused by the Bernoulli Effect that results from the rapid rotation of the platter. When a disk is rotating, the heads fly above the surfaces at a distance of only millionths of an inch. The head actuator assembly resembles a comb with its teeth inserted between the platters, and moves all of the heads in tandem radially toward or away from the center of rotation.
The small separation between the heads and surfaces means that a tiny dust particle could cause a catastrophic head crash, so these components are sealed within a head/disk assembly, or HDA. The sealed HDA contains air filters that allow air pressure to equalize between the HDA and the surrounding environment. Opening an HDA other than in a factory clean room is a certain way to destroy a disk drive.
Each surface is divided into concentric tracks that can be read from or written to by that surface's head. Each surface on a modern disk drive contains thousands of tracks. Each track is divided into many sectors, each of which stores 512 bytes of data. Old drives used the same number of sectors on every track, typically 17 or 26. Modern drives take advantage of the fact that tracks near the outer edge of the platter are longer than those near the center by storing more sectors on the outer tracks.
All tracks that are immediately above and below each other form a cylinder. If a drive has eight surfaces, each with 16,383 tracks, that drive contains 16,383 cylinders, with eight tracks per cylinder. The concept of cylinders is important because it determines how data is written to and read from the drive. When a drive writes a file that is larger than one track, it fills the current track and then writes the remainder of the file sequentially to the next available track within that cylinder. Only if the capacity of the current cylinder is exceeded does the drive move the heads to the next available cylinder. The drive writes data in this fashion because selecting a different read-write head is an electronic operation that occurs quickly, while moving the heads to a different track is a mechanical operation that requires significantly more time.
The heads write data to the surfaces in exactly the same way that data is written to a floppy disk or magnetic tape. Each track contains myriad discrete positions, called magnetic domains, that can each store a single bit of information as a binary 0 or 1. When writing, the head exercises a magnetic flux to alter the state of a domain to a 0 or 1, as appropriate. When reading, the head simply determines the existing state of a domain.
Because they reside in such close proximity, it is nontrivial for a head to locate the correct track and sector. Early drives used a stepper-motor assembly similar to that still used on floppy drives. A stepper motor simply moves the heads to where the track is supposed to be, without reference to its actual location. On stepper-motor drives, thermal expansion and contraction gradually cause the expected locations of tracks to drift out of alignment with their actual physical location, which required frequent low-level formatting of the drives to return them to proper alignment. Stepper-motor hard drives were last produced in about 1990.
Later hard disk drives used a voice-coil actuator mechanism in conjunction with a dedicated servo surface. For example, a drive that had eight surfaces used only seven of these to store data, and dedicated the eighth surface to servo information that helped locate the correct track. A voice-coil drive does not seek to an absolute track position. Instead, the head actuator assembly seeks to the approximate position where it expects the track to be located. The servo head then fine-tunes the positioning by locating the servo track that corresponds to the desired track. Because all tracks in a cylinder must necessarily be aligned, locating the correct servo track automatically also locates the correct data cylinder. Early voice-coil drives were effective and not subject to thermal drift, but designers hated wasting an entire surface and head on servo data. All current drives use embedded servo information, which means that no surface is dedicated to servo information. Instead, servo data is interspersed with user data on normal data tracks, which allows every surface to be used to store data.
The hard disk drive connects to the PC via a controller interface. Early hard disk drives used a separate controller card that installed in an expansion slot and connected to the drive via ribbon cables. All modern disk drives, ATA and SCSI, have the controller embedded in the drive itself. A ribbon cable connects the drive to a connector located on the system board or to an expansion card that provides a connection point. Hard disk interface cards are not actually disk controllers, and are properly referred to as host adapters. They do not contain disk controller circuitry, but simply provide a connection point between the system bus and the disk controller embedded in the drive.
The disk controller serves as an intermediary between the system and the hard drive. When the system needs to read data from or write data to the drive, it issues commands to the controller, which translates those commands into a form understandable by the drive. The drive then supplies data to the controller during read operations, and accepts data from the controller during writes.