Design Issues for a Shingled Write Disk System

Appeared in 26th IEEE Symposium on Massive Storage Systems and Technologies: Research Track (MSST 2010).


If the data density of magnetic disks is to continue its current 30-50% annual growth, new recording techniques are required. Among the actively considered options, shingled writing is currently the most attractive one because it is the easiest to implement at the device level. Shingled write recording trades the inconvenience of the inability to update in-place for a much higher data density by a using a different write technique that overlaps the currently written track with the previous track. Random reads are still possible on such devices, but writes must be done largely sequentially. In this paper, we discuss possible changes to disk-based data structures that the adoption of shingled writing will require. We first explore disk structures that are optimized for large sequential writes with little or no sequential writing, even of metadata structures, while providing acceptable read performance. We also examine the usefulness of non-volatile RAM and the benefits of object-based interfaces in the context of shingled disks. Finally, through the analysis of recent device traces, we demonstrate the surprising stability of written device blocks, with general purpose workloads showing that more than 93% of device blocks remain unchanged over a day, and that for more specialized workloads less than 0.5% of a shingled-write disk’s capacity would be needed to hold randomly updated blocks.

Publication date:
May 2010

Ahmed Amer
Darrell D. E. Long
Ethan L. Miller
Jehan-François Pâris
Thomas Schwarz

Shingled Disk

Available for download:

Full text:
Download as PDF

Bibtex entry

  author       = {Ahmed Amer and Darrell D. E. Long and Ethan L. Miller and
Jehan-François Pâris and Thomas Schwarz},
  title        = {Design Issues for a Shingled Write Disk System},
  booktitle = {26th IEEE Symposium on Massive Storage Systems and Technologies:
Research Track (MSST 2010)},
  month        = may,
  year         = {2010},
Last modified 10 May 2010