A storage device with many physically spinning magnetic disks that store information. Connected to PCIe via SATA or SAS controllers

Platter

A platter is like a floor of storage. A disk drive is made up of many floors of platters. The spin of the platter is faster than the movement of the Read/Write Heads

Surface

Each platter has two surfaces: the top and bottom face. Both faces can be used for data storage. Each surface has a Read/Write Head

Track

Each Surface has a track, which is a path that the Read/Write Head can follow. It is like a ridge in a record.

Sector

Tracks are subdivided into sectors. Sectors are the smallest physical unit of storage.

Block

Disk Block

A conceptual Sector set of natural cardinality; the smallest logical unit of Storage.

Disk Block Address

In the past, an ordered triple of (cylinder, head, block) was used for disk block addressing. Nowadays, we have smart disk controllers that do the scheduling for us, as well as Zoned Bit Recording This means that we don’t use that triple anymore, because we don’t need to know about the geometry of the disk, especially because it’s variable. This basically makes it uncalculatable from the OS perspective. We just do logical block addressing nowadays, addressing it as an Array of disk blocks

Link to original

Cylinder

A conceptual grouping of Tracks that are all the same distance from the center of the Platter. There are as many cylinders as there are tracks.

Read/Write Head

The instrument that accesses the data on a platter. The one circles in the figure is the one that reads the top Surface. Each surface has a head. All heads general move in unison, but whether they do or not depends on the implementation.

Capacity

  • where bytes per sector
  • where sectors per track
  • where tracks per surface
  • where surfaces per platter (1 or 2)
  • where platters

Mnemonic: “BST? No problem”

ZBR Capacity

For ZBR, the term from the above equation, which equals # sectors, becomes:

This summation just says that we calculate for each zone, and then add them up to get the overall # sectors

Transfer Metrics

  • Time for one revolution (read one track) =
  • Time to read a sector
  • Average Rotational Latency =
  • Amount of data read in one revolution =
  • Transfer rate =
  • Time to find a random block = Seek Time + Average Rotational Latency + Time to read a sector

Zoned Bit Recording

Maintain somewhat constant bit density per sector. The further out a Track is, the greater its circumference. Outer zones have more Sectors than inner zones.

Disk Scheduling

  • Do all requests in the same Cylinder before moving on
  • Want to move between close cylinders
  • Want to do requests that are closest to the Write Head in the rotational time domain
  • Disk scheduling used to be performed by the OS, now it is performed by the disk controller. All the OS does is enter the requests into a queue, which can be 31 length

FCFS

“First Come First Serve”

Do the requests in the order that they arrive in.

SSTF

“Shortest Seek Time First”

Perform the request that is closest to the head, i.e. has the shortest seek time.

LOOK

Go in the same direction until no more requests in that direction.

Works like a real elevator.

SCAN

LOOK, but always go to the top and bottom floors every trip.

So-called “elevator algorithm”, but LOOK is more deserving of the title

C-SCAN

SCAN, but you only service on the way up, then jump all the way to the bottom.

C-LOOK

LOOK, but you only service requests in one direction, then jump all the way over in the other direction.

Link to original